首页 > C/C++ > C++ 自动点击发现新硬件窗口
2015
03-16

C++ 自动点击发现新硬件窗口

功能自动点击发现新硬件按钮,封装系统的朋友可能会用到。

//////////////////////////////////////////////////////////////////////////
// dnybz<cnfreebsd@163.com>  [3/16/2015]

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

#pragma comment(lib, "User32.lib")

int EnumFunc(HWND lParam, HWND hWnd)
{
	LONG uButtonId;
	WCHAR TempString[MAX_PATH] = {0};

	if ( GetWindowLongW(lParam, GWL_STYLE) & WS_VISIBLE  )
	{
		ZeroMemory(TempString, MAX_PATH);
		GetClassNameW(lParam, TempString, MAX_PATH);
		if ( !lstrcmpiW(TempString, L"Button") )
		{
			ZeroMemory(TempString, MAX_PATH);
			GetWindowTextW(lParam, TempString, MAX_PATH);
			if ( wcsstr(TempString, L"下一步") || wcsstr(TempString, L"完成") )
			{
				uButtonId = GetWindowLongW(lParam, GWL_ID);
				SendMessage(hWnd, WM_COMMAND, uButtonId, (LPARAM)lParam);
			}
		}
	}
	return 1;
}

void ChildrenWindows(HWND hWnd, int level)
{
	hWnd = GetTopWindow(hWnd);

	if(!hWnd)
		return;

	while(hWnd)
	{
		WCHAR szNameBuffer[MAX_PATH] = {0};
		GetWindowTextW(hWnd, szNameBuffer, MAX_PATH);
		if ( wcsstr(szNameBuffer, L"找到新的硬件向导" ))
		{
			EnumChildWindows(hWnd, (WNDENUMPROC)EnumFunc, (LPARAM)hWnd);
		}

		ChildrenWindows(hWnd, level + 1);
		hWnd = GetNextWindow(hWnd, GW_HWNDNEXT);
	}
}

int WINAPI WinMain( 
				   HINSTANCE hInstance, 
				   HINSTANCE hPrevInstance, 
				   LPSTR lpCmdLine, 
				   int nCmdShow )
{
	for (;;) {
		ChildrenWindows(NULL, 0);
		Sleep(100);
	}
	return 0;
}

 

最后编辑:
作者:dnybz
这个作者貌似有点懒,什么都没有留下。