Anforderungen : Da wir kürzlich ein solches Projekt erhalten haben, haben uns die Partei A und andere gebeten, die Funktionen, die wir entwickelt haben, einer von ihnen bereits durchgeführten PB -entwickelten Anwendung hinzuzufügen. Der einzige Zweck ist nicht, zwei EXE -Anwendungen zu haben.
Lösung : Verpackung von Delphis Anwendung in Form einer DLL und rufen Sie sie dann im PB auf.
Design :
1. PB Teil
1. Erstellen Sie eine neue nicht-visuelle Klasse n_cst_demo, und wir geben alle Anrufe aus demselben Modul in diese Klasse ein.
2. Definieren Sie API -Aufrufe. Definition in Declare --- lokale externe Funktionen
// Handle: Ist das Handel des aktuellen Fensters;
Subroutine show_demo (ulong handle, String Param) Bibliothek "Projekt1.dll"
3. Erstellen Sie ein neues Formular W_MAIN.
4. Erstellen Sie ein neues Menü m_dll.
5. Erstellen Sie einen Menüelement namens Test DLL. Schreiben Sie in das geklickte Ereignis:
n_cst_demo n_pda n_pda = erstellen n_cst_demo n_pda.show_demo (Handle (ElternWindow), "ABCD1234") Zerstöre n_pda |
Auf diese Weise ist unser PB -Teil abgeschlossen.
2. Delphi Teil
1. Erstellen Sie ein neues DLL -Projekt.
2. Erstellen Sie ein neues Formular1. speichern.3. Schreiben Sie Code in das Projekt:
Bibliotheksprojekt1; Verwendung SYSUTILS, Formen, Fenster, Klassen, Kontrollen, Dialoge, UNIT1 in 'Unit1.pas' {Form1}, DM in 'dm.pas' {datamodule1: tdatamodule}; {$ R *.res} Prozedur dllMain (Grund: Ganzzahl); Beginnen Fall Grund von Dll_process_attach: Beginnen application.createForm (tdatamodule1, datamodule1); Ende; Dll_process_detach: Beginnen Ende; Dll_thread_attach: begin Ende; Dll_thread_detach: begin Ende; Ende Ende; // Denken Sie daran, in Delphi müssen String -Parameter mit dem PCHRE -Typ definiert werden Prozedur Show_Demo (Handle: Thandle; const Param: pchar); var Oldhandle: Thandle; Beginnen // Speichern Sie das Handle der DLL OldHandle: = application.Handle; // Ändern Sie den DLL -Anwendungsgriff in das Fenstergriff in PB // Der Zweck besteht darin, zu erreichen, dass die ausführbaren Dateien von DLL und PB zu einer Anwendung gehören // Effekt: Nach dem Öffnen des Fensters in der DLL gibt es in der Taskleiste kein Symbol mehr Application.Handle: = Handle; Application.createForm (tform1, Form1); versuchen Form1.s_param: = strpas (param); Form1.ShowModal; Endlich Form1.Free; Anwendung.Handle: = OldHandle; Ende; Ende; Exporte show_demo; Beginnen DllProc: = @DllMain; DllMain (dll_process_attach) Ende. |