00用模組名稱來鑒別是不是當前執行的進程

Post date: 2012/3/27 上午 07:56:27

#include <windows.h>

#include <tlhelp32.h>

#include <string.h>

#include <stdlib.h>

#include <stdio.h>

int main(int argc, char* argv[])

{

// 調用API函數MessageBox

int nSelect = ::MessageBox(NULL, "Hello, Windows XP", "Greetings", MB_OKCANCEL);

PROCESSENTRY32 pe;

pe.dwSize=sizeof(pe);

HANDLE hCallerPro = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,NULL);

if(hCallerPro == INVALID_HANDLE_VALUE)

return;

//遍曆進程,得到當前進程的PROCESSENTRY32結構

BOOL bMore = ::Process32First(hCallerPro, &pe);

while(bMore)

{

//用模組名稱來鑒別是不是當前執行的進程

if(strcmp(pe.szExeFile,"01FirstApp.exe") == 0)

{

::OutputDebugString("Get Window\n");

//將GetGetCurrentProcessId得到的進程ID和這個ID比較

//相同則程式結束

if(pe.th32ProcessID == ::GetCurrentProcessId())

{

//為什麼程式總是不能到達這個位置

::OutputDebugString("Id is equal\n");

return;

}

}

bMore = ::Process32Next(hCallerPro, &pe);

}

::CloseHandle(hCallerPro);

if(nSelect == IDOK)

printf(" 用戶選擇了“確定”按鈕 \n");

else

printf(" 用戶選擇了“取消”按鈕 \n");

return;

}