Opened 5 years ago
Last modified 16 months ago
#1442 assigned enhancement
workspace support for MS windows 10
Reported by: | Antoine Martin | Owned by: | Antoine Martin |
---|---|---|---|
Priority: | major | Milestone: | 4.2 |
Component: | platforms | Version: | trunk |
Keywords: | win10 workspace | Cc: | stdedos@… |
Attachments (2)
Change History (11)
comment:1 Changed 3 years ago by
Milestone: | 3.0 → future |
---|---|
Status: | new → assigned |
comment:2 Changed 2 years ago by
There is also #2081's
As reported in ticket:2029#comment:25, Windows 10 Virtual Desktop Enhancer - Home must contain the API calls we need to hook into to be able to detect the current desktop / which desktop a window is on.
Additionally, when
2020-04-07 12:12:02,569 screen size change: will reinit the windows
it would be nice if you made an effort to re-init the windows on the desktop they were originally
comment:3 Changed 2 years ago by
Cc: | stdedos@… added |
---|
comment:4 Changed 2 years ago by
Cc: | stdedos@… removed |
---|---|
Milestone: | future → 4.1 |
comment:5 Changed 2 years ago by
Cc: | stdedos@… added |
---|
comment:6 Changed 20 months ago by
Milestone: | 4.1 → 4.2 |
---|
- pyvda has all the functions we need
- Virtual Desktop Switching in Windows 10
comment:7 Changed 18 months ago by
I've build a wrapper around Xpra to obtain this functionality.
For those who are interested:
I use CreateDesktop? of User32.dll.
More information on this topic: https://codingvision.net/c-create-secure-desktop-anti-keylogger & https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-createdesktopa
My workflow:
1) Call CreateDesktop?
2) Remove all open windows/hooks from the thread.
In my case, I use Eto.Forms, so I just call Application.Dispose() to make sure all the handles are gone.
3) Call SetThreadDesktop? (Warning from the MS docs: The SetThreadDesktop? function will fail if the calling thread has any windows or hooks on its current desktop)
This is only necessary if you want to create forms on the desktop. You can skip this step if you only want to launch Xpra.
4) Call SwitchDesktop? (wich makes the desktop visible)
5) Start Xpra.exe on the newly created virtual desktop, using the struct STARTUPINFO, property lpDesktop)
6) Wait for the Xpra proces to exit, then switch back to the original desktop.
Changed 18 months ago by
Attachment: | 1442_desktop.cs added |
---|
Changed 18 months ago by
Attachment: | 1442_simple_example.cs added |
---|
comment:8 Changed 18 months ago by
Added a very simple example and the class exposing the used functions.
comment:9 Changed 16 months ago by
this ticket has been moved to: https://github.com/Xpra-org/xpra/issues/1442
Links: