win7怎么使用FindWindow和FindWindowEx查找窗口句丙

win7怎么使用FindWindow和FindWindowEx查找窗口句丙,第1张

查找到主窗口后,用FindWindowEx查找里面的子窗口,FindWindowEx找子窗口。通常它的第一个参数需要由FindWindow得来。

简单的说:FindWindow 能查找窗口句柄

FindWindowEx 不仅能查找窗口,还能查找指定窗口的控件句柄

EnumWindows可以枚举窗口,可以把所有窗口都枚举出来,不需要知道窗口的内容~~ FindWindow,则需要知道窗口的标题,或是窗口的名字。

要关的窗口估计不是你建的,不考虑Win7权限的情况下,在收到WM_CLOSE后,目标窗口的进程不一定会调用DestroyWindow来销毁这个窗口句柄,就算会关闭,也不一定会结束进程,毕竟窗口不代表程序的全部过程.

如果想结束对方的进程,Post一个QuitMessage,但是这个消息多数往往是在窗口已经销毁的情况才会发送,现在你发送了,对方恰恰会认为窗口已经销毁了,会结束进程,那么这个窗口会消失,但是内存不一定会释放.

无聊刚做了个测试,希望能帮到你...

// test1.cpp : 定义控制台应用程序的入口点。

//

#define WIN32_LEAN_AND_MEAN

#include <windows.h>

#include <iostream>

int wmain(int argc, wchar_t* argv[])

{

HWND hWnd = FindWindow(0, L"完美助手")//测试窗口

ShowWindow(hWnd, SW_HIDE) //使隐藏,显示,测试都没问题

system("pause")

ShowWindow(hWnd, SW_SHOW)

system("pause")

ShowWindow(hWnd, SW_HIDE)

system("pause")

// 关闭

SendMessage(hWnd, WM_CLOSE, 0, 0)

// PostMessage(hWnd, WM_QUIT, 0, 0) //这句一直是禁用的,启用后,下面的奇怪问题都没了.

system("pause")

char txt[128]

ZeroMemory(txt, 128)

GetWindowTextA(hWnd, txt, 128) // 读窗口有内容,说明没关住

printf("窗口标题:%s\n", txt)

if (FindWindow(0, L"完美助手")){ // 还能找到

std::cout <<"窗口似乎没有关闭" <<std::endl

}

if (!ShowWindow(hWnd, SW_SHOW)){ // 但是显示不出来了

std::cout <<"窗口不存在" <<std::endl

}

ZeroMemory(txt, 128)

GetWindowTextA(hWnd, txt, 128) // 再读窗口内容,没了

printf("窗口标题:%s\n", txt)

return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11143069.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存