Ich muss Text ohne Fenster direkt auf den Bildschirm schreiben. Der Text muss über allen anderen Fenstern und Vollbildanwendungen angezeigt werden und sollte nicht anklickbar oder in irgendeiner Weise interaktiv sein.
Beispiel: Der Text muss keinen transparenten Hintergrund haben, wie im Beispiel gezeigt. Ich kann entweder Python 2 oder 3 unter Windows 7 verwenden.
Ich habe versucht, ein eigenständiges Label mit Tkinter zu erstellen:
Bearbeiten: Verbessert mit Hilfe von Christian Rapp
%Vor%Was funktioniert:
Was nicht:
Es stellt sich heraus, dass es hier zwei völlig unterschiedliche Probleme gibt. Um Text über Fenster anzuzeigen, müssen Sie ein undekoriertes oberstes Fenster erstellen und den Hintergrund mit Chroma Key vergleichen. Dies funktioniert jedoch nicht, wenn eine Vollbildanwendung ausgeführt wird (z. B. ein Spiel). Die einzige zuverlässige Möglichkeit, Text über eine Vollbildanwendung anzuzeigen, ist die Verwendung eines Direct3D-Hooks.
Ich habe kein Direct3D-Hook-Beispiel geschrieben, aber ich werde dem ersten Problem zwei verschiedene Lösungen geben.
In diesem Beispiel mache ich die meiste Arbeit mit Tkinter und verwende win32api, um zu verhindern, dass der Text Mausklicks blockiert. Wenn win32api nicht für Sie verfügbar ist, können Sie diesen Teil des Codes einfach entfernen.
%Vor%Dieses Beispiel macht alles durch pywin32. Dies macht es komplizierter und weniger portabel, aber wesentlich leistungsfähiger. Ich habe im gesamten Code Links zu den relevanten Teilen der Windows-API eingefügt.
%Vor%Tags und Links python user-interface windows text screen