Laden...

Auf Fensterinhalte anderer Anwendungen zugreifen

Erstellt von skelle vor 13 Jahren Letzter Beitrag vor 13 Jahren 2.142 Views
S
skelle Themenstarter:in
112 Beiträge seit 2005
vor 13 Jahren
Auf Fensterinhalte anderer Anwendungen zugreifen

Hallo,
ich stehe im Moment vor dem Problem eine Art Wartungstool zu schreiben.
Die eigentliche Anwendung wird gestartet und mein Programm soll die Ausgaben analysieren und entsprechend reagieren.
Habe mich schon ein wenig schlau gemacht und herausgefunden wie ich an das WindowHandle herankomme
aber wie ich von da jetzt auf die einzelnen Controls oder so zugreifen kann ergibt sich mir noch nicht wirklich.
Ich entwickel mit C# und neuster .NET Version.
Wäre eventuell auch Bereit einen kleinen Betrag zu zahlen wenn mir jemand via Skype, Jabber oÄ gezielt Hilfe gibt.

greetz

A
118 Beiträge seit 2009
vor 13 Jahren

Wenn du nach IPC (=Inter Process Communication) suchst findest du einiges, u.a.:

Kommunikation zwischen zwei Programmen

Mfg
Aratar

S
skelle Themenstarter:in
112 Beiträge seit 2005
vor 13 Jahren

ich glaube nicht... auf die andere anwendung habe ich keinen zugriff ausser sie halt zu zu starten und dann die GUI auszuwerten

U
135 Beiträge seit 2009
vor 13 Jahren

Ich bilde mir ein, ich hätte in der dotnetpro mal einen Artikel gelesen, der in die Richtung ging. Glaube, da wurde anhand der calc.exe beschrieben, wie man auf Steuerelemente einer fremden Applikation zugreifen kann.
Wenn ich mich nicht irre, war es der hier:

http://www.dotnetpro.de/articles/onlinearticle2838.aspx

Werd heute Abend zu Hause mal mein Archiv durchwühlen und gucken ob der Artikel was für Dich ist

S
skelle Themenstarter:in
112 Beiträge seit 2005
vor 13 Jahren

Ja das habe ich auch schon in ein paar Tuts gefunden... Da wird aber nicht ganz das gemacht was ich möchte.
Es wird der Calculator gestartet, das WindowHandle geholt und dann werden per Win32API SendMessage Buttons gedrückt.
Das geht leider nicht weit genug glaube ich 😕
aber trotzdem shconmal danke 😃

Gelöschter Account
vor 13 Jahren

Hol dir den ACC Explorer und schau dir an, ob das fremde Fenster ACC Namen vergeben hat. Dann ist es relativ einfach. Stichwort: "Accessibility names"

S
skelle Themenstarter:in
112 Beiträge seit 2005
vor 13 Jahren

ok danke werde ich mir mal ansehen 😃

U
135 Beiträge seit 2009
vor 13 Jahren

Habe wie versprochen mal den Artikel rausgesucht...
Soweit ich's überblicke, müsste Dir der Artikel weiterhelfen können, er widmet sich der User Interface Automation (System.Windows.Automation).

Kannst ja mal in der Richtung in der MSDN suchen, ob Du dort was findest, das Dir weiterhilft. Ansonsten wären vielleicht die 15 Euro für das Nachbestellen der Ausgabe gut investiert 😃

S
skelle Themenstarter:in
112 Beiträge seit 2005
vor 13 Jahren

Hol dir den ACC Explorer und schau dir an, ob das fremde Fenster ACC Namen vergeben hat. Dann ist es relativ einfach. Stichwort: "Accessibility names"

habe mich über den ACC Explorer mal ein wenig informiert....
Also ich finde leider keinen brauchbaren Download für das Teil 😕
Weiterhin kann es sein, dass das Ding nur für in .NET geschriebene GUIS funktioniert?
Die Anwendung die ich überwachen soll ist nämlich nicht in .NET umgesezt

Gelöschter Account
vor 13 Jahren

Weiterhin kann es sein, dass das Ding nur für in .NET geschriebene GUIS funktioniert?

Nein. aber ich glaube Spy++ kann das auch....

1.044 Beiträge seit 2008
vor 13 Jahren

Hallo skelle,

wenn du GUI in .NET/WinForms programmiert worden ist, dann wird es nicht funktionieren. Du kannst zwar mit Spy++ auf die Oberfläche zugreifen, aber nicht mit der Win32-API Änderungen(Lesen, Schreiben) vornehmen. Stichwort: UIAutomation.

zero_x

Gelöschter Account
vor 13 Jahren

Du kannst zwar mit Spy++ auf die Oberfläche zugreifen, aber nicht mit der Win32-API Änderungen(Lesen, Schreiben) vornehmen

Seit wann? Die meisten Winforms Controls basieren auf Win32 Controls. Und die die elemente enthalten, welche nicht darauf basieren, kann man leicht über Windowsmessages manipulieren.

1.044 Beiträge seit 2008
vor 13 Jahren

Hallo JAck30lena,

teste es selbst! Ich hatte mal das gleiche vor und es hat nicht funktioniert. Mit meiner Aussage bin ich mir mehr als sicher, ganz sicher.

zero_x

Gelöschter Account
vor 13 Jahren

Hm.. Komisch, das ich das vor knapp 2 Jahren mit .net 2.0 machen konnte. Damals habe ich eine rudimentäre Test-Automatisierung gemacht. Was natürlich nicht geht, ist über die WinApi den reinen .net anteil zu ändern. Das musst du über Windowsmessages oder noch fießer über Reflection machen (hierzu musst du die Anwendung in der eigenen Appdomain hosten)

Generell ist das aber offtopic, da die Zeilanwendung nicht .Net ist.