/*
頭檔案:#include "tlhelp32.h"
函式名稱:Exception()
創建日期:20170330 LuckyRen
功能描述:平臺打開軟體的例外處理修復(將軟體狀態置為初始狀態)
引數描述:strname: 軟體名稱
*/
void CStackedWndCtrl::SoftException(CString strname)
{
// 以查行程方式檢查程式是否已經運行
//strname=_T("MDW-C.exe");
strname = strname + _T(".exe"); //行程檔案名
BOOL bJudge=false;
DWORD procID; //本行程ID
DWORD parentID; //父行程ID
bJudge=GetProcessID(strname,procID,parentID);//獲取指定行程檔案名行程
if(!bJudge)
{//如果對應軟體例外退出,將軟體狀態置為初始狀態
theApp.g_StateFlag = TRUE;
}
}
/*
函式名稱:GetProcessID()
創建日期:20170330 LuckyRen
功能描述:獲取指定行程
引數描述:ProcessName:行程名稱 hProcID:本行程ID ParentID:父行程ID
*/
BOOL CStackedWndCtrl::GetProcessID(CString ProcessName, DWORD &hProcID, DWORD &ParentID)
{
int con=0; //查找到的行程數
CString str;
PROCESSENTRY32 pe32;
pe32.dwSize=sizeof(pe32);
//獲得系統內所有行程快照
HANDLE hProcessSnap=::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if(hProcessSnap==INVALID_HANDLE_VALUE)
{
return FALSE;
}
//列舉串列中的第一個行程
BOOL bProcess = Process32First(hProcessSnap,&pe32);
while(bProcess)
{
str=pe32.szExeFile;
if(str == _T("MDW-C.exe"))
{ //測驗獲取指定檔案名行程
//AfxMessageBox(str);
}
//比較行程名,找到要找的行程名
if(ProcessName.CompareNoCase(str)==0)
{
con++; // 行程數加1 (查找到的行程數)
}
//繼續查找
bProcess = Process32Next(hProcessSnap,&pe32);
}
CloseHandle(hProcessSnap);
if(con>=1)
return TRUE; // 行程已經啟動
else
return FALSE; // 行程沒有啟動
}
uj5u.com熱心網友回復:
推薦使用spy4win軟體。uj5u.com熱心網友回復:
代碼應該沒什么問題.只是要注意權限問題, 沒權限, 有些行程你可能獲取不到.
uj5u.com熱心網友回復:
使用Spy++轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/105243.html
標籤:進程/線程/DLL
