2014-09-08 19 views
5

Ich kann das Window-Handle mit "GetForegroundWindow" von "user32.dll" abrufen und indem ich seinen Klassennamen mit "# 32770" abzugleichen, kann ich überprüfen, dass es ein Dialogfeld ist.Wie Sie wissen, dass ein Dialogfeld eine Warnung ist oder bestätigen Sie oder Aufforderung mit VB.Net Winform App?

Jetzt ist meine Frage, woher weiß ich, dass dieser Dialog und Alarm ist, bestätigen oder einen Dialog auffordern?

Hinweis: Ich arbeite außerhalb des Internet Explorer-Prozesses mit VB.Net.

Antwort

3

Es gibt eine Los von möglichen Dialogen. Standardmäßige sind MessageBox und die Shell-Dialoge wie OpenFileDialog, PrintDialog, ColorDialog, usw. Eine Menge von Nicht-Standard-Typen, von denen ein Programmierer, der nativen Code verwendet, um ein Windows-Programm zu schreiben, mit dem Ressourceneditor erstellt. Wird von der Winampi-Funktion von DialogBox() angezeigt.

Sie müssen mehr über das Dialogfenster herausfinden, verwenden Sie die Spy++ utility. Wenn es sich um einen allgemeinen Dialog handelt, sehen Sie, dass jedes Steuerelement im Fenster eine ID hat. Sie finden diese zur Laufzeit wieder, indem Sie GetDlgItem() pinvokieren. Möglicherweise benötigen Sie EnumChildWindows(), wenn sie in einem anderen untergeordneten Fenster verschachtelt sind. Wenn die Funktion fehlschlägt, gibt IntPtr.Zero zurück, dann wissen Sie, dass Sie nicht über den Dialog verfügen, nach dem Sie suchen. Sie sollten GetClassName() auch anpinnen, um zu überprüfen, dass es die Art von Steuerelement ist, das Sie finden möchten.

Passen Sie auf, dass es nie 100% genau sein kann, neigen Programmierer dazu, IDs zu wählen, die sehr häufig sind. Zum Beispiel, wenn man sie einfach fortlaufend nummeriert, beginnend bei 1. Dies ist zur richtigen Zeit, wenn es sehr wahrscheinlich ist, dass ein insbesondere Dialog angezeigt wird, sehr wichtig.

Und passen Sie auf, dass Microsoft Ihren Code leicht brechen kann. Sie versprechen nicht, Dialoge in der nächsten Version von Internet Explorer gleich zu halten.

Und Vorsicht, last but not least, dass Programmierer neigen dazu, daran interessiert zu sein, weil sie mit der Datei Download-Bestätigung Prompt basteln wollen. Geben Sie den Pfadnamen ein und klicken Sie automatisch auf OK. A sehr attraktives Ziel für Malware natürlich, sie haben Gegenmaßnahmen gegen dieses einfache Ziel eingebaut. Der erweiterte geschützte Modus, der in späteren IE-Versionen aktiviert wurde, ist eine weitere Gegenmaßnahme, die Ihnen pochende Kopfschmerzen bereiten wird.

+0

Vielen Dank für den Weg, ich werde es versuchen. –

0

Sie können die Fensterelemente mit EnumChildWindow aufzählen und die Schaltflächen und die geöffneten zählen sowie das Symbol überprüfen. Es gibt 6 Tastenkonfigurationen und 9 verschiedene Symbole, vorausgesetzt, es handelt sich um eine Standard-Nachrichtenbox.