C 判斷程序是否存在

2021-07-25 16:54:33 字數 3546 閱讀 1177

判斷指定的程序或程式是否存在方法  

一、判斷指定程式名的程序是否存在

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 指令碼...