Gegenteil von "immer oben"

8

Ich möchte meine Anwendung auf Desktop-Ebene einrichten, z. B. Windows-Gadgets. Ist das möglich?

Sache ist, ich habe randlose Anwendung, die ich auf dem Desktop ausführen möchte.

Ich habe versucht, die Option zu finden, aber ich fand nur "immer oben", was genau das Gegenteil von dem ist, was ich erreichen möchte.

    
Danijel 03.03.2010, 14:22
quelle

4 Antworten

6

Die gute alte SetWindowPos unterstützt ein HWND_BOTTOM, um Ihre Anwendung als zu platzieren der letzte in der Reihenfolge. Um es in C # zu verwenden, werfen Sie einen Blick auf PInvoke.Net .

    
Oliver 03.03.2010 14:44
quelle
3

Schreiben Sie die App so, dass sie als Dienst im Hintergrund ausgeführt wird, und implementieren Sie dann ein echtes Windows Gadget als Front-End?

    
GWLlosa 03.03.2010 14:39
quelle
0

Ich denke, es gibt keinen Weg, es auf die gleiche Weise wie immer oben zu tun. Möchten Sie Ihre Anwendung unter Icons ausführen? Die einzige Möglichkeit, eine echte Hintergrundanwendung zu erstellen, ist das Ersetzen von explorer.exe, aber dann werden Sie keine Symbole und keine Taskleiste mehr sehen.

    
Andrey 03.03.2010 14:33
quelle
0

Sie können ein tatsächliches Windows-Gadget mithilfe von WPF implementieren, indem Sie ein XBAP erstellen. Fügen Sie einfach eine Datei "gadget.xml" und eine .html-Datei hinzu, die nur einen IFRAME enthält, der den XBAP lädt. Auf diese Weise wird Ihre WPF-Anwendung tatsächlich ein Gadget sein und automatisch allen Regeln folgen.

Eine andere Option ist Windows Sidebar Styler . Dies erfordert zusätzliche Software, die neben Ihrer installiert wird, aber Sie können auch Dinge tun, die Sie in der XBAP-Sandbox nicht tun können, ohne Code-Signatur-Zertifikate, Benutzerautorisierung, etc.

Eine dritte Option besteht darin, ein Gadget zu erstellen, das etwas erkennt, das im HTML-Code erkennbar ist (z. B. eine bestimmte Hintergrundfarbe). Beim Starten von .exe suchen Sie nach einem hWnd unter Explorer mit den gesuchten Attributen. injizieren Sie sich in den Explorer.exe-Prozess, und legen Sie Ihr Fenster als ein Kind davon fest.

Eine Variante der dritten Option besteht darin, dass Sie nicht in Explorer.exe injizieren, sondern Ihren Z-Index und Ihre Position (mit SetWindowPos) beibehalten, um den Z-Index und den Speicherort der gefundenen hWnd zu verfolgen.

So viele Möglichkeiten ...

    
Ray Burns 03.03.2010 16:19
quelle