window系統並沒有公開提供掛起程序的api,但提供了suspendthread,對乙個程式的掛起,即對該程式所有的執行緒的掛起。
首先引用標頭檔案
#include
'windows標頭檔案
#include
'windows程序與執行緒快照需要
通過建立系統程序與執行緒的快照來停止對應程序的執行緒。
1.根據名稱停止指定程序
#include
#include
#include
#include
bool suspendprocessbyname
(wchar* name)
;//這是用來存放快照程序資訊的乙個結構體。
//建立所有程序的快照
handle hprocesssanp =
createtoolhelp32snapshot0)
;if(hprocesssanp == invalid_handle_value)
//檢查錯誤
process32first
(hprocesssanp,
&pe32)
;//獲取第乙個快照資訊do;
handle hthreadsanp =
createtoolhelp32snapshot
(th32cs_snapthread,
null);
if(hthreadsanp == invalid_handle_value)
//獲取第乙個執行緒快照
thread32first
(hthreadsanp,
&th32);do
else
}while
(thread32next
(hthreadsanp,
&th32));
//下乙個執行緒快照
if(hthreadsanp)
closehandle
(hthreadsanp)
;//關閉執行緒快照}}
while
(process32next
(hprocesssanp,
&pe32));
//下乙個程序快照
closehandle
(hprocesssanp)
;//關閉程序快照
return1;
}
2.根據id掛起指定程序
原理是一樣的
#include
#include
#include
#include
bool suspendprocessbyid
(dword id)
; handle hthreadsnap =
createtoolhelp32snapshot
(th32cs_snapthread,
null);
if(hthreadsnap == invalid_handle_value)
thread32first
(hthreadsnap,
&th32);do
else
}while
(thread32next
(hthreadsnap,
&th32));
return1;
}
如果要恢復程序,則只需將上述**中的suspendthread改為resumethread即可。 python 掛起 python 請求程序掛起
我正在使用請求獲取url,例如 while true try rv requests.get url,timeout 1 dosth rv except socket.timeout as e print e except exception as e print e 執行一段時間後,它會退出工作狀...
列舉WINDOWS程序和執行緒的建立 掛起 喚醒操作
列舉windows中程序需要使用openprocess,enumproces odules,getmodulebasename,enumprocesses函式,而建立執行緒用的是createthread函式。對程序的列舉例項在msdn中有,搜尋enumprocesses函式就會找到鏈結,需要新增pa...
用oradebug掛起程序
oradebug可以幫助我們做很多事情,如dump記憶體資訊 設定事件 掛起程序等。本文主要介紹如何使用oradebug掛起程序。為什麼要掛起程序呢?比如因為開發人員對資料庫執行乙個很大的操作,嚴重影響了資料庫的正常執行,此時你有兩個選擇 1 刪掉程序 2 暫停程序 實際上,我們往往不能十分確定把程...