宁波网站建设哪里好,关于公司做网站供比价报告,网站图片调用,美化WordPress的导航我需要实现这么一个功能#xff1a;在知道某个程序的PID的情况下#xff0c;最大化并且置顶显示这个程序的窗口。经过一番资料的查找#xff0c;并且借助了一些科技的力量#xff0c;找到了解决办法#xff1a;
struct FindWindowData
{DWORD processId;HWND hWnd;
};BOO…我需要实现这么一个功能在知道某个程序的PID的情况下最大化并且置顶显示这个程序的窗口。经过一番资料的查找并且借助了一些科技的力量找到了解决办法
struct FindWindowData
{DWORD processId;HWND hWnd;
};BOOL FindWindowCB(HWND hWnd, LPARAM lParam)
{DWORD processId 0;if(GetWindowThreadProcessId(hWnd, processId)){// 分配足够大的缓冲区来存储窗口标题const int MAX_TITLE_LENGTH 255;WCHAR windowTitle[MAX_TITLE_LENGTH];// 调用 GetWindowTextW 来获取窗口标题int result GetWindowTextW(hWnd, windowTitle, MAX_TITLE_LENGTH);// qDebug() the text: QString::fromWCharArray(windowTitle) result hWnd processId;QString title QString::fromWCharArray(windowTitle);FindWindowData *dataPtr (FindWindowData*)lParam;// 这里的筛选条件可能需要继续优化if(processId dataPtr-processId IsWindowVisible(hWnd) title.length() 0) {qDebug() the title text: title result hWnd processId; dataPtr-hWnd hWnd;}return TRUE;}return FALSE;
}// 寻找特定PID的窗口句柄
HWND findWindowByPID(DWORD dwProcessId)
{FindWindowData winData {dwProcessId, 0};LPARAM p (LPARAM)winData;EnumWindows((WNDENUMPROC)FindWindowCB, (LPARAM)p); // 遍历系统上打开的窗口return winData.hWnd;
}调用方式请看下面 listProcessIdentifier函数的实现请看前一篇【在Qt中获取Windows中进程的PID】 // 选定要显示的进程的exe名字获取其PIDQString processName ;processName MyApp.exe;QListquint64 pidList listProcessIdentifier(processName);qDebug() the pid list: pidList;// 根据PID取得其窗口句柄hWndHWND hWnd findWindowByPID(pidList.first());qDebug() hwnd: hWnd;ShowWindow(hwnd, SW_MAXIMIZE); // 最大化显示窗口参考 【怎么从进程pid获得窗口句柄呢】