第28節(1 / 3)

;

UnhookWindowsHookEx(g_hMouse);當退出時將鉤子卸掉。

UnhookWindowsHookEx(g_hKeyboard);

}

return 1;

}void SetHook(HWND hwnd)此函數設置了鉤子。

{

g_hWnd=hwnd;注意這種傳遞調用它的進程的句柄的方法,比較巧妙!

g_hMouse=SetWindowsHookEx(WH_MOUSE,MouseProc,GetModuleHandle("Hook"),0);

g_hKeyboard=SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,GetModuleHandle("Hook"),0);

}Hook.DEF的代碼如下:

LIBRARY Hook

EXPORTS

SetHook @2

SEGMENTS

MySec READ WRITE SHARED 也可以設置節的屬性。

4.新建一個工程調用此鉤子函數。工程名為HookTest,基於對話框的。在OnInitDialog()中調用SetHook(),要事先聲明_declspec(dllimport) void SetHook(HWND hwnd);

然後在Project->Setting->Link->加入..\Hook\Debug\Hook.lib,並將Hook.Dll拷貝到當前目錄。

int cxScreen,cyScreen;

cxScreen=GetSystemMetrics(S·Μ_CXSCREEN);

cyScreen=GetSystemMetrics(S·Μ_CYSCREEN);

SetWindowPos(&wndTopMost,0,0,cxScreen,cyScreen,SWP_SHOWWINDOW);將窗口保持在最前麵。

SetHook(m_hWnd);

5.DLL的調試方法,設置斷點,然後運行時斷點時,step into即可。

4.數據庫編程

1.ODBC,ADO簡介:ADO可以認為是建立在ODBC上的。

ADO的三個核心對象

Connection對象

Connection對象表示了到數據庫的連接,它管理應用程序和數據庫之間的通信。 Recordset和Command對象都有一個ActiveConnection屬性,該屬性用來引用Connection對象。

Command對象

Command對象被用來處理重複執行的查詢,或處理需要檢查在存儲過程調用中的輸出或返回參數的值的查詢。

Recordset對象

Recordset對象被用來獲取數據。 Recordset對象存放查詢的結果,這些結果由數據的行(稱為記錄)和列(稱為字段)組成。每一列都存放在Recordset的Fields集合中的一個Field對象中。

2.演示在VB中使用ADO的方法,方法比較簡單,使用方便。另外在VB中演示了Connection和Command和Recordset的方法,用這三種方法都可以執行SQL語句。