Opened 4 years ago
Last modified 43 hours 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 20 months ago by
Milestone: | 3.0 → future |
---|---|
Status: | new → assigned |
comment:2 Changed 10 months 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 10 months ago by
Cc: | stdedos@… added |
---|
comment:4 Changed 10 months ago by
Cc: | stdedos@… removed |
---|---|
Milestone: | future → 4.1 |
comment:5 Changed 10 months ago by
Cc: | stdedos@… added |
---|
comment:6 Changed 4 months ago by
Milestone: | 4.1 → 4.2 |
---|
- pyvda has all the functions we need
- Virtual Desktop Switching in Windows 10
comment:7 Changed 2 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 2 months ago by
Attachment: | 1442_desktop.cs added |
---|
Changed 2 months ago by
Attachment: | 1442_simple_example.cs added |
---|
comment:8 Changed 2 months ago by
Added a very simple example and the class exposing the used functions.
comment:9 Changed 43 hours ago by
this ticket has been moved to: https://github.com/Xpra-org/xpra/issues/1442
Links: