Ελέγχου DLL και ActiveX από μια εφαρμογή Delphi

Ένα δημοφιλές χαρακτηριστικό του Δελφοί είναι η ανάπτυξη ενός έργου με μια εφαρμογή εκτελέσιμο αρχείο (exe). Ωστόσο, εάν τα στοιχεία ελέγχου DLL ή ActiveX του έργου σας δεν είναι καταχωρημένα στις μηχανές των χρηστών, θα εμφανιστεί ένα μήνυμα "EOleSysError" ως απάντηση στην εκτέλεση του αρχείου exe. Για να αποφύγετε αυτό, χρησιμοποιήστε το εργαλείο γραμμής εντολών regsvr32.exe.

Command RegSvr32.exe

Μη αυτόματη χρήση του regsvr32.exe (Windows. Έναρξη - Εκτέλεση) θα καταχωρίσει και θα καταργήσει την εγγραφή αυτο-καταχωρίσιμων στοιχείων ελέγχου DLL και ActiveX σε ένα σύστημα. Το Regsvr32.exe δίνει εντολή στο σύστημα να προσπαθήσει να φορτώσει το στοιχείο και να καλέσει τη λειτουργία του DLLSelfRegister. Εάν η προσπάθεια αυτή είναι επιτυχής, το Regsvr32.exe εμφανίζει ένα παράθυρο διαλόγου που δείχνει την επιτυχία.

Το RegSvr32.exe διαθέτει τις ακόλουθες επιλογές γραμμής εντολών:

Regsvr32 [/ u] [/ s] [/ n] [/ i [: cmdline]] dllname. / s - Αθόρυβο; δεν εμφανίζονται κουτιά μηνυμάτων. / u - Διαγραφή διακομιστή. / i - Καλέστε το DllInstall και μεταβείτε με ένα προαιρετικό [cmdline]. όταν χρησιμοποιείται με / u κλήσεις dll απεγκατάσταση. / n - μην καλέσετε το DllRegisterServer. αυτή η επιλογή πρέπει να χρησιμοποιηθεί με το / i 
instagram viewer

Κλήση RegSvr32.exe Μέσα στον κώδικα των Δελφών

Για να καλέσετε το εργαλείο regsvr32 μέσα στον κώδικα Delphi, χρησιμοποιήστε τη λειτουργία "RegisterOCX" για να εκτελέσετε ένα αρχείο και περιμένετε να ολοκληρωθεί η εκτέλεση.

Έτσι μπορεί να φαίνεται η διαδικασία "RegisterOCX":

διαδικασία RegisterOCX; τύπος
TRegFunc = λειτουργία: HResult; stdcall; var
ARegFunc: TRegFunc; aHandle: Thandle; ocxPath: σειρά; ξεκινήσειδοκιμάστε
ocxPath: = ExtractFilePath (Εφαρμογή. ExeName) + 'Flash.ocx'. aHandle: = LoadLibrary (PChar (ocxPath)). αν aHandle 0 έπειταξεκινήσει
ARegFunc: = GetProcAddress (aHandle, 'DllRegisterServer'); αν Ανάθεση (ARegFunc) έπειταξεκινήσει
ExecAndWait ('regsvr32', '/ s' + ocxPath); τέλος; FreeLibrary (aHandle); τέλος; εκτός
ShowMessage (Μορφή ('Δεν είναι δυνατή η εγγραφή% s', [ocxPath])); τέλος; τέλος;

Σημείωση: το ocxPath μεταβλητών σημείων στο Macromedia OCX του Flash.ocx.

Για να μπορέσει να εγγραφεί, ένα OCX πρέπει να εφαρμόσει τη συνάρτηση DllRegisterServer για να δημιουργήσει καταχωρήσεις μητρώου για όλες τις κλάσεις μέσα στο στοιχείο ελέγχου. Μην ανησυχείτε για τη λειτουργία DllRegisterServer, απλά βεβαιωθείτε ότι υπάρχει. Για λόγους απλότητας, τεκμαίρεται ότι το OCX βρίσκεται στον ίδιο φάκελο με εκείνο όπου βρίσκεται η εφαρμογή.

Η γραμμή ExecAndWait στον παραπάνω κώδικα καλεί το εργαλείο regsvr32 περνώντας τον διακόπτη "/ s" μαζί με την πλήρη διαδρομή προς το OCX. Η λειτουργία είναι ExecAndWait.

χρήσεις shellapi... λειτουργία ExecAndWait (const ExecuteFile, ParamString: σειρά): boolean; var
SEInfo: TShellExecuteInfo; ExitCode: DWORD; ξεκινήσει
FillChar (SEInfo, μέγεθοςOf (SEInfo), 0); SEInfo.cbSize: = ΜέγεθοςOf (TShellExecuteInfo); με SEInfo ξεκινήστε
fMask: = SEE_MASK_NOCLOSEPROCESS; Wnd: = Εφαρμογή. Λαβή; lpFile: = PChar (ExecuteFile). lpParameters: = PChar (ParamString). nShow: = SW_HIDE; μιnd; αν ShellExecuteEx (@SEInfo) έπειταξεκινήσειεπαναλαμβάνω
Εφαρμογή. ProcessMessages; GetExitCodeProcess (SEInfo.hProcess, ExitCode). μέχρι (ExitCode STILL_ACTIVE) ή Εφαρμογή. Τερματίστηκε. Αποτέλεσμα: = Αληθινό. τέλοςαλλού Αποτέλεσμα: = Λάθος; τέλος;

Η συνάρτηση ExecAndWait χρησιμοποιεί την κλήση API ShellExecuteEx για να εκτελέσει ένα αρχείο σε ένα σύστημα. Για περισσότερα παραδείγματα εκτέλεσης οποιουδήποτε αρχείου από τους Δελφούς, ελέγξτε πώς να κάνετε εκτελέστε και εκτελέστε εφαρμογές και αρχεία από τον κώδικα Delphi.

Flash.ocx Μέσα στους Δελφούς Exe

Εάν υπάρχει ανάγκη εγγραφής ενός στοιχείου ελέγχου ActiveX στο μηχάνημα του χρήστη, βεβαιωθείτε ότι ο χρήστης έχει το OCX το πρόγραμμα απαιτεί τοποθετώντας ολόκληρο το ActiveX (ή DLL) μέσα στο exe της εφαρμογής ως a πόρος. Όταν το OCX αποθηκεύεται στο εσωτερικό του exe, είναι εύκολο να εξαχθεί, να αποθηκευτεί στο δίσκο και να καλέσετε τη διαδικασία RegisterOCX.

instagram story viewer