Ich habe eine Windows 7-VM, auf der meine obligatorischen Unternehmenskommunikationssysteme (Lync und Outlook) ausgeführt werden. Ich möchte einen Prozess auf diesem Windows-Rechner ausführen, der die Taskleiste überwacht und Benachrichtigungen an meinen Hostcomputer (Xubuntu 13.04) sendet, damit ich informiert werde, wenn ich eine E-Mail oder IM erhalte (ich habe es bereits nahtlos versucht) RDP zu tun, aber es ist eine ineffektive Lösung).
Alles, was Linux oder Netzwerk betrifft, kann ich relativ einfach handhaben. Ich weiß nicht, wie ich den Status der Windows-Taskleiste abfragen kann (oder einen Ereignis-Listener für Statusänderungen anhängen). Ich bin mit C ++ und Python vertraut, aber ich werde jede praktikable Lösung ausprobieren.
Detaillierte Statusinformationen sind vorzuziehen, aber mindestens muss ich in der Lage sein, Änderungen in der Anzahl der Symbole im Tray zu erkennen.
Unter Windows, wenn Sie Visual Studio installieren, gibt es unter den Visual Studio Tools ein nützliches Tool namens "Spy ++", im Grunde ist es ein Tool, das Ihnen alle Fenster anzeigt und anzeigt, welche Nachrichten ein bestimmtes Fenster erhält. p>
Mit diesem Tool können Sie sehen, dass das gesamte Panel, das "Start-Taste", Shortcuts, Tray, Uhr usw. enthält, "Shell_TrayWnd" ist. Sie können das "Suchen" -Menü verwenden, um nach einem bestimmten Fenster zu suchen, indem Sie einfach ein "Ziel" auf ein beliebiges Fenster ziehen.
Das Fachfenster selbst ist "SysPager" (000100D2 auf angehängtem Bild), Sie können Nachrichten für dieses Fenster protokollieren und sehen, welche Art von Nachricht dieses Fenster empfängt, wenn Sie in Outlook Mail empfangen.
Danach können Sie einen Code schreiben, der alle Nachrichten, die dieses Fenster empfängt, abhört und anhand dessen, was Sie in "Spy ++" gesehen haben, feststellen, was passiert ist.
Dies ist nur für den Anfang. Einen Code zu schreiben, der ein Fensterhandle bekommt und auf Nachrichten wartet, die das Fenster empfängt, ist ein anderer Teil, aber ich denke, es ist bereits in MSDN oder sogar in StackOverflow behandelt.
Die Suche nach einem bestimmten Fenster-Handle erfolgt durch FindWindowEx
Funktion und um Nachrichten zu hören, müssen Sie einen "Haken" setzen, der von SetWindowsHookEx
Funktion. Hooking ist auf MSDN ziemlich gut beschrieben.
Tags und Links python c++ winapi system-tray