我正在创建一个小型调用应用程序,因此当用户没有注释时会出现一个窗口,并通知您需要指定要执行的活动,但是所有虚拟桌面都应该看到该窗口用户拥有。
我在SO中找到了两个帖子,但它们只告诉您如何更改工作区的默认行为,例如左右,右侧,创建,删除和在它们之间传输项目。
这些是帖子:
但正如我所说,我需要在所有工作区域都能看到窗口。我还看到当您按Alt + Tab并右键单击所需的窗口时,本机窗口有一个选项,您可以选择在所有工作区中保持打开状态。 here
那么如何在所有桌面上打开Windows窗体的情况下用C#编写应用程序?
示例:
答案 0 :(得分:0)
通过将值0x00080080
添加到WS_EX_STYLES枚举中,可以最轻松地完成此操作。并使用下面的样式。我能够使用here可用的Autohotkey脚本“ checkstyles”来获取此枚举,并检查vs 2019初始屏幕的样式。
IntPtr hwnd = WinAPI.CreateWindowEx2(
0,
WinAPI.RegisterClassEx2(ref wndClass),
null,
Win32Enums.WindowStylesEx.WS_EX_OVERLAPPEDWINDOW
,
-5, //x
0 - WinAPI.GetSystemMetrics(Win32Enums.SystemMetric.SM_CYCAPTION) - 7, //y
ScreenInfo.GetDisplays().MaxWidth + 10, //width
ScreenInfo.GetDisplays().MaxHeight + WinAPI.GetSystemMetrics(Win32Enums.SystemMetric.SM_CYCAPTION) + 15, //height
IntPtr.Zero,
IntPtr.Zero,
wndClass.hInstance,
IntPtr.Zero);
var ExStyle = WinAPI.GetWindowLongPtr(hwnd, (IntPtr)Win32Enums.GWL.GWL_EXSTYLE);
WinAPI.SetWindowLongPtr(hwnd, Win32Enums.GWL.GWL_EXSTYLE, (IntPtr)((int)ExStyle | (int)Win32Enums.WindowStylesEx.WS_EX_VisualStudioEmulation));