如何处理外部应用程序窗口?MFC
How handle external application window? MFC
我需要按名称、id 或进程句柄处理另一个正在运行的应用程序。我得到了ID和进程句柄,但我不知道如何获取窗口句柄来更改外部程序标题。
有我的代码:
BOOL CFindProcess::OnInitDialog()
{
CDialogEx::OnInitDialog();
CComboBox* pComboBox = (CComboBox*)GetDlgItem(IDC_COMBO_PROCESS);
HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
PROCESSENTRY32 proc;
proc.dwSize = sizeof(PROCESSENTRY32);
if (Process32First(hSnap, &proc)){
pComboBox->AddString(proc.szExeFile);
while (Process32Next(hSnap, &proc)){
if (0!=wcscmp(proc.szExeFile, L"svchost.exe"))
pComboBox->AddString(proc.szExeFile);
if (wcscmp(proc.szExeFile, L"notepad.exe") == 0){
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, proc.th32ProcessID);
GetProcessId(hProcess);
AfxMessageBox(L"Handeled");
//SetWindowText(hProcess, L"Weather");
CloseHandle(hProcess);
}
}
}
CloseHandle(hSnap);
return TRUE;
}
我的问题是如何获取记事本的窗口句柄.exe按名称或 ID,使用 MFC 处理句柄?
这段代码演示了 Jerry 所指的内容:
struct MYFINDSTRUCT
{
DWORD dwPID;
HWND hWnd;
};
BOOL CALLBACK MyWndEnum(HWND hwnd,LPARAM lParam)
{
MYFINDSTRUCT* pP = (MYFINDSTRUCT*)lParam;
DWORD dwPID = 0;
GetWindowThreadProcessId(hwnd,&dwPID);
if(dwPID==pP->dwPID)
{
pP->hWnd = hwnd;
return 0;
}
return 1;
}
HWND GetProcessHWND(unsigned int nPID)
{
MYFINDSTRUCT p;
p.hWnd = 0;
p.dwPID = nPID;
EnumWindows(MyWndEnum,(LPARAM)&p);
return p.hWnd;
}
相关文章:
- 如何将一个窗口保留在另一个应用程序窗口的前面
- 在C++中获取应用程序窗口的大小
- 如何隐藏最大化和最小化按钮并在qml应用程序窗口中显示关闭按钮?
- 当电子的窗口隐藏时如何激活另一个应用程序窗口
- 如何在QT中获取背景应用程序窗口标题
- 您如何使用Winrt创建经典的Win32应用程序窗口
- 当模式窗口最小化时,最小化所有应用程序窗口(在 Linux 上)
- 更改 C++ 应用程序的应用程序窗口图标
- 仅从 EnumDesktopWindows 识别应用程序窗口
- 隐藏自定义应用程序窗口,但应在任务栏上显示应用程序图标(不是作为托盘图标)
- 如何在应用程序窗口中设置光标位置?(C )
- QT QML - 在 C++ 的现有应用程序窗口中显示一个矩形
- 如何通过QT 5.6设置QML应用程序窗口透明
- 打开不同的图像文件,并使用GDI 库在主应用程序窗口的背景上绘制它们
- 获取应用程序窗口的完整目录
- 在linux中动态地将应用程序窗口排列在一个又一个之上
- 在Gnome或KDE中以编程方式移动桌面上的应用程序窗口
- Qt5.6 RHEL全屏应用程序窗口和子窗口
- Visual Studio 2012应用程序窗口创建/调整大小与VS2008窗口创建不同?为什么?
- QtQuick2 无法将应用程序窗口关闭信号连接到方法(C++新手)