转载:http://www.360doc.com/content/12/0608/10/992979_216798397.shtml HWND hWnd; // 先得到想要关闭的窗口的句柄 // 比如用FindWindow hWnd=FindWindow(NULL,_T("dlg")); if ( hWnd ==NULL ) return ; // 下面是关闭进程的两种方法 // // 如果来文的则 // ::PostMessage(hWnd,WM_CLOSE,0,0); // // 如果来武的则 // DWORD dwProcessId; // 得到该窗口的进程ID GetWindowThreadProcessId(hWnd,&dwProcessId); // 从进程ID打开进程句柄 HANDLE handle=OpenProcess(0,FALSE,dwProcessId); // 强制终止进程 TerminateProcess(handle,0); 例子:强制关闭SD卡中的导航软件 WIN32_FIND_DATA fileData; tstring strNaviDir; tstring strNaviClass; tstring strNaviWnd; // 暂时 #define KLD_NAVI_DIR L"\\SDMMC\\Navigation\\Navigation.exe" #define RT_NAVI_DIR L"\\SDMMC\\RtNavi\\RtNavi.exe" #define SD_RT_NAVI_DIR L"\\SD\\RtNavi\\RtNavi.exe" if (FindFirstFile(KLD_NAVI_DIR, &fileData) != INVALID_HANDLE_VALUE) { strNaviDir = KLD_NAVI_DIR; strNaviClass = L"CARELAND_NAVIGATION"; strNaviWnd = L"GPS - Navigation"; } else if (FindFirstFile(RT_NAVI_DIR, &fileData) != INVALID_HANDLE_VALUE) { strNaviDir = RT_NAVI_DIR; strNaviClass = L"RtNaviClass"; strNaviWnd = L"RtNavi"; } else if (FindFirstFile(SD_RT_NAVI_DIR, &fileData) != INVALID_HANDLE_VALUE) { strNaviDir = SD_RT_NAVI_DIR; strNaviClass = L"RtNaviClass"; strNaviWnd = L"RtNavi"; } HWND hNaviWnd = NULL; hNaviWnd = ::FindWindow(strNaviClass.data(), strNaviWnd.data()); DWORD dwProcessId; // 得到该窗口的进程ID GetWindowThreadProcessId(hNaviWnd,&dwProcessId); // 从进程ID打开进程句柄 HANDLE handle=OpenProcess(0,FALSE,dwProcessId); // 强制终止进程 TerminateProcess(handle,0); //::PostMessage(hNaviWnd,WM_CLOSE,0,0); |