Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Text aus ShowMessage (https://www.delphipraxis.net/42882-text-aus-showmessage.html)

glkgereon 25. Mär 2005 10:08


Text aus ShowMessage
 
Ist es irgendwie möglich herauszufinden, was in einer Showmessage steht, die von einer anderen anwendung ausgelöst wird?

also eine andere anwenung macht ne showmessage und ich will einfach nur gucken was da drinsteht, und dann den Button drücken.
nur irgendwie komm ich weder an den button noch an den Text ran.

achso: das handle (von der Showmessage) is gegeben...muss also net umständlich gesucht werden.

Hospi 25. Mär 2005 11:42

Re: Text aus ShowMessage
 
[quote="glkgereon"]also eine andere anwenung macht ne showmessage und ich will einfach nur gucken was da drinsteht, und dann den Button drücken.
nur irgendwie komm ich weder an den button noch an den Text ran.
quote]

ist diese andere anwendung, ein ganz anderes Projekt (also mit einer eigenen .exe)? :gruebel: wenn ja so glaube ich nicht dass man dort irgendwie ran kommt.
Oder, vieleicht wenn du den Text aus deiner showmessage in den Zwischenspeicher legst (automatisch im Programm) und dann mit der anderen Anwendung, mit der du irgendwas mit der Showmessage machen willst, wieder aus dem Zwischenspeicher hollst. So hättest du den Text.

Gruß
Hospi

MisterNiceGuy 25. Mär 2005 11:55

Re: Text aus ShowMessage
 
Also eine Showmessage-Nachricht trägt so weit ich weiß immer den Titel der Anwendung. Und wenn du den Titel weißt, bekommst du auch ganz leicht das Handle und somit evtl. auch den Text.
Musste mal ein bisschen rumsuchen :)

Airblader 25. Mär 2005 12:02

Re: Text aus ShowMessage
 
Zitat:

Zitat von MisterNiceGuy
Also eine Showmessage-Nachricht trägt so weit ich weiß immer den Titel der Anwendung. Und wenn du den Titel weißt, bekommst du auch ganz leicht das Handle und somit evtl. auch den Text.
Musste mal ein bisschen rumsuchen :)

Er sagt, das Handle hat er doch schon ;)

Luckie 25. Mär 2005 12:14

Re: Text aus ShowMessage
 
Hol dir mit MSDN-Library durchsuchenFindWindowEx das Handle von dem Static, es dürfte die ID -1 haben und dann mit MSDN-Library durchsuchenWM_GETTEXT den eigentlichen Text. Sinnvoll wäre auch noch vorher MSDN-Library durchsuchenWM_GETTEXTLENGTH aufzurufen.

glkgereon 25. Mär 2005 12:23

Re: Text aus ShowMessage
 
also, nochmal klarer:

Programm a (nicht meins) macht Showmessage
Programm b (meins) will wissen was drin steht und eventuell bestätigen

ich werd mir luckies vorschlöag ma angucken...

glkgereon 25. Mär 2005 12:47

Re: Text aus ShowMessage
 
ich krieg das net hin...

also hier erstmaln versuch wies aber leider net geht :(

Delphi-Quellcode:
procedure FindAllSubs(Main: THandle; Buffer: array of THandle);
var i:integer;
begin
  i:=1;
  Buffer[i]:=FindWindowEx(Main,0,nil,nil);
  while FindWindowEx(Main,Buffer[i],nil,nil)<>0 do
    begin
    Buffer[i+1]:=FindWindowEx(Main,Buffer[i],nil,nil);
    inc(i);
    end;
end;
is denn wenigstens das korrekt?
Delphi-Quellcode:
var Buf: array of Char;
    Buf2: String;
begin
SetLength(Buf,SendMessage(Sub,WM_GETTEXTLENGTH,0,0));
SendMessage(Sub,WM_GETTEXT,sizeof(Buf),Integer(@buf2));
ShowMessage(Buf2);

KLS 25. Mär 2005 14:30

Re: Text aus ShowMessage
 
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  wnd : HWND;
  Buf : string;
begin
  wnd := 2491570; //mein beispielhandle
  SetLength(Buf,SendMessage(wnd,WM_GETTEXTLENGTH,0,0)+1);
  SendMessage(wnd,WM_GETTEXT,length(Buf),Integer(@buf[1]));
  ShowMessage(buf);
end;
So wird jedoch "nur" die Caption ausgelesen. Wenn ich mich nicht irre, kann man den sonstigen text nicht auslesen.

glkgereon 25. Mär 2005 15:38

Re: Text aus ShowMessage
 
Problem: die Caption interessiert mich nicht :(

ich "brauche" den Text wirklich...

Pr0g 25. Mär 2005 15:59

Re: Text aus ShowMessage
 
Etwas umständlich, aber falls es sonst nicht gehen sollte: Mit [Strg]+[C] kann man den Text, bzw. die ganze Messagebox doch in die Zwischenablage kopieren. Von da könntest du dann nach "FALSCH", oder "RICHTIG" suchen (dafür ist es doch, oder ;)). Du müsstest also nur die Tastenkombi senden.

MfG Pr0g


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:31 Uhr.
Seite 1 von 2  1 2      

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