![]() |
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:
Die Liste sieht aus wie eine Listview und der String den ich suche befindet sich in den SubItems.
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; Danke schonmal |
AW: String in Fremder Anwendung finden
Dass dein Code überhaupt halbwegs funktioniert, ist fast schon ein Wunder, wo doch die Parameter für
![]() ![]() Zitat:
|
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 ![]() -das Tool ist ein SDK und kostet Geld, funktioniert aber auf eigenen vollautomatisierteb Systemen zu 100%, wenn man ClearType abstellt ![]() |
AW: String in Fremder Anwendung finden
danke für die Ansätze,
@himitsu hättest du ein Beispiel dafür? |
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': ![]() 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? |
AW: String in Fremder Anwendung finden
Zitat:
gruss |
AW: String in Fremder Anwendung finden
Zitat:
|
AW: String in Fremder Anwendung finden
Zitat:
Aber man kann es ja mal versuchen. :) gruss |
AW: String in Fremder Anwendung finden
Es geht um eine Musik und Alben Verwaltung und ich bin da bis jetzt nicht weiter gekommen.
|
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 11:15 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