QT使用FindWindow查找窗口句柄并置顶该窗口

	首先说明,网上找了很多代码资源,运用在QT项目中都不能找到该窗口的句柄,即FindWindow返回的是0,后面在某讨论里面看见VS的编码为unicode,才解决了这个问题。
	编译环境为QT 5.15.2 + vs2019 32bit,其他环境没试过。

步骤:
1、在pro文件里面添加:
win32{
LIBS += -luser32
}

2、源文件添加:
#include <Windows.h>
FindWindow头文件为WinUser.h,故我还添加了#include <WinUser.h>

3、使用spy++工具查找外部进程窗口的类名和标题名。具体怎么操作这里不做阐述。

4、具体代码为:
QString name = “Qt5QWindowIcon”;//窗口的类名
QString windowname = “xxx_1”;//窗口标题名
HWND hwnd = FindWindow((LPCWSTR)name.unicode(),(LPCWSTR)windowname.unicode());//查找窗口句柄
ShowWindow(hwnd,SW_RESTORE);//激活并置顶窗口,ShowWindow里面的参数可以网上搜一下,不同功能不同参数。

注意:
1、FindWindow分为FindWindowA 和FindWindowW,上面的格式为FindWindowW;另外,一定要加unicode转码,否则FindWindow返回为0。
2、FindWindow不知到其中某个参数可以填NULL,但是必须填一个。由于我这里需要打开两个相同的软件(类名相同,窗口名不同)故窗口类名一定要获取到。

  • 9
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值