Autor Beitrag
Centron88
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mi 05.01.05 22:54 
Hallo ich habe eine Frage. Es gibt Programme, die auf andere Programme zugreifen müssen. Durch den Zugriff erzeugt aber das Programm auf das Zugegriffen werden soll eine MessageBox.

z.B.
Ein anderes Programm will auf "Outlook" zugreifen. Erlauben?
ja---------------nein

Jetzt denke ich mir als interessierter Anfänger, dass es gar nicht so schwer sein kann auf aufgehende Meldungen diverser Programme zu reagieren. Nur weiß ich leider nicht wie ich rausfinde, ob ein Programm eine Message ausgegeben hat.

Wenn ich erstmal weiß, dass die Message gekommen ist, kann ich auf Caption prüfen (z.B. if messagedlg.caption = Outlook then oder so ähnlich ;)) und gut. Dann bewege ich noch den Button ok oder so und gut. Aber wie bekomme ich mit, dass eine Message aufgepoppt ist??

Danke schon mal :shock:
Karlson
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 2088



BeitragVerfasst: Mi 05.01.05 23:23 
Hm, entweder mit einem wohl ziemlich kompliziertem Suche in: Delphi-Forum, Delphi-Library API-HOOK oder du überprüfst in einem Suche in: Delphi-Forum, Delphi-Library THREAD oder einfach einer Endlosschleife realisiert mit einem Timer, die Klasse des Fensters im Vordergrund Suche in: Delphi-Forum, Delphi-Library GETFOREGROUNDWINDOW. Dabei kannst du allerdings nicht unterscheiden ob es sich um einen Popup in Form von: "Wollen sie wirklich beenden?" oder um so einen wie du beschrieben hast handelt.

In einem eigenem Projekt habe ich rausgefunden, dass die Popup klasse #32770 heisst. Ob das immer so ist, oder nur bei der laufenden Windowssession - tut mir leid, kann ich dir nicht sagen. Ich gehe allerdings davon aus das es ein fixer wert sein müsste.

So, müsstest du schonmal erkennen dass ein popup aufgepoppt ist. Den Titeltext, erhälst du mit Suche in: Delphi-Forum, Delphi-Library GETTEXT und dem Handle des Popups. Wenn der Text dann "Zugriff auf xxx erlauben" heisst. Kannst du den Button drücken. Hierfür brauchst du zuerstmal das Handle des Buttons, das bekommst du mit Suche in: Delphi-Forum, Delphi-Library FINDWINDOWEX. Dann musst du mit Suche in: Delphi-Forum, Delphi-Library SENDMESSAGE einen klick befehl senden. Die Parameter hierfür ist Suche in: Delphi-Forum, Delphi-Library WM_COMMAND.

Ich weiss, die Antwort ist jetzt total zusammengeschusstert. Und ob das auch alles dann in der Praxis so funktioniert (wer weiss welche Fenster noch dei Klasse #32770 haben...) weiss ich auch nicht.

Ich bin offen für andere Antworten :lol: Das Thema intressiert mich durchaus. Ich muss aber ehrlich sagen, dass ich mir nicht vorstellen kann dass es da ne extrafunktion für gibt. Aber ich lass mich gerne vom Gegenteil überzeugen.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 06.01.05 00:14 
Alle mit dem VC Ressourcen Editor erstellten Ressourcen haben die Fenster-ID #32770.
Karlson
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 2088



BeitragVerfasst: Do 06.01.05 00:41 
Luckie hat folgendes geschrieben:
Alle mit dem VC Ressourcen Editor erstellten Ressourcen haben die Fenster-ID #32770.


okay, dann kann man meinen Ansatz vergessen. Gibts von deiner Seite irgendwelche Ideen, luckie?
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 06.01.05 01:32 
Jupp: Wenn man die Caption weiß diese mit FindWindow suchen. Die ID des Statics mit dem Text ist übrigens -1, sollte sich alo auch recht einfach mit FindWindowEx finden lassen.