hmodule getmodulehandle (lpctstrlpmodulename);
功能說明
獲取乙個特定的應用程式或動態鏈結庫的模組控制代碼,且這個模組必須已經被載入到呼叫者的程序空間中,否則呼叫loadlibrary。
getmodulehandle(null);
這將返回自身應用程式控制代碼(好像一直是0x40000000,和getcurrentprocess(一直是0xffffffff)是不一樣的,乙個是模組乙個程序,用在不同的地方)即使是在模組內,返回的也是呼叫它的應用程式的控制代碼,而不是模組本身的控制代碼。
要在模組中獲得模組本身的控制代碼,可以通過如下函式獲得,該函式通過模組內的函式獲得模組的控制代碼
hmodule modulefromaddress(pvoid pv)
else}
傳入的引數為模組內的任意函式
要獲得模組內某一匯出函式的位址
farproc getprocaddress
hmodule hmodule, // dll模組控制代碼
lpcstr lpprocname // 函式名
要獲得程序或模組的磁碟檔名,用如下函式
dword getmodulefilename(
hmodule hmodule,
lptstr lpfilename,
dword nsize
);函式引數說明:
hmodule hmodule 裝載乙個程式例項的控制代碼。如果該引數為null,該函式返回該當前應用程式全路徑。
lptstr lpfilename 是你存放返回的名字的記憶體塊的指標,是乙個輸出引數
dword nsize,裝載到緩衝區lpfilename的最大值
要獲得別的程序的全路徑 可以用getmodulefilenameex 或者命令列 wmic process
獲得自身程序id
getcurrentprocessid
獲得其他程序id
1 通過getwindowthreadprocessid函式:找出某個視窗的建立者(執行緒或程序),返回建立者的標誌符。
dword getwindowthreadprocessid(
hwnd hwnd,
lpdword lpdwprocessid);
而獲得視窗控制代碼,可以用findwindow函式
2 通過快照獲得所有程序
// 取得本程序的模組列表
handle hsnap = ::createtoolhelp32snapshot(th32cs_snapmodule, ::getcurrentprocessid());
// 遍歷所有模組,分別對它們呼叫replaceiatentryinonemod函式,修改匯入位址表
moduleentry32 me = ;
bool bok = ::module32first(hsnap, &me);
while(bok)
::closehandle(hsnap);
3 通過控制代碼獲得id
dword winapi getprocessid( _in_ handle process );
getcurrentprocessid=getprocessid(getcurrentprocess);
通過id獲得控制代碼的方法
handle openprocess(
dword dwdesiredaccess, //渴望得到的訪問許可權(標誌)
bool binherithandle, // 是否繼承控制代碼
dword dwprocessid// 程序標示符);
例如handle hprocess = openprocess( process_all_access, false, id );
setwindowshookex 其四個引數分別為鉤子型別 鉤子函式位址 鉤子函式所在dll的例項控制代碼 安裝鉤子後想監控的執行緒的id號 (設定id為0,安裝乙個全域性的鉤子)返回引數為鉤子控制代碼
Qt獲取所有程序 終止某個程序
中用到qt庫的地方,不使用qt庫的可以替換為自己相應的函式 方法一 qt開源庫,通過qprocess啟動系統命令 tasklist.exe 獲取正在執行的程序 qprocess process process.start tasklist.exe if process.waitforfinished...
安卓程序保活之Service設定為前台服務
一 前台服務和普通服務有啥區別 普通服務使用者是無法感知的,只是在後台默默執行,而且優先順序比較低 前台服務優先順序更高,記憶體吃緊的時候更不容易被 而且狀態列會顯示前台服務 設定前台服務出現通知的時候會有提示音,可通過builder.setsound null,null 設定靜音 二 如何實現 在...
Latex 缺少某個package時如何安裝
如果在編譯時遇到錯誤 latex error file sty not found.說明還需要新增package才能編譯成功。如果解壓之後的包裡只有.ins沒有.sty,則說明需要編譯。從winedt的介面下方console的windows command line進入解壓下的資料夾進行編譯 如果直...