在VC中怎样才能结束一个进程
如题 问题点数:20、回复次数:12Top
1 楼yuecaiqiang(快乐兔子)回复于 2005-06-02 20:34:01 得分 0
请给出相关代码,如:要结束line.exe这个程序Top
2 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2005-06-02 21:36:01 得分 2
PostMessage(hWnd,WM_CLOSE,0,0);Top
3 楼xyw2278(启明星)回复于 2005-06-02 21:48:15 得分 2
pi = CreateProcess ( ... "line.exe" .....)
CloseHandle(pi)Top
4 楼hiiiiiijiang(等待毕业)回复于 2005-06-03 07:26:24 得分 2
1,Findwindow
2,Postmessage
呵呵,楼上的,你帮人再开一个,又关了^_^Top
5 楼yuecaiqiang(快乐兔子)回复于 2005-06-03 17:31:17 得分 0
参再详细点吗?Top
6 楼younggle(洋溢)回复于 2005-06-03 17:59:56 得分 5
找到该进程的ID,再把它杀掉。
DWORD aProcesses[ 1024 ];
DWORD cbNeeded = 0;
EnumProcesses( aProcesses, sizeof( aProcesses );
DWORD cProcesses = cbNeeded / sizeof( DWORD );
for( DWORD idx = 0; idx < cProcesses; idx++ )
{
HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,
FALSE, aProcesses[idx]);
CString sName("");
if( NULL != hProcess )
{
HMODULE hMod;
DWORD cbNeeded;
if( EnumProcessModules( hProcess, &hMod, sizeof( hMod ), &cbNeeded ) )
{
DWORD dw = GetModuleBaseName( hProcess, hMod, sName.GetBuffer( MAX_PATH ),
MAX_PATH );
sName.ReleaseBuffer();
}
if(sName.CompareNoCase("link.exe") == 0)
{
TerminateProcess( hProcess, 0 );
}
CloseHandle( hProcess );
}
}Top
7 楼palmax(用上VS2005了)回复于 2005-06-03 21:50:47 得分 2
WinExec("Taskkill /fi \"imagename eq line.exe\" /f",SW_HIDE);Top
8 楼palmax(用上VS2005了)回复于 2005-06-03 21:52:00 得分 2
忘了说一句,上面的方法在xp下是可行的,其他系统没试过Top
9 楼yuecaiqiang(快乐兔子)回复于 2005-06-04 10:41:55 得分 0
palmax(南宫煌):
能给出这个:WinExec("Taskkill /fi \"imagename eq line.exe\" /f",SW_HIDE);的一段代码吗?
Top
10 楼WuOu(天堂*蓝珀湖*仰音*诚彦)回复于 2005-06-04 10:44:36 得分 2
TerminateProcess.Top
11 楼palmax(用上VS2005了)回复于 2005-06-04 15:38:01 得分 2
void CYourDlg::OnButtonKillProcess()
{
WinExec("Taskkill /fi \"imagename eq line.exe\" /f",SW_HIDE);
}
//
有点不明白楼主的意思,taskkill 是 xp 中 结束进程的命令,其中/fi 是筛选器,/f表示强行结束,用sw_hide是不让用户知道你在这么做 :)Top
12 楼ShiGang(Sucess)回复于 2005-06-04 15:59:07 得分 1
真不行的話,來最后一招狠的.
TerminateProcessTop




