Populaarne funktsioon Delphi on projekti juurutamine rakendusega käivitatav fail (exe). Kui teie projekti DLL või ActiveX-juhtelemendid pole kasutaja masinates registreeritud, kuvatakse vastusena exe-faili käitamisele teade “EOleSysError”. Selle vältimiseks kasutage käsureatööriista regsvr32.exe.
RegSvr32.exe käsk
Kasutades käsitsi regsvr32.exe (Windows. Start - Run) registreerib ja registreerib süsteemis iseregistreeritavad DLL ja ActiveX-i juhtelemendid. Regsvr32.exe juhendab süsteemi proovima komponenti laadida ja selle funktsiooni DLLSelfRegister kutsuma. Kui see katse õnnestub, kuvab Regsvr32.exe dialoogi, mis näitab edu.
RegSvr32.exe-l on järgmised käsuridade valikud:
Regsvr32 [/ u] [/ s] [/ n] [/ i [: cmdline]] dllname. / s - vaikne; Kuva sõnumikaste pole. / u - serveri registreerimise tühistamine. / i - Call DllInstall, edastades sellele valikulise [cmdline]; kasutamisel koos / u kutsub dll desinstallida. / n - ärge helistage DllRegisterServerile; seda suvandit tuleb kasutada koos / i-ga
Helistama RegSvr32.exe Delphi koodi piires
Delphi koodis olevale tööriistale regsvr32 helistamiseks kasutage faili käivitamiseks funktsiooni „RegisterOCX” ja oodake täitmise lõppu.
Nii võiks välja näha protseduur „RegisterOCX”:
protseduur RegisterOCX; tüüp TRegFunc = funktsiooni: HResult; stdcall; var ARegFunc: TRegFunc; aKäepide: käepide; ocxPath: nöör; alustadaproovida ocxPath: = ExtractFilePath (rakendus. ExeName) + 'Flash.ocx'; aHandle: = LoadLibrary (PChar (ocxPath)); kui aKäepide 0 siisalustada ARegFunc: = GetProcAddress (aHandle, 'DllRegisterServer'); kui Määratud (ARegFunc) siisalustada ExecAndWait ('regsvr32', '/ s' + ocxPath); lõpp; FreeLibrary (aHandle); lõpp; välja arvatud ShowMessage (vorming ('% s ei saa registreerida', [ocxPath])); lõpp; lõpp;
Märkus ocxPath muutuja osutab 'Flash.ocx' Macromedia OCX-le.
Enda registreerimiseks peab OCX rakendama funktsiooni DllRegisterServer, et luua kõigi juhtelementide klasside registrikirjed. Ärge muretsege funktsiooni DllRegisterServer pärast, vaid veenduge, et see oleks olemas. Lihtsuse huvides eeldatakse, et OCX asub samas kaustas, kus rakendus on.
Ülaltoodud koodi rida ExecAndWait kutsub tööriista regsvr32, läbides lüliti "/ s" koos kogu teega OCX-i. Funktsioon on ExecAndWait.
kasutab shellapi;... funktsiooni ExecAndWait (const ExecuteFile, ParamString: nöör): loogiline; var SEInfo: TShellExecuteInfo; ExitCode: DWORD; alustada FillChar (SEInfo, SizeOf (SEInfo), 0); SEInfo.cbSize: = SizeOf (TShellExecuteInfo); koos SEInfo alustage fMask: = SEE_MASK_NOCLOSEPROCESS; Wnd: = rakendus. Käepide; lpFile: = PChar (ExecuteFile); lpParameters: = PChar (ParamString); nNäita: = SW_HIDE; end; kui ShellExecuteEx (@SEInfo) siisalustadakorda Rakendus. Protsessisõnumid; GetExitCodeProcess (SEInfo.hProcess, ExitCode); kuni (ExitCode STILL_ACTIVE) või rakendus. Lõpetatud; Tulemus: = tõsi; lõppmuud Tulemus: = vale; lõpp;
Funktsioon ExecAndWait kasutab faili täitmiseks süsteemis ShellExecuteEx API kutset. Lisateabe saamiseks failide Delphist käivitamise kohta leiate lisateavet selle kohta Delphi koodist rakenduste ja failide käivitamine ja käitamine.
Flash.ocx sees Delphi Exe
Kui kasutaja masinas on vaja ActiveX-juhtelementi registreerida, siis veenduge, et kasutajal on Programm nõuab OCX-i, paigutades kogu ActiveX (või DLL) rakenduse exe-sse kui a ressurss. Kui OCX on salvestatud exe-sse, on seda lihtne ekstraheerida, kettale salvestada ja protseduuri RegisterOCX kutsuda.