利用FindWindow函数实现自动关闭弹窗

手头上有一项工作,每天要启动一个桌面程序。本来想依赖window的计划管理,但程序有个小bug,启动时会弹出一个窗口,需要点击确定按钮关闭弹窗后才能正常运行。
在网上搜索后,尝试着在VS2022 C++环境下,调用FindWindow函数和SendMessage函数来实现弹窗自动关闭功能。

基本思路:
1.调用FindWindow函数,找到需要处理的句柄对象,这可以通过在FindWindow函数中输入对象的标题名称来约束。
2.调用SendMessage函数,关闭句柄对象。

关闭计算器窗口的代码示例:

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

int main()
{
    HWND hWndRcv = FindWindow(NULL, "计算器");
    printf("%x\n", hWndRcv);

    if (hWndRcv != NULL)
    {
        LRESULT tmp = SendMessage(hWndRcv, WM_CLOSE, NULL, NULL);
    }
    else
    {
        printf("未找到目标对话框\n");
    }

    return 0;
}


在实际调试过程中,FindWindow函数的第二个参数类型定义为LPCTSTR,实际传入的参数类型定义为char *,导致调试不通过。解决办法:在“工程属性”->“常规”->“字符集”中,选择“使用Unicode字符集”或是“使用多字节编码字符集”(即ANSI编码)。

参考资料:
https://jingyan.baidu.com/article/3c48dd34c3f3cde10be358da.html
https://blog.csdn.net/qq_21210467/article/details/86632327

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值