win32窗口枚举
来源:互联网 发布:档案管理系统java 编辑:程序博客网 时间:2024/06/08 00:11
有几个方式来枚举窗口,下面的几个函数可能需要配合使用才能找到你想要的窗口:
1 EnumWindow:枚举所有顶级窗口。可以枚举到一个程序的顶级窗口,但有可能枚举不到程序弹出来的模式对话框。
2 EnumChildWindow: 枚举一个窗口的子窗口。可以枚举某个对话框里面的所有控件。
3 EnumThreadWindows: 枚举属于某个线程的所有窗口,可以枚举到模式对话框,但可能枚举不到对话框里面的控件。
3 FindWindow: 如果知道窗口的标题名,可以使用这个函数来得到窗口的名字。
4 WindowFromPoint: 得到占据了屏幕某一点的窗口的句柄。
#include <iostream>
#include <Windows.h>
#include <string.h>
using namespace std;
STARTUPINFO si;
PROCESS_INFORMATION pi;
BOOL CALLBACK EnumChildProc( HWND hWnd,
LPARAM lParam
)
{
//
TCHAR haha[256];
HWND hdlg;
GetWindowText(hWnd,haha,256);
wprintf(L"child %s\n",haha);
return true;
}
BOOL CALLBACK EnumThreadWndProc( HWND hWnd,
LPARAM lParam
)
{
//
TCHAR haha[256];
HWND hdlg;
GetWindowText(hWnd,haha,256);
wprintf(L"window %s\n",haha);
if(wcscmp(haha,L"Welcome to J-Flash")==0)
{
EnumChildWindows(hWnd,EnumChildProc,lParam);
}
return true;
}
BOOL CALLBACK EnumWindowCallBack(HWND hWnd, LPARAM lParam)
{
TCHAR buf[128];
GetWindowText(hWnd, buf, 128 );
if(wcsstr(buf,L"SEGGER J-Flash")!=0)
{
cout<<"main handle: "<<hWnd<<endl;
//EnumChildWindows(hWnd,EnumChildProc,lParam);
DWORD dwProcessId;
DWORD dwtheadid = GetWindowThreadProcessId(hWnd,&dwProcessId);
EnumThreadWindows(dwtheadid,EnumThreadWndProc,0);
if(FindWindow(NULL,L"Welcome to J-Flash"))
{
cout<<"success find windows"<<endl;
}
return false; //找到目标了,返回false表示不再继续枚举了
}
return true; //继续枚举
}
DWORD WINAPI ThreadFun(LPVOID pM)
{
//printf("子线程的线程ID号为:%d\n子线程输出Hello World\n", GetCurrentThreadId());
EnumWindows(EnumWindowCallBack,0);
return 0;
}
int main()
{
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
if(CreateProcess(L"D:/JLinkARM_V486b/JFlashARM.exe",NULL,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi)==0)
cout<<"error to create a process"<<endl;
Sleep(3000);
HANDLE handle = CreateThread(NULL, 0, ThreadFun, NULL, 0, NULL);
WaitForSingleObject(handle, INFINITE);
Sleep(5000);
TerminateProcess(pi.hProcess,0);
return 0;
}
0 0
- win32窗口枚举
- 利用win32 API GetWindow 枚举窗口
- 在C#中调用Win32函数EnumWindows枚举所有窗口
- 如何用 Win32 APIs 枚举应用程序窗口和进程
- 如何用 Win32 APIs 枚举应用程序窗口和进程
- 如何用 Win32 APIs 枚举应用程序窗口和进程
- 如何用 Win32 APIs 枚举应用程序窗口和进程
- 如何用 Win32 APIs 枚举应用程序窗口和进程
- 用Win32 API枚举应用程序窗口和进程
- Win32 枚举所有子窗口二种方法
- 在C#中调用Win32函数EnumWindows枚举所有窗口
- Win32 窗口
- 窗口枚举
- 枚举窗口
- 枚举窗口
- 枚举进程,枚举窗口
- 用 Win32 APIs 枚举应用程序窗口和进程和关闭进程
- Win32注册表枚举
- std::map用法
- notepad++中配置python 编译命令
- MySQL新建用户,授权,删除用户,修改密码
- 友推和appkey的申请教程
- Android MimeType的用途以及所有类型
- win32窗口枚举
- php socket 基础
- C语言指针使用总结
- java date 日期加减天数
- QQSDK(OAuth登录)Binding工程
- 找出不支持arm64的静态库/动态库
- vs2010 编译 python 源码
- isset,empty,is_null的小知识点
- 《UNIX环境高级编程》读书笔记之信号(2)