判斷指定的程序或程式是否存在方法
一、判斷指定程式名的程序是否存在
view plain
bool callback ipenumfunc(hwnd hwnd,lparam lparam)
}
return 1;
}
二、判斷指定程序名的程序是否存在
view plain
dword getprocessidfromname(lpctstr name)
}
closehandle(hsnapshot);
return id;
}
如果返回值不為零,則存在,否則不存在。
三、vc判斷程式呼叫的外部程序是否結束
view plain
process_information pi;
startupinfo si;
memset(&si,0,sizeof(si));
si.cb=sizeof(si);
si.wshowwindow=sw_hide;
si.dwflags=startf_useshowwindow;
bool fret=createprocess(null,str.getbuffer(str.getlength()),null,false,null,normal_priority_class | create_no_window,null,null,&si,&pi);
///判斷
dword exitcode;
exitcode=still_active;
while(exitcode==still_active)
四、vc判斷程序是否存在?比如我想知道記事本是否執行,要用到哪些函式?
view plain
enprocess(process_query_information | process_vm_read, false,aprocesses[i]);
// 取得特定pid的程序名
if (hprocess )
}
}//end of if (hprocess)
}//end of for
//沒有找到相應的程序名,返回0
closehandle(hprocess);
return 0;
}
也可以列舉得到所有程序的應用程式名,然後和知道應用程式名比較判斷。
五、實現程式只執行一次的方法
實現程式只執行一次的方法很多,但是原理都是一樣的,就是執行第一次的時候設定乙個標記,每次執行的時候檢查該標記,如果有就說明已經執行了。
具體實現:
1、在程式初始化的時候 (initinstance()) 列舉所有的視窗,查詢本程式的例項是否存在
2、在主視窗初始化的時候在本視窗的屬性列表中新增乙個標記,以便程式查詢.
部分關鍵** :
view plain
hwnd oldhwnd = null;
enumwindows(enumwndproc,(lparam)&oldhwnd); //列舉所有執行的視窗
if(oldhwnd != null)
2、新增enumwndproc視窗過程函式://新增的標識只執行一次的屬性名
view plain
cstring g_szpropname = "your prop name "; //自己定義乙個屬性名
handle g_hvalue = (handle)1; //自己定義乙個屬性值
bool callback enumwndproc(hwnd hwnd,lparam lparam)
return true;
}
3、在主視窗的 oninitdialog()中新增屬性 //設定視窗屬性
setprop(m_hwnd,g_szpropname,g_hvalue);
再次啟動時,先檢查當前存在的所有視窗,如果有標題相同的,則把先前執行的視窗當成當前視窗
我的程式如下:
view plain
hwnd hwnd_exist;
hwnd_exist=::getdesktopwindow();
hwnd_exist=::getwindow(hwnd_exist,gw_child);
for(;;)
char s[256];
memset(s,0,256);
::sendmessage(hwnd_exist,wm_gettext,255,(long)s);
if(strstr(s, "****** ")!=null)
break;
hwnd_exist=::getwindow(hwnd_exist,gw_hwndnext);
}
if(hwnd_exist != null)
宣告乙個全域性 cmutex 變數:
view plain
return false;
::createmutex(null, true, m_pszexename);
if(error_already_exists == getlasterror())
pprevhwnd-> setforegroundwindow();
pprevhwnd-> getlastactivepopup()-> setforegroundwindow();
return false;
}
pprevhwnd = pprevhwnd-> getwindow(gw_hwndnext);
}
trace( "could not fond frevious instance main window ! ");
return false;
}
建立乙個全域性的互斥量,每次啟動時檢查是否存在。
view plain
;
if( ::getlasterror() == error_already_exists)
};
return true;
}
判斷子程序是否存在
if kill pidt,0 0 child process has dead.else child alive 前提條件是,父程序已經處理了sigchld.否則,此檢測方法將失效 unix 環境高階程式設計 的解釋為 kill pid t pid,int signo posix將編號為0的訊號定義...
python判斷程序是否存在
coding utf 8 import win32com.client def check exsit process name wmi win32com.client.getobject winmgmts processcodecov wmi.execquery select from win32...
shell 判斷程序檔案是否存在
判斷增量指令碼程序是否還在 ps ef grep sh new sync data.sh grep v grep grep v vim dev null if ne 0 then mkdir p proccesslog dev null echo error new sync data.sh 指令碼...