Search  
Friday, May 25, 2012 ..:: Forum ::.. Register  Login
 Forum Minimize
Pentru a putea posta mesaje trebuie să vă înregistraţi.
Notă: Mesajele cu conţinut jignitor sau ilegal (inclusiv cereri de soft piratat) nu sunt acceptate şi vor fi şterse imediat .

Pentru a primi raspunsuri rapide si corecte, scrieti in mesaj ce intentionati sa faceti, ce mesaj de eroare primiti, in ce context si in urma caror actiuni. De asemenea, mentionati versiunea de FoxPro in care lucrati!
Dacă nu specificați versiunea, se consideră VFP 9.0 SP2.

SearchForum Home
  Visual FoxPro  Controale ActiveX  Inregistrare OC...
 Inregistrare OCX in Vista
 
 11/1/2007 10:38:15 AM
User is offlineLucian Ilea
110 posts
5th


Inregistrare OCX in Vista
 (Germany)
Buna ziua,

Am incercat un mic programel care face grafice folosind mschrt20.ocx in Windows Vista. Pe net am gasit ca acest OCX este testat in Windows Vista, dar nu este livrat impreuna cu acest sistem de operare (http://msdn2.microsoft.com/en-us/vbrun/ms788708.aspx). Am incercat sa il inregistrez manual cu regsvr32 si nu merge. Eroarea pe care o da este:

Error accessing the OLE Registry. Error 0x8002801C.

De asemenea am cautat si am gasit pe net si am gasit o explicatie la eroarea de mai sus. Este vorba despre permisiuni din cate am inteles eu. Link-ul este urmatorul:

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=851283&SiteID=1

Intrebarile mele ar fi:
1. Ce este acel UAC despre care se vorbeste in thread-ul de mai sus?
2. Cum pot fac inregistrarea OCX-ului din programul meu? OCX-ul trebuie copiat in System32 sau poate fi stocat in orice folder, iar la inregistrare se precizeaza calea catre fisier?

Va multumesc mult.

Cu stima,
Lucian Ilea
 11/1/2007 10:42:40 AM
User is offlineanonymous
0 posts


Re: Inregistrare OCX in Vista
 (N/A)
    UAC este User Account Control. Si se poate deactiva daca te duci in Control Panel la User Account. Trebuie sa dai restart la Windows dupa ce debifezi obtiunea.
 11/1/2007 10:58:20 AM
User is offlineLucian Ilea
110 posts
5th


Re: Inregistrare OCX in Vista
 (Germany)
De status-ul UAC-ului depinde inregistrarea unui OCX? Cu alte cuvinte daca UAC este activat nu pot sa il inregistrez, iar daca il dezactivez va fi ok?

Pot dezactiva UAC-ul din program? Ar fi destul de neplacut pentru utilizator sa isi instaleze programul si acesta sa ii spuna ca trebuie sa faca singur una-alta...:)

Multumesc mult si scuze...
 11/1/2007 11:06:41 AM
User is offlineanonymous
0 posts


Re: Inregistrare OCX in Vista
 (N/A)
    Imi pare rau dar nu am studiat problema asta mai in profunzime. Stiu doar ca daca nu dezactivez obtiunea aia de fiecare data cand rulez cate un program nebunu de Vista ma intreaba daca sunt sigur ca vreau sa-l rulez.
 11/1/2007 11:55:30 AM
User is offlineedyshor
1450 posts
1st




Re: Inregistrare OCX in Vista
 (N/A)
Un kit de instalare obtinut cu InnoSetup se eleveaza automat (ii cere userului permisiunea de admin) la rulare si tot ce executa din el executa elevat (cu drept de administrator). Cum intr-un setup poti inregistra un anume control cred ca ar putea sa-ti rezolve problema. Cu ce-ti faci kit-ul de instalare pentru aplicatia ta ?!

Daca-l instalezi, cauta in help-ul lui "regserver". Iti explica acolo mult mai bine decat as putea face eu aici. Apropo, Vista e 64bit?  Dar ocx-ul ?
 11/1/2007 12:22:00 PM
User is offlineTolomacu
27 posts


Re: Inregistrare OCX in Vista
 (Romania)
 Lucian Ilea wrote
Pot dezactiva UAC-ul din program? Ar fi destul de neplacut pentru utilizator sa isi instaleze programul si acesta sa ii spuna ca trebuie sa faca singur una-alta...:)


Sa dezactivezi tu UAC din program mi se pare o idee... deloc buna. In sensul ca primul lucru pe care l-as face cu un program care imi modifica setarile de sistem, in special cele legate de securitate, ar fi sa-l sterg. Valabil inclusiv pentru schimbarea rezolutiei si activarea/dezactivarea CapsLock, NumLock, etc. Da, am vazut program care activa CapsLock atunci cand il porneam. L-am pornit o singura data.
Astea fiind spuse, citeste aici. E primul articol dintr-o serie de 5, deocamdata, despre VFP sub Vista.

 
Whats in the Next Few Blog Entries?
  • A few things about the structure of a Visual FoxPro EXE or DLL.
  • How you can swap out the manifest in a Visual FoxPro EXE or DLL to facilitate Elevated Permissions
  • How you can swap out the manifest in a Visual FoxPro EXE or DLL to facilitate Reg-Free COM.
  • How to add or replace strings in the String Table resource of a Visual FoxPro EXE or DLL and why you would need or want to do that.
  • How to register VFP COM servers that require elevated permissions properly so that their OLEPublic classes can be instantiated from applications running under a Limited User Account (LUA).
  • How to instantiate a COM object that requires elevated permissions using the new COM Elevation Moniker, CoGetObject, and Sys(3096).



 11/1/2007 4:31:12 PM
User is offlineLucian Ilea
110 posts
5th


Re: Inregistrare OCX in Vista
 (Germany)
 edyshor wrote
Cu ce-ti faci kit-ul de instalare pentru aplicatia ta ?!Vista e 64bit?  Dar ocx-ul ?


Pana acum mi-am facut kit-urile de instalare cu NSIS. Nu am incercat niciodata Inno. Dar o sa il incerc zilele astea.

Testele pe care le-am facut au fost pe Vista 32bit Business Edition. Dar, evident, ar trebui sa mearga si pe 64 bit. Crezi ca as intampina mai multe probleme pe 64bit? OCX-ul este mschrt20.ocx. Cred ca este pe 32 bit.
 11/7/2007 4:06:17 PM
User is offlineLucian Ilea
110 posts
5th


Re: Inregistrare OCX in Vista
 (Germany)
Buna seara.

Incerc sa inregistrez mschrt20.ocx pentru a afisa grafice pe un form. Am reusit sa o fac creind setup-ul cu InnoSetup. Totul e ok, cu o exceptie. La pornirea aplicatiei verific daca pot instantia obiectul corespunzator ocx-ului. Codul este urmatorul:

SET CLASSLIB TO pcAppPath+'Libs\Charts\charttest.vcx' ADDITIVE
STORE .T. TO oVars.chk_lChrtOK
TRY
loTest=CREATEOBJECT('MSChart20Lib.MSChart.2')
CATCH
STORE .F. TO oVars.chk_lChrtOK
ENDTRY

RELEASE CLASSLIB pcAppPath+'Libs\Charts\charttest.vcx'

- codul asta imi returneaza in oVars.chr_lChrtOK - .F. chiar daca ocx-ul este inregistrat. Face chestia asta pe toate calculatoarele pe care incerc codul cu exceptia celui pe care lucrez eu. vartype(loTest) returneaza L.

Ce gresesc?

Multumesc...
 11/7/2007 5:57:08 PM
User is offlinedni
420 posts
2nd


Re: Inregistrare OCX in Vista
 (N/A)
Ai drepturi de administrator in Vista ? ...poti incerca sa creezi un short cut pe la cmd.exe si cu click dreapta sa alegi RUN AS ADMIN si sa incerci sa-l inregistrezi ocx-ul...de altfel asa scrie si la sfirsitul link-ului pe care l-ai dat ....
 11/7/2007 6:03:43 PM
User is offlinedni
420 posts
2nd


Re: Inregistrare OCX in Vista
 (N/A)
Scuze ...mi-e imi aparuse topicul fara nici un raspuns ....
 11/9/2007 12:34:53 AM
User is offlineedyshor
1450 posts
1st




Re: Inregistrare OCX in Vista
 (Romania)
 Lucian Ilea wrote
Ce gresesc?


Daca InnoSetup ti l-a inregistrat, dc mai faci testul ?! Posteaza scriptul iss pe forum sa ne-aruncam o privire pe el ..

 11/9/2007 7:44:00 AM
User is offlineLucian Ilea
110 posts
5th


Re: Inregistrare OCX in Vista
 (Germany)
Script-ul e in atasament. Spun ca mi-l inregistreaza corect pentru ca partea care are nevoie de OCX-ul ala functioneaza perfect. In cazul in care nu e inregistrat, ma intreaba unde gaseste OCX-ul si apoi imi da o eroare - "Class not registered".

Fac totusi verificarea pentru cazul in care, dintr-un motiv oarecare, InnoSetup nu inregistreaza OCX-ul. Poate pe versiuni mai vechi de Windows... Cine stie? Am vrut sa fie verificat pentru orice eventualitate.

Multumesc mult...
Tests.zip 
 11/9/2007 10:14:07 AM
User is offlineedyshor
1450 posts
1st




Re: Inregistrare OCX in Vista
 (N/A)
Incearca sa-i dai parametru "permisions" si flag-ul "32bit" - vezi help
De asemenea incearca sa-l pui in directorul aplicatiei si nu in "\libs"

Ai spus ca pe un calculator merge si pe altele nu ?! Tot vista 32bit ? Il rulezi in compatibility mode ?!
 11/9/2007 10:49:35 AM
User is offlineLucian Ilea
110 posts
5th


Re: Inregistrare OCX in Vista
 (Germany)
Da, intr-adevar, pe calculatorul pe care am facut programul merge. Pe altul nu... Am testat cu Vista 32bit, XP Home si XP Pro (toate pe acelasi calculator). Nu a mers pe nici unul dintre ele. Nu am incercat sa rulez in compatibility mode.

Crezi ca este o problema faptul ca nu e in radacina, ci in "\Libs"?

Multumesc pentru sfaturile de pana acum... Poate ii dam de capat...
 11/9/2007 11:42:09 AM
User is offlineedyshor
1450 posts
1st




Re: Inregistrare OCX in Vista
 (N/A)
N-am incercat pana acum sa inregistrez pe vista un OCX dar InnoSetup ar fi trebuit sa se ocupe de asta pentru ca porneste si lucreaza cu Elevated Privileges (cere permisiunea aia stresanta de Administrator).
Poate e vre-o setare speciala .. zici ca nici pe XP nu merge ? asta este dubios, fa-mi o favoare, trimite-mi si mie ocx-ul respectiv si o aplicatie simpla pentru teste. Am un vista la indemana si o sa incerc sa-i dau de cap.

 11/9/2007 1:27:51 PM
User is offlineLucian Ilea
110 posts
5th


Re: Inregistrare OCX in Vista
 (Germany)
Poate nu m-am exprimat eu corect. InnoSetup face inregistrarea OCX-ului corect pe toate sistemele de operare pe care am testat. Ce nu se intampla corect este verificarea pe care o fac eu la pornirea aplicatiei. O sa fac maine dimineata o aplicatie de test cu installer cu tot si il trimit.

Multumesc pentru ajutor...
 11/9/2007 2:35:01 PM
User is offlineedyshor
1450 posts
1st




Re: Inregistrare OCX in Vista
 (N/A)
Daca ocx-ul se instaleaza corect si aplicatia il poate folosi .. pentru ce iti mai trebuie testul din aplicatie ?!
 11/10/2007 10:27:39 AM
User is offlineLucian Ilea
110 posts
5th


Re: Inregistrare OCX in Vista
 (Romania)
Buna dimineata,

Am atasat o arhiva care contine urmatoarele:
- proiectul (contine clasa pe care am creat-o ca sa testez daca OCX-ul este inregistrat in Windows, form-ul care afiseaza graficul, prg-ul care il populeaza cu date si, in acelasi prg este si functia care testeaza daca OCX-ul este inregistrat sau nu)
- in Libs este si OCX-ul (mschrt20.ocx)
- ISS-ul (nu am pus in arhiva si DLL-urile gdiplus.dll,msvcr71.dllvfp9r.dll,vfp9renu.dll ca sa nu devina arhiva prea mare - dar e nevoie de ele pentru compilarea ISS-ului).

Am mai facut niste teste si am ajuns la urmatoarele concluzii:
- pe calculatorul meu - Windows XP Pro, Office 2003 instalate - InnoSetup inregistreaza corect OCX-ul. Functia care verifica acest lucru (cea despre care am spus mai sus) returneaza valori corecte (vartype(loTest)="O" si pbOCX_OK=.T.). Daca dezinstalez programul, folosind unistaller-ul creat de InnoSetup si rulez programul din alta locatie decat cea pe care tocmai a sters-o (fara sa restartez), valorile sunt de asemenea corecte (vartype(loTest)="L" si pbOCX_OK=.F.), dar, chiar daca nu ar mai trebui sa fie OCX-ul inregistrat, graficul se afiseaza fara probleme. Cu alte cuvinte indeparteaza din registri OCX-ul, dar...de fapt nu o face. Imediat dupa restart insa, valorile revin la vartype(loTest)="O" si pbOCX_OK=.T. si de asemenea graficul se afiseaza.

Am tras concluzia ca, poate, daca exista deja OCX-ul in registrii, InnoSetup il mai introduce o data, iar la uninstall sterge doar ce a introdus el, nu si ce exista deja referitor la OCX. Asta e cauza pentru care graficul se afiseaa in orice situatie.

- pe alt calculator (Win XP Home, Win XP Pro, Win Vista si fara Office), InnoSetup inregistreaza corect la instalare OCX-ul. Prin urmare graficul se afiseaza corect. Dar
functia care imi verifica daca e inregistrat sau nu, returneaza vartype(loTest)="L" si pbOCX_OK=.F.

Daca folosesc uninstaller-ul, valorile de mai sus (si inainte si dupa restart) raman neschimbate, insa graficul nu mai este afisat. In schimb se deschide o fereastra in care imi cere sa ii dau calea catre OCX si, dupa ce o dau, da eroare - "Class not registered". Prin urmare, am dedus ca uninstaller-ul creat de Inno sterge inregistrarea OCX-ului din registrii.

Cu alte cuvinte InnoSetup isi face datoria corect. Problema este de ce functia care verifica inregistrarea OCX-ului (indiferent de sistemul de operare - exceptand calculatorul meu) returneaza vartype(loTest)="L" si pbOCX_OK=.F.? Ce am gresit in acea functie?

Vreau sa folosesc aceasta functie pentru situatia in care Inno nu reuseste din cine-stie-ce motive sa inregistreze OCX-ul. As vrea in acea situatie sa pot sa avertizez user-ul despre problema si nu sa primeasca mesajele de la sistem - eroarea cu clasa neinregistrata.

Multumesc mult pentru ajutor si... pentru rabdare.

Cu stima,
Lucian Ilea

P.S. Solutia pentru afisarea graficului am gasit-o tot pe forum, prin urmare nu vreau sa imi asum meritele pentru ea. Multumesc celor care au postat aceasta solutie.
Test_chart.zip 
  Visual FoxPro  Controale ActiveX  Inregistrare OC...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement