WIN32 窗口枚举和操作

下面的代码包含:获取窗口句柄,修改窗口标题,置顶窗口,操作子窗口,枚举子窗口,枚举顶层窗口。
这篇文章的意义就是把这些函数名记下来,以后用的时候过来看看,然后查msdn学习详细用法。



#include 
#include 
#include 
#include 
BOOL CALLBACK EnumChildProc(HWND hwnd, LPARAM lParam)
{
	TCHAR szTitle[MAX_PATH] = { 0 };
	GetWindowText(hwnd, szTitle, MAX_PATH);
	_tprintf(TEXT("子窗口名: %s\n"), szTitle);
	return true;
}

BOOL CALLBACK EnumOpenWindowProc(HWND hwnd, LPARAM lParam)
{
	TCHAR szTitle[MAX_PATH] = { 0 };
	GetWindowText(hwnd, szTitle, MAX_PATH);
	_tprintf(TEXT("顶层窗口名: %s\n"), szTitle);
	return TRUE;
}

int main()
{
	setlocale(LC_ALL, "");
	TCHAR szTitle[MAX_PATH] = { 0 };
	HWND hwnd = FindWindow(TEXT("#32770"), TEXT("飞鸽传书 2007 绿色版"));
	if (NULL == hwnd)
	{
		MessageBox(NULL, TEXT("获取窗口句柄失败"), TEXT("错误"), MB_OK);
	}
	else
	{
		// 修改窗口标题
		//SetWindowText(hwnd, TEXT("标题被修改了"));

		// 置顶窗口
		//SwitchToThisWindow(hwnd, false);
		// 获取 SwitchToThisWindow 函数指针(VS2019可以直接使用该函数)
		//typedef void (WINAPI *PSWITCHTOTHISWINDOW)(HWND, BOOL);
		//PSWITCHTOTHISWINDOW MySwitchToThisWindow;
		//HMODULE hUser32 = LoadLibrary(TEXT("user32.dll"));
		//MySwitchToThisWindow = (PSWITCHTOTHISWINDOW)GetProcAddress(hUser32, "SwitchToThisWindow");
		//MySwitchToThisWindow(hwnd, false);
		//Sleep(3000);
		//SendMessage(hwnd, WM_CLOSE, 0, 0);
		
		// 查找子窗口,设置文本框内容
		//HWND hEdit = FindWindowEx(hwnd, NULL, TEXT("Edit"), TEXT("")); // 可能会有多个Edit,这样就要改用GetDlgItem
		//HWND hEdit = GetDlgItem(hwnd, 0x3e9);
		//SendMessage(hEdit, WM_SETTEXT, 0, (LPARAM)TEXT("新的内容"));

		// 枚举子窗口
		//EnumChildWindows(hwnd, EnumChildProc, 0);

		// 枚举顶层窗口
		EnumWindows(EnumOpenWindowProc, 0);
		
	}

	return 0;
}

你可能感兴趣的:(Windows)