win32根據程序名獲取程序ID或者終止程序

2021-08-27 04:00:02 字數 1738 閱讀 4195

第一部分:

根據程序名獲取程序id。

首先我們需要了解三個windows api函式:

handle winapi createtoolhelp32snapshot(

dword dwflags,

dword th32processid

);

createtoolhelp32snapshot函式可以得到系統程序快照的控制代碼,如果函式呼叫成功返回快照控制代碼,否則返回invalid_handle_value。函式包含在頭中。

bool winapi process32first(

handle hsnapshot,

lpprocessentry32 lppe

);

process32first函式查詢系統程序快照中的第乙個程序。

bool winapi process32next(

handle hsnapshot,

lpprocessentry32 lppe

);

process32next函式配合process32first函式通過迴圈列出系統中其它程序。

查詢特定程序的id的函式如下所示:

/*

*@brief 根據程序名獲取程序id

@param lpprocessname程序名稱

*/dword __getprocesshandle(lpctstr lpprocessname)//根據程序名查詢程序pid

processentry32 pe32;//宣告程序入口物件

pe32.dwsize = sizeof(processentry32);//填充程序入口物件大小

::process32first(hsnapshot, &pe32);//遍歷程序列表

do } while (::process32next(hsnapshot, &pe32));

::closehandle(hsnapshot);

return dwret;//返回

}

第二部分

通過程序名來終止程序。

還是通過上面三個函式來查詢特定的程序,不過還需要另外兩個函式:

handle openprocess(

dword dwdesiredaccess,

bool binherithandle,

dword dwprocessid

);

openprocess函式用來打來乙個程序。

bool terminateprocess(

handle hprocess,

uint uexitcode

);

terminateprocess用來終止給定的程序。

例項如下:

/*

*@brief 根據程序名終止程序

@param lpprocessname程序名稱

*/ bool __getprocesshandle(lpctstr lpprocessname)//根據程序名查詢程序pid

} while (::process32next(hsnapshot, &pe32));

::closehandle(hsnapshot);

return proces***ist;//返回

}

win32建立子程序方法

看到網上有乙個示例,我查了先關函式,做了一些注釋,自己學習下 include include include using namespace std pragma comment lib,ws2 32 int main 該結構用於指定新程序的主視窗特性 si.cb sizeof si process...

Win32 程序相關的API

開啟程序控制代碼 通過程序id 開啟模組控制代碼 基址 根據程序控制代碼 模組名 獲取模組的檔案全路徑 根據程序控制代碼 模組控制代碼 獲取模組的檔名 根據程序控制代碼 模組控制代碼 獲取模組的映象大小 入口位址 通過程序控制代碼 模組起始位址 讀取程序的記憶體 獲取程序的所有模組的控制代碼 inc...

Win32之程序建立過程

程序提供程式所需要的資源,如 資料 等等 程序扮演的角色僅僅是為當前程式提供資源,或者 這就是程序所提供的,當時程式執行的狀態和程序沒有關係,程序可以看做空間的概念 例子 程序相當於乙個房子,房子裡面的東西,這些東西就是程序提供的 房子裡面走來走去的人,和使用東西的人,就是執行緒 你看到的這些東西就...