Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   String in Fremder Anwendung finden (https://www.delphipraxis.net/193138-string-fremder-anwendung-finden.html)

jacky213 25. Jun 2017 13:57

String in Fremder Anwendung finden
 
Hallo,

ich suche nach einer Möglichkeit einen String in einer Fremden Anwendung zu suchen und auszuwählen. Ich habe es bereits hinbekommen einen ListBox Eintrag zu suchen und zu markieren aber der Code funktioniert in einem anderen bereich der selben Anwendung nicht (Könnte sein, dass es dort keine Listbox sondern eine Listview ist).

Das ist der Code der bisher mit der Listbox funktioniert hat.

Delphi-Quellcode:
Procedure TitelAusw(fname, suchstring:string);
var
  wnd: HWND;
begin
  wnd := FindWindow('TAudioManager', 'AudioManager');
  wnd := FindWindowEx(wnd, 0, 'TAlbListe', nil);
sleep(250);
if SendMessage(wnd, lb_selectstring, -1,
longint(PChar(suchstring)))<>LB_ERR then begin
SendMessage(wnd, WM_LBUTTONDOWN, -1, longint(PChar(suchstring)));
SendMessage(wnd, WM_LBUTTONUP, -1, longint(PChar(suchstring)));
end;
end;
Die Liste sieht aus wie eine Listview und der String den ich suche befindet sich in den SubItems.

Danke schonmal

himitsu 25. Jun 2017 14:18

AW: String in Fremder Anwendung finden
 
Dass dein Code überhaupt halbwegs funktioniert, ist fast schon ein Wunder, wo doch die Parameter für MSDN-Library durchsuchenWM_LBUTTONDOWN und MSDN-Library durchsuchenWM_LBUTTONUP nicht wirklich richtig sind.

Zitat:

Könnte sein, dass es dort keine Listbox sondern eine Listview ist
Dann mußt du eben auch die API für eine Listview verwenden, wenn es eine Listbox ist.

mensch72 25. Jun 2017 14:26

AW: String in Fremder Anwendung finden
 
bemühe mal die Googlesuche nach (Win)Spy...


Diese Art von Tools zeigen dir, ob es überhaupt ein auslesbares Anzeigeelement gibt.
Wenn OwnerDraw nur eine Grafik "gemalt" wirst, hast du ohne eine eigene "ScreenOCR" Logik kaum eine Möglichkeit.

Da es aber seitens WindowsSecurity eh immer schwerer wird auf fremde Fenster und deren Elemente Zugriff zu bekommen, solltest du liebe gleich den Weg per ScreenOCR gehen.

- hier mach es einer "kostenlos" per Zugriff auf eine freies MS-Interface
http://blog.m-ri.de/index.php/2010/0...omment-page-1/

-das Tool ist ein SDK und kostet Geld, funktioniert aber auf eigenen vollautomatisierteb Systemen zu 100%, wenn man ClearType abstellt
http://www.screenocrsdk.com/screen-ocr-library.htm

jacky213 25. Jun 2017 14:35

AW: String in Fremder Anwendung finden
 
danke für die Ansätze,

@himitsu

hättest du ein Beispiel dafür?

Luckie 25. Jun 2017 17:37

AW: String in Fremder Anwendung finden
 
An einen Listview in einer fremden Anwendung kommst du nicht so einfach dran, da es kein Kontrollelemente aus der 16-Bit Zeit ist.
Sehe dazu mein Programm 'LuckieDIPS': http://michael-puff.de/Programmierung/Delphi/Programme/
Letztendlich musst du Speicher im fremden Prozess reservieren mit der Listview-Strucktur, dort die Daten vom Listview reinschreiben und dann den Speicher mit der Listview-Strucktur zurück in deinen eigenen Speicherbereich kopieren. Dann hast du die Infos. Nicht unbedingt trivial.

Was hast du denn eigentlich vor?

EWeiss 25. Jun 2017 17:51

AW: String in Fremder Anwendung finden
 
Zitat:

Was hast du denn eigentlich vor?
Cheaten?

gruss

Zacherl 25. Jun 2017 18:26

AW: String in Fremder Anwendung finden
 
Zitat:

Zitat von EWeiss (Beitrag 1375317)
Zitat:

Was hast du denn eigentlich vor?
Cheaten?

Eher unwahrscheinlich, dass du eine standard Win32 ListBox in einem Game findest :D Spiele reagieren auch in der Regel nicht auf Window Messages, sondern verwenden DirectInput für die Tastatur/Maus-Eingaben.

EWeiss 25. Jun 2017 19:36

AW: String in Fremder Anwendung finden
 
Zitat:

Zitat von Zacherl (Beitrag 1375318)
Zitat:

Zitat von EWeiss (Beitrag 1375317)
Zitat:

Was hast du denn eigentlich vor?
Cheaten?

Eher unwahrscheinlich, dass du eine standard Win32 ListBox in einem Game findest :D Spiele reagieren auch in der Regel nicht auf Window Messages, sondern verwenden DirectInput für die Tastatur/Maus-Eingaben.

JO ;)
Aber man kann es ja mal versuchen. :)

gruss

jacky213 27. Jun 2017 17:14

AW: String in Fremder Anwendung finden
 
Es geht um eine Musik und Alben Verwaltung und ich bin da bis jetzt nicht weiter gekommen.

Der schöne Günther 27. Jun 2017 17:20

AW: String in Fremder Anwendung finden
 
Nimm doch erst einmal das genannte Tool "WinSpy", damit kannst du genau die Elemente deiner Ziel-Anwendung untersuchen, welchen Klassennamen das Element hat das du haben willst, ...


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:23 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