激活后台运行程序的窗口
来源:互联网 发布:房地产经济评价软件 编辑:程序博客网 时间:2024/04/29 15:18
最近工作的时候遇到激活后台程序窗口的问题,试了好多方法才成功,在这里留点记忆。
我的程序一般不显示画面直接在后台运行,启动后直接进入系统托盘(Task Tray ),但在用户需要的时候需要显示运行状态画面。画面启动方法有两种:系统推盘启动和Explorer的右击菜单启动。系统托盘启动的时候没有问题,但是从Explorer启动的时候无法让窗口显示到最前端。尝试了SetForegroundWindow和BringWindowToTop等各种方法都没有成功,最后想到SetWindowPos的HWND_TOPMOST先把窗口显示到最上面,显示后再用HWND_NOTOPMOST把窗口的topmost属性删掉,这样的确显示是没有问题了,但是出现以下问题:启动后我的UI和Explorer都是被激活状态(标题栏深色显示),focus还是显示在explorer上。试着用setfoucs还有killfoucs之类处理都没有取得成功,最后用下面一段代码实现。
HWND hCurWnd = NULL;
DWORD dwCurID, dwMyID;
hCurWnd = ::GetForegroundWindow();
dwMyID = ::GetCurrentThreadId();
dwCurID = ::GetWindowThreadProcessId( hCurWnd, NULL );
::AttachThreadInput( dwCurID, dwMyID, TRUE );
::SetForegroundWindow( m_hWnd );
::AttachThreadInput( dwCurID, dwMyID, FALSE );
::SetWindowPos( m_hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE );
::SetWindowPos( m_hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE );
- 激活后台运行程序的窗口
- 激活后台运行程序的窗口
- 激活后台窗口
- 防止重复运行程序并且激活当前正在运行的窗口
- 进入后台,激活程序的事件
- 将后台窗口激活到前台的方法
- 将后台窗口激活到前台的方法
- 将后台窗口激活到前台的方法
- 将后台窗口激活到前台的方法
- 激活一个正在运行的程序
- 远程登录窗口退出后后台运行的程序依然在跑
- 让win32控制台程序后台运行不显示命令行窗口
- 窗口程序的运行过程
- 限制应用程序运行一次并激活已经运行的程序
- 程序只运行一次并激活原来的程序
- 程序只运行一次并激活原来的程序
- 程序只运行一次并激活原来的程序
- 激活任务栏的托盘程序窗口[特殊情况下使用]
- 光照模型
- 交流和沟通
- 光照模型
- delegate vs policy
- fedora14 linux-qq中文输入法解决方案
- 激活后台运行程序的窗口
- EditPlus格式化代码(js,css)
- 情人节?癫痫日?大家快乐就好。
- ORA-12560: TNS: 协议适配器错误的解决方法
- 手动封装系统
- 自定义callouts part 2
- Java中Integer
- 我看出来了,你们个个都身怀绝技!
- ShapeFile格式文件说明