
本站地址:http://www.bajiao123.com

若GINADLL不存在,新建即可。
再重启计算机后myGina即为系统使用。
2) 全局HOOK、DLL编写
采用BORLAND C++Bulider 6.0(以下简称BCB)编写安装全局HOOK的DLL文件。BCB是一款优秀的C/C++语言开发工具,可以快速开发高质量的Windows程序。下面介绍简要步骤:
I. 利用BCB新建向导,建立一个DLL工程。在此DLL中我们将有条件的安放两个HOOK。一个用于捕获系统功能热键并屏蔽,另一个用作客户端程序的激活热键;
II. 在cpp里添加如下代码:
此段代码用于申明全局变量和导出函数。因为此DLL文件将被VB编写的客户端程序所调用,所以声明导出函数时需要将语句extern ”C” 放置在声明处。另外在BCB中默认的调用约定为__cdecl方式,而在VB中调用约定为__stdcall。
pragma argsused
//下面变量用于HOOK.cpp
static HHOOK hOldHook=0;/*记录上一个注册的键盘钩子*/
static HHOOK hOldHook2=0;/*记录上一个注册的键盘钩子*/
static HWND hProcWnd=0; /*记录客户程序的窗体*/
static HANDLE hInstance=0;/*DLL的句柄*/
//导出setHotKey
extern "C" __declspec(dllexport) char _stdcall ActivateKey(HWND hWnd,bool nCode,bool bWhich);
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
//用全局变量保存这个DLL的句柄
hInstance=hinst;
return 1;
}
因为客户端程序是作为后台运行的,所以我们需要给其安放个激活热键,以便用户在任何情况下通过热键呼出。所以必须通过DLL文件安放一个全局HOOK,用作激活热键。当用户按下激活热键后,DLL会截获消息并向指定的客户端程序发送激活消息。
//客户端程序热键---------------------------------------------------------------------------
LRESULT CALLBACK HotKeyProc(int nCode,WPARAM wParam,LPARAM lParam)
{
bool fEatKeystroke = FALSE;
//PKBDLLHOOKSTRUCT p = NULL;
if (nCode == HC_ACTION) {
switch (wParam)
{
case WM_KEYDOWN: case WM_SYSKEYDOWN:
case WM_KEYUP: case WM_SYSKEYUP:
PKBDLLHOOKSTRUCT p = (PKBDLLHOOKSTRUCT) lParam;
fEatKeystroke =
((p->flags & LLKHF_ALTDOWN) != 0)&& (p->vkCode==VK_F12);//自定义激活//热键: Alt+F12
break;
}
if(fEatKeystroke)
上一页 [1] [2] [3] [4] [5] [6] 下一页
本站地址:http://www.bajiao123.com

