WPF应用跟随桌面切换

有些程序可能设计的初衷是全局使用,但是实际使用过程中会涉及到切换桌面

假设程序启动在桌面1,当前工作在桌面2,当程序被使用激活时,会自动跳回桌面1

显然这个不符合全局使用的初衷

现在我们来解决

首先我们的主程序窗口要取消焦点获取:

cs 复制代码
Focusable = false;

然后在窗口加载完的时候加上:

cs 复制代码
IntPtr handle = new WindowInteropHelper(this).Handle;
var temp = GetWindowLongPtr(handle , GetWindowLongFields.GWL_EXSTYLE);
SetWindowLongPtr(handle, GetWindowLongFields.GWL_EXSTYLE, new IntPtr((int)temp | 0x08000000));

这里用到的两个User32的API需要导入:

cs 复制代码
[DllImport("user32.dll", SetLastError = true)]
public static extern IntPtr GetWindowLongPtr(IntPtr hWnd, GetWindowLongFields nIndex);

[DllImport("user32.dll", SetLastError = true)]
public static extern IntPtr SetWindowLongPtr(IntPtr hWnd, GetWindowLongFields nIndex, IntPtr dwNewLong);

还有一个枚举:

cs 复制代码
public enum GetWindowLongFields
{
    GWL_WNDPROC = -4,
    GWL_HINSTANCE = -6,
    GWL_HWNDPARENT = -8,
    GWL_STYLE = -16,
    GWL_EXSTYLE = -20,
    GWL_USERDATA = -21,
    GWL_ID = -12,
}

至此,无论你的桌面怎么切换,你的程序就会始终跟随你的桌面了

相关推荐
itzixiao7 分钟前
L1-066 猫是液体(5分)[java][python]
java·开发语言·python·算法
Lightning-py14 分钟前
Python 配置日志(Logging)
开发语言·python
隔窗听雨眠19 分钟前
MySQL主从延迟根因诊断法
开发语言·php
Hui_AI72025 分钟前
基于RAG的农产品GEO溯源智能问答系统实现
开发语言·网络·人工智能·python·算法·创业创新
CDwenhuohuo26 分钟前
前端文件预览
开发语言·前端·javascript
charlie11451419131 分钟前
通用GUI编程技术——图形渲染实战(三十八)——顶点缓冲与输入布局:GPU的第一个三角形
开发语言·c++·学习·图形渲染·win32
IT猿手33 分钟前
SCI一区:章鱼优化算法(Octopus Optimization Algorithm, OOA)求解23个测试函数,出图丰富,提供完整MATLAB代码
开发语言·算法·matlab
程序员JerrySUN33 分钟前
Jetson边缘嵌入式实战课程第二讲:JetPack 和 SDK Manager 是什么
c语言·开发语言·网络·udp·音视频
不知名的老吴34 分钟前
后端知识点:Python处理加权点赞
开发语言·python
海参崴-43 分钟前
C++ STL篇 AVL树的模拟实现
开发语言·c++