Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Win10 VirtualDesktop aktuell sichtbarer Desktop (https://www.delphipraxis.net/207576-win10-virtualdesktop-aktuell-sichtbarer-desktop.html)

MyRealName 10. Apr 2021 12:16

Win10 VirtualDesktop aktuell sichtbarer Desktop
 
Ich versuche gerade mit den virtuellen Desktops rumzuspielen. Es gibt da dieses interface IVirtualDesktopManager

Code:
IVirtualDesktopManager = interface(IUnknown)
    ['{A5CD92FF-29BE-454C-8D04-D82879FB3F1B}']
    function IsWindowOnCurrentVirtualDesktop(Wnd: HWND; out IsTrue: BOOL): HResult; stdcall;
    function GetWindowDesktopId(Wnd: HWND; out DesktopID: TGUID): HResult; stdcall;
    function MoveWindowToDesktop(Wnd: HWND; const DesktopID: TGUID): HResult; stdcall;
  end;
Leider gibt es da nichts weiter.
Was ich suche ist eine Methode, wie ich mein Fenster (wenn IsWindowOnCurrentVirtualDesktop = False liefert) auf den aktuellen Desktop verschieben kann (weil der User Strg+WIN+Links/Rechts gedrückt hat zum Bsp.). Das sollte ja mit MoveWindowToDesktop gehen, aber die Frage ist nun, wie kriege ich die DesktopId des Dekstops raus, auf dem man gerade ist ?

Einer eine Idee ?
Danke schonmal

Aviator 10. Apr 2021 15:31

AW: Win10 VirtualDesktop aktuell sichtbarer Desktop
 
Es sieht wohl so aus, dass Microsoft hier noch keine öffentliche API zur Verfügung stellt und sich diese immer noch ständig ändert.

Ich habe ein C# Programm gefunden - es gibt auch einige PowerShell und AutoHotKey Ansätze - bei dem das IVirtualDesktopManagerInternal Interface geladen und benutzt wird. Dort gibt es dann auch die Abfrage wie die ID des aktuellen Desktops ist.

Vielleicht hilft es dir ja weiter.

jaenicke 10. Apr 2021 16:15

AW: Win10 VirtualDesktop aktuell sichtbarer Desktop
 
Eine ganz dumme Methode:
Alle Fenster enumerieren und mit IsWindowOnCurrentVirtualDesktop eins finden, das sich auf dem aktuellen Desktop befindet. Hat man eins gefunden, bekommt man die ID ja mit GetWindowDesktopId heraus.

Doof wäre nur, wenn gar kein Fenster auf dem aktuellen Desktop liegt.

MyRealName 11. Apr 2021 11:06

AW: Win10 VirtualDesktop aktuell sichtbarer Desktop
 
Das probiere ich mal. Danke!

Das geht, jaenicke! Danke!
Wenn kein Fenster da ist, dann geht das natürlich nicht. Aber das macht nichts.
Ich will bei meinem Sohn verhindern, dass wenn ich ihm den PC blockiere mit einem fullscreen Fenster er nicht einfach auf den 2. Desktop switched. Ist es leer, sieht er nur den leeren Desktop, sowie er ein Spiel oder Browser oder was auch immer für ein Fenster aufmacht switched das fenster rüber.
Man könnte natürlich auch auf jedem Desktop das Fenster starten, aber das braucht man ja nicht :) Geht ja jetzt auch so.

himitsu 11. Apr 2021 14:15

AW: Win10 VirtualDesktop aktuell sichtbarer Desktop
 
Wenn man nach einer API zum Erstellen und Verwalten der VirtualDesktops sucht, dann landet man irgendwie immer bei Azure (die offiziellen Dokus von Microsoft). :freak:
Als wenn man zum Nutzen dieser API gezwungen werden soll sich Online zu connecten.

Aber die API aus dem PowerShell-Script lassen sich auch nach Delphi übernehmen, falls jemand Lust hat.
Seit 2,5 Jahren haben sich diese Interfaces nicht mehr geändert.

Version / Build (die Versionen aus dem Script)
1607 / 14393 : 2016-08-02 Anniversary Update
1803 / 17134 : 2018-04-30 April 2018 Update
1809 / 17661 : 2018-10-02 Oktober 2018 Update

jaenicke 11. Apr 2021 16:13

AW: Win10 VirtualDesktop aktuell sichtbarer Desktop
 
Zitat:

Zitat von MyRealName (Beitrag 1486886)
Ich will bei meinem Sohn verhindern, dass wenn ich ihm den PC blockiere mit einem fullscreen Fenster er nicht einfach auf den 2. Desktop switched.

Du kennst aber schon Microsoft Family? Das kann man ohne das Passwort nicht umgehen, zumindest nicht mit Mitteln, die ein typisches Kind kennt.

Wenn er etwas machen möchte, das er nicht darf, kann er dich um Erlaubnis bitten. Du bekommst dann die Anfrage auf dem Handy. Genauso klappt das mit Zeiteinschränkungen. Das geht ganz simpel.

Ach ja:
Und man sieht was Junior so am PC gemacht hat, vor allem die Zeiten.

Der schöne Günther 11. Apr 2021 20:10

AW: Win10 VirtualDesktop aktuell sichtbarer Desktop
 
Auf der anderen Seite haben mich solche nur halb funktionierenden PC-Sperren von Eltern auch erst dazu gebracht, mich genauer mit PCs zu beschäftigen. Wer weiß wo ich sonst gelandet wäre wenn ich durch Tüfteln und Knobeln nicht immer einen Weg drum herum gefunden hätte.

Naja, bis am Schluss die Festplatte in einem 5,25"-Wechselrahmen landete und ich die dann immer abgeben musste.

Und ich dann heimlich alte DOS-Spiele von Diskette startete


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz