![]() |
Andere Anwendugn steuen
Hallo Leute,
ich möchte genre einen andere Anwendung aus Delphi heraus steuern. Bei einem Programm funktioniert es ganz gut. Ich besorge mir die Daten mittels WinSpy und schreibe dann Werte in ein Textfeld. Beispiel hier hat jedes Feld seine eigene Nummer. Hier ist es z.B. das 9. Edit Feld.
Delphi-Quellcode:
Das ganze wollte ich nun bei einen anderenProgramm machen nur da funktioniert es beim besten willen nicht da die einzelnen Edit Felder kein "eigenen Zahl" haben,
function FindWindowEx2(hParent: HWND; ChildClassName: string; ChildNr: Word): HWND;
var i: Word; hChild: HWND; begin hChild := 0; Result := 0; Dec(ChildNr); for i := 0 to ChildNr do begin hChild := FindWindowEx(hParent, hChild, PChar(ChildClassName), nil); if hChild = 0 then Break; Result := hChild; end; end; var wndMain, wndChild: HWND; begin wndMain := FindWindow('IEFWINDOW','Stuecklisten bearbeiten'); if wndMain <> 0 then begin wndChild := FindWindowEx(wndMain, 0, 'IEFWINDOW', nil); wndChild := FindWindowEx2(wndChild,'Edit', 9); if wndChild <> 0 then begin ShowMessage('Window Handle: ' + IntToStr(wndChild)); FlashControl(wndChild); // internal function end; end; end. Es handel sich beim Programm um BMC Remedy. Dort kann man zwar vieles mittels Macros machenm jedoch nicht alles. Zur not muss ich hat die Maus steuern und in das Feld klicken, was ich auch schon gemacht habe, jedoch wäre der andere Weg mir lieber uns sicherer. Kann mir jemand hier helpgen ? Tanja
Delphi-Quellcode:
function FindWindowEx2(hParent: HWND; ChildClassName: string; ChildNr: Word): HWND;
var i: Word; hChild: HWND; begin hChild := 0; Result := 0; Dec(ChildNr); for i := 0 to ChildNr do begin hChild := FindWindowEx(hParent, hChild, PChar(ChildClassName), nil); if hChild = 0 then Break; Result := hChild; end; end; var wndMain, wndChild: HWND; begin wndMain := FindWindow('ArFrame',******'); if wndMain <> 0 then begin wndChild := FindWindowEx(wndMain, 0, 'MDIClient', nil); wndChild := FindWindowEx(wndChild, 0, 'Afx:00400000:b:00000000:00000006:1E4209F1', nil); wndChild := FindWindowEx(wndChild, 0, 'AfxMDIFrame70', nil); wndChild := FindWindowEx(wndChild, 0, 'AfxFrameOrView70', nil); wndChild := FindWindowEx2(wndChild,'SysTabControl32', 3); wndChild := FindWindowEx2(wndChild,'AfxWnd70', 12); wndChild := FindWindowEx(wndChild, 0, 'RichEdit20A', nil); if wndChild <> 0 then begin ShowMessage('Window Handle: ' + IntToStr(wndChild)); SetWinText(wndChild, 'Ja'); FlashControl(wndChild); // internal function end; end; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz