CBT鉤子實現解決程式間的衝突

2021-04-12 16:17:01 字數 2164 閱讀 3811

可能在執行乙個程式

a時,將執行的程式與正在執行的某個程式

b衝突。下面用乙個

cbt鉤子實現當乙個程式

a啟動時,關閉與本程式衝突的其它程式b。

1、首先寫乙個動態鏈結庫

cbthooks

。它實現乙個全域性

cbt鉤子監視程式

a的啟動(實際上是監視程式

a中某視窗類的建立)。

2、建立乙個名為

testhook

的mfc exe

程式來為系統安裝鉤子。

cbthooks

:宣告全域性變數:

static hhook g_hhook = null;

static handle g_hmodule = null;

鉤子過程:

lresult callback cbtproc(int ncode, wparam wparam, lparam lparam)

break; }

}return callnexthookex(g_hhook, ncode, wparam, lparam);

}匯出安裝、解除安裝鉤子函式:

//安裝鉤子

cbthooks_api void installhook(void) //

解除安裝鉤子

cbthooks_api void uninstallhook(void)

注:#define cbthooks_api extern "c" __declspec(dllexport)

其它函式:

//殺死

exe相關程序

bool killprocbyexe( char* killexe)

pe32.dwsize = sizeof( processentry32 );

if( !process32first( hprocesssnap, &pe32 ) ) //

列舉程序do

//closehandle( hprocesssnap );

//return( true ); }

} while( process32next( hprocesssnap, &pe32 ) );

closehandle( hprocesssnap );

return( true );}//

得到程序相關可執行檔案位置

bool getproces**odules( dword dwpid , char* killexe)

// set the size of the structure before using it.

me32.dwsize = sizeof( moduleentry32 );

// retrieve information about the first module,

// and exit if unsuccessful

if( !module32first( hmodulesnap, &me32 ) )

if(strncmp(me32.szexepath, killexe, sizeof(killexe)) == 0)

return( true);

closehandle( hmodulesnap );

return( false );}//

讀取配置檔案

char* getvalfromini(const char* keyname)

strcat(chrmodule, "hook.ini"); //

獲得變數值

static char chrval[1024];

getprivateprofilestring( "hook", keyname, null, chrval, 1024, chrmodule);

return chrval;

}testhook:

宣告函式指標:

typedef void (*puninstallhook)();

typedef void (*pinstallhook)();

pinstallhook installhook;

puninstallhook uninstallhook;

安裝鉤子:

void ctesthookdlg::onbutton1()

}解除安裝鉤子:

void ctesthookdlg::onbutton2()

}

PHP的鉤子實現解析

php程式設計的鉤子實現,示例講解和解釋它們的作用,寫了乙個樣板的鉤子實現 鉤子是程式設計裡乙個常見的概念,非常的重要。它使得系統變得非常容易拓展 而不用理解其內部的實現機理,這樣可以減少很多任務作量 只要有乙個鉤子樣本,能很容易仿照第乙個鉤子快速的編寫第二個鉤子,這裡對鉤子進行乙個簡單的理解。下面...

hash演算法的底層實現邏輯及衝突的解決方式

很多小夥伴面試時,會碰到面試官問到如何解決雜湊衝突的問題,要理解雜湊衝突,首先要弄清楚hash函式和hash表 雜湊 一 雜湊表 hash函式 所謂hash函式其實就是指一類加密演算法 md5 sha等 將任意長度的輸入變換為固定長度的輸出的不可逆的單向密碼體制,即index hash key 簡單...

微信小程式單擊事件與長按事件衝突的解決辦法

眾所周知,在小程式中,長按事件一鬆手是會觸發單擊事件的,而在我們的實際需求中,往往是需要單擊事件和長按事件並存的。然而,小程式卻又好像想到了這種情況似的,給了我們乙個觸控開始,乙個觸控結束 也就是,一共有四個事件 這就給了我們手動區別長按與單擊的可能 我們希望的效果是 1.單擊就是單擊,沒有什麼可解...