URL dieses Artikels:

Windows-Taschenrechner "ausborgen"
Frage: Ich möchte eine Berechnung über den Windows-Taschenrechner vornehmen und muss dazu diesem die Werte übergeben und am Ende auch das Rechenergebnis auslesen. Wie kann ich aus meiner Delphi-Anwendung heraus den Taschenrechner fernsteuern?

Antwort: Das Windows-Zubehör Taschenrechner (calc.exe) stellt kein COM-Interface für die Automation zur Verfügung, so dass der konventielle Weg über die Windows-Botschaften genutzt werden muss. Das folgende Beispiel demonstriert, wie man den Taschenrechner von Windows für eigene Berechnungen nutzt und das Ergebnis im eigenen Delphi-Programm anzeigt. Die beiden Funktionen AppActivate und SendKeys stammen aus der Unit SNDKEY32.pas, die Borland im Extras-Unterverzeichnis der Delphi-CDROM mit ausliefert. Die Sleep-Aufrufe sollen nur den Ablauf im Taschenrechner visuell nachverfolgbar machen. Der zu suchende Fensterklassen-Name des Eingabefeldes des Taschenrecherns wurde über WinSight32 nachgeschlagen (siehe Abbildung):
uses ShellAPI, SNDKEY32;

procedure TForm1.Button1Click(Sender: TObject); var hCalcWnd : HWND; hEditWnd : HWND; iBuffLen : Integer; pBuffer : PChar; begin hCalcWnd := FindWindow(nil, 'Rechner'); AppActivate('Rechner'); SendKeys('1{+}', True); Sleep(500); SendKeys('2', True); Sleep(500); SendKeys('~', True); hEditWnd := FindWindowEx(hCalcWnd, 0, PChar('Edit'), nil); if hEditWnd <> 0 then begin iBuffLen := SendMessage(hEditWnd, WM_GETTEXTLENGTH, 0, 0); if iBuffLen > 0 then begin Inc(iBuffLen); GetMem(pBuffer, iBuffLen); try SendMessage(hEditWnd, WM_GETTEXT, iBuffLen, LPARAM(pBuffer)); StatusBar1.SimpleText := pBuffer; finally FreeMem(pBuffer); end end end; end;

© 2002 Software & Support Verlag GmbH. Vervielfältigung nur mit Genehmigung des Verlags. Alle Markennamen sind in der Regel eingetragene Warenzeichen der entsprechenden Unternehmen oder Organisationen.
Fragen? ... zum Angebot des Software & Support Verlags: info@entwickler.com
... zu dieser Website: webmaster@entwickler.com