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
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    
Gast
(Gast)

n/a Beiträge
 
#11

Re: Fremde Anwendung ansteuern

  Alt 4. Aug 2003, 11: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
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#12

Re: Fremde Anwendung ansteuern

  Alt 4. Aug 2003, 12:25
Kuck dir mal im MSDN WM_SETTEXT Message an.
Nachtrag:
Zitat von MSDN:
An application sends a WM_SETTEXT message to set the text of a window.
Außerdem ein TEdit ist halt ein EDIT und kein BUTTON, sonst sollte der Quelltext so ungefähr der gleiche sein (habe ihn mir nicht so genau angekuckt.)
Alexander
  Mit Zitat antworten Zitat
Gast
(Gast)

n/a Beiträge
 
#13

Re: Fremde Anwendung ansteuern

  Alt 4. Aug 2003, 12:45
Hallo Alexander 8)

ich habe schon vorher geschrieben, dass ich hier überhaupt keine Ahnung habe...

also entweder wird jemand von der Systemprofis mir weiter helfen (dessen bin ich mir irgendwie sicher) oder komme nicht weiter.

Mit links kann ich mich jetzt nicht herumschlagen... da ich (noch) nicht die Abläufe die hier stattfinden richtig verstehe...

Also BITTE keine Links...

Gruß

Paul Jr.
  Mit Zitat antworten Zitat
davtix

Registriert seit: 29. Mai 2003
Ort: Berlin
87 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#14

Re: Fremde Anwendung ansteuern

  Alt 4. Aug 2003, 17:49
wenn du den code zum ausfüllen des editfeld hast dann schreibst du ihn doch hier rein??? bitte denn da hänge ich auch gerade fest und ich brauch das unbedingt... danke im vorraus. dAb
  Mit Zitat antworten Zitat
Assarbad
(Gast)

n/a Beiträge
 
#15

Re: Fremde Anwendung ansteuern

  Alt 4. Aug 2003, 18:42
Tragisch tragisch ....
Ich sage nur: Anwendungen, die gesteuert werden wollen, bieten eine OLE/COM Interface ... bei anderen sollte man es tunlichst vermeiden. Auch wenn Programme ala "WinAMP Remote Control" ja immer beliebter werden.

Sowas sollte nur fuer Studienzwecke (Debugging, RE etc) oder in Ausnahmefaellen benutzt werden.
  Mit Zitat antworten Zitat
Gast
(Gast)

n/a Beiträge
 
#16

Re: Fremde Anwendung ansteuern

  Alt 4. Aug 2003, 19:59
Hallo Assarbad 8) ,

als ich noch Datenbank-Moderator in dem heute schon legenderem Delphi-Forum war wurde mir mal dein Name ins Ohr geflüstert.

Schon damals wurdest Du als einer der besten System-Programmierer (wenn ich mich richtig erinnere) schlecht hin gehandelt... zugegeben nicht immer mit dem leichtestem Umgang...was mich überhaupt nicht gestört hat...

Schade das Du heute für mich nur ein Hinweis auf ein Studiengang hast...da

mein Herz schlug schneller als ich zuerst Dein Name in diesem Beitrag sah...

schade...

Vielleicht sind inzwischen auch neue Talente auf diesem Gebiet geboren, die diese Angelegenheit nicht so streng sehen wie Du... und mir weiter helfen würden...

Herzliche Grüße

Paul Jr.
  Mit Zitat antworten Zitat
Assarbad
(Gast)

n/a Beiträge
 
#17

Re: Fremde Anwendung ansteuern

  Alt 4. Aug 2003, 20:14
Hehe, ich bin geschmeichelt. Aber es war nur als Hinweis gedacht. Die Beispiele die dir oben geboten wurden, entsprechen doch eigentlich dem was du machen willst, oder hab ich da was verpasst?

Deinen Namen kenne ich uebr auch noch aus dem alten DF.
  Mit Zitat antworten Zitat
Gast
(Gast)

n/a Beiträge
 
#18

Re: Fremde Anwendung ansteuern

  Alt 5. Aug 2003, 08:21
Hallo Davtix 8)

natürlich zeige hier alles... sobald mir jemand hilft

Gruß

Paul Jr.
  Mit Zitat antworten Zitat
davtix

Registriert seit: 29. Mai 2003
Ort: Berlin
87 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#19

Re: Fremde Anwendung ansteuern

  Alt 5. Aug 2003, 11:26
das beruht auf gegenseitigkeit...
mal ein tip:
vieleicht kannst du was mit dem quellcode von en_dis_able.exe (von assarbad)
was anfangen. mit dem prog kann mann fremde formen min, max, schliessen, und zeigen und verstecken(visible:=true false) und der liest auch die button.caption edit.text usw.
das hat ja fast mit dem zu tun nur ne kleine veränderung mit WM_SETTEXT
und das soll funzen... so sagt ein gemeiner kumpel der auch der meinung ist das jeder selbst seinen hirn kurz vor einer explosion bringen soll 'dann lernt mann besser, wenn mann gerade vorm kollaps die lösung bekommt'.
jedoch wer nicht weiss wies funzt kann sich kaum einen klugen kopf drüber machen um evtl. was neues zu .... **dAb**
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#20

Re: Fremde Anwendung ansteuern

  Alt 5. Aug 2003, 11:34
So schwer kann das doch nicht sein.
Delphi-Quellcode:
var
  s: String;
begin
  s := 'Hello World';
  SendMessage(hEdit, WM_SETTETXT, 0, Integer(@s[1]));
Trotzdessen, schließe ich mich Assarbad an.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    


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 19:41 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