AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Win10 VirtualDesktop aktuell sichtbarer Desktop
Thema durchsuchen
Ansicht
Themen-Optionen

Win10 VirtualDesktop aktuell sichtbarer Desktop

Ein Thema von MyRealName · begonnen am 10. Apr 2021 · letzter Beitrag vom 11. Apr 2021
Antwort Antwort
Benutzerbild von MyRealName
MyRealName

Registriert seit: 19. Okt 2003
Ort: Heilbronn
673 Beiträge
 
Delphi 10.4 Sydney
 
#1

Win10 VirtualDesktop aktuell sichtbarer Desktop

  Alt 10. Apr 2021, 12:16
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
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Win10 VirtualDesktop aktuell sichtbarer Desktop

  Alt 10. Apr 2021, 15:31
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.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke
Online

Registriert seit: 10. Jun 2003
Ort: Berlin
9.351 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Win10 VirtualDesktop aktuell sichtbarer Desktop

  Alt 10. Apr 2021, 16:15
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.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von MyRealName
MyRealName

Registriert seit: 19. Okt 2003
Ort: Heilbronn
673 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Win10 VirtualDesktop aktuell sichtbarer Desktop

  Alt 11. Apr 2021, 11:06
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.

Geändert von MyRealName (11. Apr 2021 um 11:24 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.152 Beiträge
 
Delphi 12 Athens
 
#5

AW: Win10 VirtualDesktop aktuell sichtbarer Desktop

  Alt 11. Apr 2021, 14:15
Wenn man nach einer API zum Erstellen und Verwalten der VirtualDesktops sucht, dann landet man irgendwie immer bei Azure (die offiziellen Dokus von Microsoft).
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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (11. Apr 2021 um 17:39 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke
Online

Registriert seit: 10. Jun 2003
Ort: Berlin
9.351 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Win10 VirtualDesktop aktuell sichtbarer Desktop

  Alt 11. Apr 2021, 16:13
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.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!

Geändert von jaenicke (11. Apr 2021 um 18:47 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Win10 VirtualDesktop aktuell sichtbarer Desktop

  Alt 11. Apr 2021, 20:10
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:50 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