1.列舉所有的任務
enumproc就是那個**函式,真正的操作,都在這個函式裡實現
第二個引數,是使用者自定義傳送的,比如這裡,可以是對話方塊的指標
enumproc的原型是
bool callback cplistdlg::enumproc(hwnd hwnd, lparam lparam)
如果是類成員函式,必須是static函式,宣告如下
bool static callback enumproc(hwnd hwnd, lparam lparam);
其中,那個hwnd hwnd就是視窗控制代碼
bool callback cplistdlg::enumproc(hwnd hwnd, lparam lparam)
if (hwnd == pdlg->m_hwnd) //這是為了不把自己這個程式列出來,呵呵
if (::iswindow(hwnd) && ::iswindowvisible(hwnd) && ((getwindowlong(hwnd, gwl_exstyle)&ws_ex_toolwindow)!
=ws_ex_toolwindow) &&
(getwindowlong(hwnd, gwl_hwndparent)==0))
;::getwindowtext(hwnd, szcap, 255);
if (strlen(szcap) == 0)
if (lstrcmp(_t("program manager"),szcap) == 0)
dword dwprocessid = 0;
::getwindowthreadprocessid(hwnd,&dwprocessid);
trace( "id = %d, name = %s/n", dwprocessid, szcap );
}return true;
getwindowthreadprocessid是獲取進行的id的
if (lstrcmp(_t("program manager"),szcap) == 0)
是為了區別出program manager這個程式,不知道為什麼,會列出這個東西來,暈
2.獲取視窗的圖示
hicon hicon = null;
hicon = (hicon)::getclasslong(hwnd,gcl_hicon**);
if(hicon == null)
if(hicon == null)
if(hicon == null)
記得當時做的時候,有這些**是因為,有些視窗的圖示不能獲得,用了上述辦法以後,才能全部獲得
定義乙個bool型,來判斷當前作業系統是否是windows nt/2000以上
因為不同的作業系統,判斷程式是否執行正常的方式是不一樣的
bool m_bisnt;
獲取版本資訊
osversioninfo osver = ;
osver.dwosversioninfosize = sizeof(osversioninfo);
if (!getversionex(&osver))
if(bretval == true)
else
獲取那兩個函式指標
hmodule huser32 = ::getmodulehandle("user32");
if (!huser32)
m_pishungthread = (procishungthread) getprocaddress( huser32,
"ishungthread" );
於是判斷,視窗是否是正常執行,還是未響應
**如下
4.結束任務
::postmessage(hwnd,wm_close,0,0);
不過呼叫這個,有時候不一定一下能把視窗關了,比如視窗沒響應了,就關不了
於是,得繼續想辦法
::postmessage(hwnd,wm_close,0,0);
::sleep(300);
//如果視窗還沒有被關,繼續想辦法
if(::iswindow(hwnd))
return true ;
參考文章
關於如何判斷程式的狀態……………………
任務管理器
dim url systemutil.run e 20111108 20111108 chinese hedexlite.exe process name inputbox 請輸入程序名 程序 hedexlite process list dialog windows 任務管理器 winlistvi...
linux任務管理器
在redhat2.4.20 8下編譯通過 由於本程式視窗部分由glad工具編制,源 不易貼出,現只給出部分 函式的 1,退出 按鈕 函式 void on button9 clicked gtkbutton button,gpointer user data 2,關機 按鈕 函式 void on bu...
遮蔽「任務管理器」
適用於win nt 2k xp,引數key為true,遮蔽 任務管理器 為false,任務管理器 可用 使用方法 disabletaskmgr true procedure disabletaskmgr key boolean var reg tregistry begin reg tregistr...