Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Andere Anwendugn steuen (https://www.delphipraxis.net/178698-andere-anwendugn-steuen.html)

Dumpfbacke 22. Jan 2014 05:45

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:
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.
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,

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 22:26 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz