DLL ir „ActiveX“ valdikliai iš „Delphi“ programos

Populiarus bruožas Delfi yra projekto diegimas su vykdomasis failas (exe). Tačiau, jei jūsų projekto DLL arba ActiveX valdikliai nėra užregistruoti vartotojų kompiuteriuose, „EOleSysError“ pasirodys paleidus exe failą. Norėdami to išvengti, naudokite komandinės eilutės įrankį „regsvr32.exe“.

„RegSvr32.exe“ komanda

Neautomatiškai naudojant regsvr32.exe (. Pradėti - Vykdyti) užregistruos ir išregistruos sistemoje savarankiškai registruojamus DLL ir ActiveX valdiklius. Regsvr32.exe nurodo sistemai bandyti įkelti komponentą ir iškviesti jo funkciją DLLSelfRegister. Jei šis bandymas pavyks, „Regsvr32.exe“ rodo dialogo langą, nurodantį sėkmę.

„RegSvr32.exe“ yra šios komandinės eilutės parinktys:

Regsvr32 [/ u] [/ s] [/ n] [/ i [: cmdline]] dllname. / s - tylus; nerodyti pranešimų laukelių. / u - Išregistruoti serverį. / i - „Call DllInstall“, perduodant pasirinktinai [cmdline]; kai naudojamas su / u, ragina dll pašalinti. / n - neskambinkite į DllRegisterServer; šią parinktį reikia naudoti kartu su / i 
instagram viewer

Skambink „RegSvr32.exe“ Per „Delphi“ kodą

Norėdami paskambinti „Regsvr32“ įrankiu, esančiu „Delphi“ kode, naudokite funkciją „RegisterOCX“, kad paleistumėte failą ir palaukite, kol jis bus baigtas.

Taip galėtų atrodyti procedūra „RegisterOCX“:

procedūra RegistruotisOCX; tipo
TRegFunc = funkcija: HResult; stdcall; var
ARegFunc: TRegFunc; a „rankos“: „Thandle“; „ocxPath“: stygos; prasidedabandyti
ocxPath: = ExtractFilePath (programa. ExeName) + 'Flash.ocx'; „aHandle“: = „LoadLibrary“ („PChar“ („ocxPath“)); jei a rankena 0 tadaprasideda
ARegFunc: = „GetProcAddress“ („aHandle“, ‘DllRegisterServer’); jei Paskirtas (ARegFunc) tadaprasideda
„ExecAndWait“ ('regsvr32', '/ s' + ocxPath); galas; „FreeLibrary“ („aHandle“); galas; išskyrus
ShowMessage (formatas („Nepavyko užregistruoti% s“, [ocxPath])); galas; galas;

Pastaba: „ocxPath“ kintami taškai į „Flash.ocx“ „Macromedia OCX“.

Kad galėtų užsiregistruoti, OCX turi įdiegti funkciją „DllRegisterServer“, kad sukurtų visų valdymo skyriuje esančių klasių registro įrašus. Nesijaudinkite dėl „DllRegisterServer“ funkcijos, tiesiog įsitikinkite, kad ji ten yra. Paprastumo dėlei daroma prielaida, kad OCX yra tame pačiame aplanke, kur ir yra programa.

Aukščiau esančiame kode esanti eilutė „ExecAndWait“ iškviečia įrankį „regsvr32“, perduodant jungiklį „/ s“ kartu su visu keliu į OCX. Funkcija yra „ExecAndWait“.

naudoja šelpė;... funkcija „ExecAndWait“ (const „ExecuteFile“, „ParamString“: stygos): boolean; var
„SEInfo“: „TShellExecuteInfo“; „ExitCode“: DWORD; prasideda
„FillChar“ („SEInfo“, „SizeOf“ („SEInfo“, 0)); SEInfo.cbSize: = SizeOf (TShellExecuteInfo); su „SEInfo“ prasideda
fMask: = SEE_MASK_NOCLOSEPROCESS; Wnd: = taikymas. Rankena; lpFile: = PChar (ExecuteFile); lpParameters: = PChar (ParamString); nShow: = SW_HIDE; end; jei „ShellExecuteEx“ (@SEInfo) tadaprasidedapakartoti
Taikymas. Proceso pranešimai; „GetExitCodeProcess“ („SEInfo.hProcess“, „ExitCode“); iki („ExitCode STILL_ACTIVE“) arba programą. Nutraukta; Rezultatas: = Tiesa; galasKitas Rezultatas: = klaidingas; galas;

Funkcija „ExecAndWait“ naudoja „ShellExecuteEx“ API kvietimą failui vykdyti sistemoje. Norėdami rasti daugiau failų iš „Delphi“ vykdymo pavyzdžių, pasidomėkite, kaip tai padaryti vykdyti ir vykdyti programas ir failus iš „Delphi“ kodo.

„Flash.ocx“ „Delphi Exe“ viduje

Jei vartotojo kompiuteryje reikia užregistruoti „ActiveX“ valdiklį, įsitikinkite, kad vartotojas turi OCX programai reikia įdedant visą „ActiveX“ (arba DLL) į programos „exe“ kaip šaltinis. Kai OCX yra saugomas „exe“ viduje, jį lengva išgauti, išsaugoti diske ir iškviesti „RegisterOCX“ procedūrą.

instagram story viewer