![]() |
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, ...
|
AW: String in Fremder Anwendung finden
Zitat:
|
AW: String in Fremder Anwendung finden
Also wenn es die eigene Anwendung ist, dann hat er da aber ziemlich was vermurkst, wenn er nur noch so an seine eigene Daten kommt. :?
|
AW: String in Fremder Anwendung finden
Nein es geht um ein anderes Programm (Das andere Programm ist nicht von mir)
MSpy sagt folgendes:
Delphi-Quellcode:
var
wnd: HWND; begin wnd := FindWindow('TAudioManager', 'AudioManager'); wnd := FindWindowEx(wnd, 0, 'TMonitor', nil); if wnd <> 0 then begin end; end; |
AW: String in Fremder Anwendung finden
MSpy generiert nur den Code, um an das Handle des sichtbaren Controls ran zu kommen.
Was du dann mit diesem Handle machst, ist deine Sache und gehört in das letzte IF-THEN rein. @Luckie: Drum ja dir Frage ... es hätte auch zu einfach zu lösen sein können. :stupid: Aber natürlich könnte man auch den anderen Entwickler fragen, ob es eine Schnittstelle gibt (oder bald gibt). |
AW: String in Fremder Anwendung finden
ich komm da nicht weiter und die Ansätze sind mir noch zu hoch.:pale:
|
AW: String in Fremder Anwendung finden
Zitat:
Das ist nicht so leicht, aber wenn du Code hast bei dem du nicht weiter kommst dann können wir bestimmt helfen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:42 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