建立一个对话框。
添加一个列表框,改变按钮 OK 的标题为 Close,删除 Cancel 按钮。将对话框的标题改为 TerminateTask。
在对话框中添两个按钮,标题分别为 Close App 和 Quit App。
CTerminateTaskDlg的OnInitDialog 方法中添加如下代码
BOOL CTerminateTaskDlg::OnInitDialog()
{
CDialog::OnInitDialog();
CListBox * list=(CListBox *)GetDlgItem(IDC_LIST1);
list->ResetContent();
EnumWindows(EnumWindowsProc,(LPARAM)list);
CenterWindow();
return TRUE; // return TRUE unless you set the focus to a control
}
在上边添加函数
static BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam)
{
CListBox * list=(CListBox *)lParam;
char buf[256];
GetWindowText(hwnd,buf,256);
if(strlen(buf))
{
int idx=list->AddString(buf);
list->SetItemData(idx,(DWORD)hwnd);
}
return TRUE;
}
建立 ID_BUTTON1,命名方法为 OnCloseApp,并在此方法中添加下列代码:
void CTerminateTaskDlg::OnCloseApp()
{
CListBox * list=(CListBox *)GetDlgItem(IDC_LIST1);
int idx=list->GetCurSel();
if(idx==LB_ERR)
{
MessageBox("You must select a window to active!",
"Error",MB_OK|MB_APPLMODAL);
return;
}
HWND hWnd=(HWND)list->GetItemData(idx);
::PostMessage(hWnd,WM_CLOSE,0,0L);
EndDialog(IDOK);
}
编译并运行此例子程序。
可以用HWND hWnd = ::FindWindow(NULL,"windows name") ;
关闭一个制定的程序,还可以用上边的程序查看具体的windows name,注意windows name为窗口的caption。