想用PB判斷一個Windows程式是否在運行著。
用以下函式,老是不成功:(Win7下面) 大家有更好的辦法么?
integer li_size=144,li_result
string ls_executable=Space(li_size)
integer li_module_usage
uint li_module_handle
li_result=FindExecutable(as_filename,as_directory,ls_executable)
IF li_result<32 THEN Return FALSE
//如可執行檔案已載入,獲取這個執行檔案的句柄
li_module_handle=GetModuleHandle(ls_executable)
IF li_module_handle<1 THEN
//沒有載入
Return FALSE
ELSE
//獲取有多少個實體被載入
li_module_usage=GetModuleUsage(li_module_handle)
Return TRUE
END IF
uj5u.com熱心網友回復:
這個只能判斷當前行程是否載入,判斷外部程式應該遍歷行程,查看程式是否存在uj5u.com熱心網友回復:
哦?還得遍歷行程呢? FindExecutable判斷行程是否載入,并不能判斷外部程式是否運行是么?看來有點復雜啊。。
uj5u.com熱心網友回復:
判斷程式是否運行,可以使用一個函式HANDLE CreateMutex(
LPSECURITY_ATTRIBUTES lpMutexAttributes,
BOOL bInitialOwner,
LPCTSTR lpName
);
創建一個互斥變數,每一次運行回傳一個句柄。
如果是第二次運行,創建互斥量就是會失敗,
回傳值有可能是ERROR_ALREADY_EXISTS說明互斥變數已經存在。
這是我的一點創建,自己看MSDN參考吧。
uj5u.com熱心網友回復:
另外一個方法,是使用DLL,創建一個共享記憶體,記錄你程式的運行資料。這樣也可以處理了。
uj5u.com熱心網友回復:
這個問題我以前遇到過,且已經解決:http://bbs.csdn.net/topics/390192251
uj5u.com熱心網友回復:
我自己寫的一個DLL檔案,匯出了IsRun函式,傳入可執行檔案的路徑即可判斷程式是否在執行,需要的留下郵箱或者給我留言!uj5u.com熱心網友回復:
支持一下。我也在關注這個問題。。uj5u.com熱心網友回復:
filemove失敗,證明已被運行或占用轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/48275.html
標籤:API 調用
上一篇:求pb進銷存系統代碼。有誰有啊?
