AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fremde Anwendung ansteuern

Ein Thema von Gast · begonnen am 1. Aug 2003 · letzter Beitrag vom 7. Aug 2003
 
Gast
(Gast)

n/a Beiträge
 
#11

Re: Fremde Anwendung ansteuern

  Alt 4. Aug 2003, 10:08
Hallo Christian

hervorragend!!! DANKE !!! 8)


Ich habe das was Du mir gegeben hast mit anderen Sachen die ich im Internet gefunden habe etwas vermischt. Und das sieht jetzt so aus:

Code:
unit Unit1;

interface

uses
   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
   StdCtrls, ShellApi;

type
   TForm1 = class(TForm)
      Button1: TButton;
      procedure Button1Click(Sender: TObject);
   private
      { Private-Deklarationen }
   public
      { Public-Deklarationen }
   end;

var
   Form1: TForm1;

implementation

{$R *.DFM}

FUNCTION EnumChildProc(Wnd: hWnd; SL: TStrings): BOOL; stdcall;
VAR
   szFull: array[0..MAX_PATH] of Char; //Buffer for window caption
BEGIN
   Result := Wnd <> 0;
   if Result then
   BEGIN
      GetWindowText(Wnd, szFull, SizeOf(szFull)); // put window text in buffer
      if (Pos(SL[0], StrPas(szFull)) > 0) and // Test for text
          (SL.IndexOfObject(TObject(Wnd)) < 0) then // Test for duplicate handles
         SL.AddObject(StrPas(szFull), TObject(Wnd)); // Add item to list
      EnumChildWindows(Wnd, @EnumChildProc, Longint(SL)); //Recurse into child windows
   END;
END;

function ClickButton(ParentWindow: Hwnd; ButtonCaption: string): Boolean;
var
   SL: TStringList;
   H: hWnd;
begin
   SL := TStringList.Create;
   try
      SL.AddObject(ButtonCaption, nil); // First item in list is text to find
      EnumChildWindows(ParentWindow, @EnumChildProc, Longint(SL));
      H := 0;
      case SL.Count of
         1: ShowMessage('Window text not found.');
         2: H := hWnd(SL.Objects[1]);
         else
            ShowMessage('Ambiguous text detected.');
      end;
   finally
      SL.Free;
   end;
   Result := H <> 0;
   if Result then
      PostMessage(H, BM_CLICK, 0, 0);
end;

procedure TForm1.Button1Click(Sender: TObject);

var
   hWindow : DWORD;
   hButton : DWORD;

begin
   // Programm starten
   ShellExecute(0,'open','d:\Test\Test.exe',nil,nil,SW_NORMAL);
   // und auf das Handle des Fensters warten
   hWindow := 0;
   Sleep(1000);
   while hWindow = 0 do hWindow := FindWindow(nil,'TESTFORM');
   // Die Child Windows durchgehen
   hButton := 0;
   IF hWindow <> 0 THEN
      ClickButton(hWindow,'TESTBUTTON');
END;

end.
Im Hintergrund liegt ein Programm Test.Exe (auf d:\TEST\Test.exe) und wird hier aufgerufen. Anhand einer Caption von Tbutton wird der Tbutton lokalisiert und OnClick Ereignis ausgelöst.

Nun jetzt habe ich auf diesen Test-Formular noch eine Komponente TEdit hingelegt.

Jetzt muss ich also auch die TEdit Komponente mit einem Text versehen (natürlich aus diesem Program hier her).

Kann jemand diese hier oben genannte SourcCode vervollständigen... so das z.B. in dem TEdit dann ein Text ’HURRRA’ erscheint?

Gruß

Paul Jr.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:38 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