So steuern Sie andere Anwendungsfenster in Delphi
So steuern Sie andere Anwendungsfenster in Delphi
Chen Jianbing, Guangdong Agricultural Management Cadre College
Das Schreiben von Delphi-Anwendungen erfordert häufig Vorgänge in anderen Windows-Anwendungen. Wenn Finanzmitarbeiter beispielsweise in einem Datenbankverwaltungssystem einen Taschenrechner verwenden müssen, können sie die in Windows enthaltene Taschenrechnerfunktion aufrufen. Bei jeder Verwendung müssen sie den Taschenrechner über „Start/Programme/Zubehör/Rechner“ öffnen. Offensichtlich ist es sehr umständlich. Natürlich können Sie eine Verknüpfung zu „Rechner“ auf dem Desktop erstellen und einen Hotkey definieren. Wenn Sie den Rechner verwenden müssen, drücken Sie diesen Hotkey, um den „Rechner“ zu öffnen. Da es sich bei „Rechner“ jedoch um ein „nichtmodales“ Fensterprogramm handelt, d eine große Anzahl von Es erhöht den Systemspeicheraufwand und ist für Benutzer unpraktisch bei der Bedienung. Es lässt sich einfach in Delphi steuern und die Wirkung ist perfekt. Im Folgenden werden die Implementierungsmethoden für zwei Hauptprobleme vorgeschlagen.
1. Wie kontrolliere ich das Design?
Erstellen Sie ein neues Formular, fügen Sie zwei Schaltflächen in das Formular ein, deren Beschriftungen „Öffnen“ (d. h. „Rechner starten“) und „Schließen“ (Beenden und Beenden) lauten, und fügen Sie jeweils eine Klickereignisverarbeitung hinzu. Weitere Informationen finden Sie im Formular Form1 und in der Unit-Datei Unit1.
Darunter sind die wichtigsten Aussagen:
fwnd:=FindWindow('SciCalc','Calculator');
Der Funktionsprototyp ist (Einzelheiten finden Sie in der Delphi-Hilfe):
HWND FindWindow(
LPCTSTR lpClassName, // Zeiger auf Klassennamen
LPCTSTR lpWindowName // Zeiger auf Fensternamen
);
Hier ist „SciCalc“ der Klassenname des Rechners und „Calculator“ der Fenstertitel des Rechners}
setWindowPos(fwnd,HWND_NOTOPMOST,0,0,0,0,SWP_SHOWWINDOW oder SWP_NOSIZE oder SWP_NOMOVE);
Der Funktionsprototyp ist:
BOOL SetWindowPos(
HWND hWnd, // Handle des Fensters
HWND hWndInsertAfter, // Handle für die Platzierungsreihenfolge
int X, // horizontale Position
int Y, // vertikale Position
int cx, // Breite
int cy, // Höhe
UINT uFlags // Fensterpositionierungs-Flags
);
ShowWindow(fwnd,SW_RESTORE); //Zeigt den geöffneten „Rechner“
Der Funktionsprototyp ist:
BOOL ShowWindow(
HWND hWnd, // Handle des Fensters
int nCmdShow // Zustand des Fensters anzeigen
);
Ret:=WinExec('c:windowscalc.exe',SW_SHOWNORMAL); //Rechner starten
Der Funktionsprototyp ist:
UINT WinExec(
LPCSTR lpCmdLine, // Adresse der Befehlszeile
UINT uCmdShow // Fensterstil für neue Anwendung
);
Führen Sie das Programm „Rechner“ aus und ermitteln Sie den Rückgabewert (und verwenden Sie dabei den Rückgabewert, um mögliche Fehler zu ermitteln).
2. Wie kann der „Klassenname“ der Anwendung geklärt werden?
Um eine Anwendung zu steuern, müssen Sie zunächst den „Klassennamen“ der Anwendung klären. Das Konzept der „Klasse“ ist in Delphi-Programmen bereits sehr klar. Erstellen Sie beispielsweise ein neues Formular Form1, und der „Klassenname“ des Formulars lautet TForm1. Wie kann man also den „Klassennamen“ anderer Windows-Programme ermitteln?
Glücklicherweise bietet Delphi ein praktisches Tool namens Winsight, das wie ein Spiegel ist, der die „Klassennamen“ von Monstern enthüllt, wo immer sie sich befinden.
So verwenden Sie Winsight:
⑴ Führen Sie Winsight aus (der Programmname ist ws32.exe, im selben Verzeichnis wie die Hauptdatei delphi32.exe), siehe Abbildung ①;
⑵ Wählen Sie „Follow Focus“ in „Spy“ aus dem Winsight-Menü, wie in Abbildung ② gezeigt;
⑶Führen Sie das Programm „Rechner“ aus.
⑷Das Ziel wird in Winsight angezeigt, wie in Abbildung ③ dargestellt.
Softwareumgebung: Chinesisch Win98/Chinesisch Delphi5.0.