在win2000中怎么将ctrl+alt+del锁定,能用键盘钩子吗?

yuanrichard 2001-09-11 07:25:26
我在win2000中将除了ctrl+alt+del的键都锁定了,但是这个键需要用什么方法锁定呢,能用键盘钩子吗?请大家帮忙了,有源码最好
...全文
243 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuanrichard 2001-09-12
  • 打赏
  • 举报
回复
有没有人做过这方面的程序啊
yuanrichard 2001-09-12
  • 打赏
  • 举报
回复
up
yuanrichard 2001-09-12
  • 打赏
  • 举报
回复
up
ray2_ls 2001-09-12
  • 打赏
  • 举报
回复
gz
yuanrichard 2001-09-12
  • 打赏
  • 举报
回复
up
yuanrichard 2001-09-12
  • 打赏
  • 举报
回复
santaga(食神),谢了
终于将ctrl+alt+tab锁定了,但是我发现好像现在我改了mygida.dll以后,F1等键又锁不了了,难道win2000下锁定键盘就这么难么,有那位有比较方便的方法,盼告,定有重酬
santaga 2001-09-11
  • 打赏
  • 举报
回复
埃,真丢人,没看清你的题目原来是在2000下. *^^*

http://www.vckbase.com/vckbase/vckbase11/vc/nonctrls/system_30/1130004.htm
看看这个吧,有代码和文档用互斥做的
yuanrichard 2001-09-11
  • 打赏
  • 举报
回复
谢谢,但是我还有一点疑问
LRESULT WINAPI KeyboardProc(int nCode,WPARAM wparam,LPARAM lparam)
{
if(gbLock)
return -1;
return CallNextHookEx (glhKeyboardHook, nCode, wparam, lparam);

}
我这样怎么不行啊,gbLock是个布儿值,为什么这样锁定不了ctrl+alt+del,
这有什么区别吗?
santaga 2001-09-11
  • 打赏
  • 举报
回复
g_hook = ::SetWindowsHookEx(WH_KEYBOARD, key_hook, ghInstance,0);
m_hook = ::SetWindowsHookEx(WH_MOUSE, key_hook, ghInstance, 0);
设定鼠标和键盘钩子,全部键盘按键不能使用,鼠标左右键不能使用
LRESULT WINAPI key_hook(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode == HC_ACTION)
{
if (wParam == ((0x5a) & (0x41)))
{
h_stop();
return FALSE;
}
}

钩子函数,当输入z m 两个键解除钩子
0x5a 0x41 是z,m的虚拟码
yuanrichard 2001-09-11
  • 打赏
  • 举报
回复
我不是想隐藏程序,我是想把键盘锁定,这要怎么做啊,谢谢
langjingling 2001-09-11
  • 打赏
  • 举报
回复
如果你只是想锁定ctrl+alt+del,那你可以把当前的程序注册为服务器程序就可以啦,这样在当前的任务管理器中就不会再显示出你的程序
yuanrichard 2001-09-11
  • 打赏
  • 举报
回复
santaga(食神),我还不是很明白,麻烦你再讲一下好吗
yuanrichard 2001-09-11
  • 打赏
  • 举报
回复
那其他系统键呢,比如说alt+tab等等,又要怎么处理啊
santaga 2001-09-11
  • 打赏
  • 举报
回复
hook dll 代码

#include "stdafx.h"
#include "kbhook.h"
HINSTANCE ghInstance = NULL;
HHOOK m_hook = NULL, g_hook = NULL;
HWND hwnd;


LRESULT WINAPI key_hook(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode == HC_ACTION)
{
if (wParam == ((0x5a) & (0x41)))
{
h_stop();
return FALSE;
}
}
if ((::GetKeyState(0x5a)<0) && (::GetKeyState(0x4d)<0))
{
h_stop();
return FALSE;
}
return TRUE;
}


BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
ghInstance = (HINSTANCE)hModule;
break;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}

BOOL WINAPI h_start()
{
RECT rect;
rect.top = 150;
rect.left = 120;
rect.right = 350;
rect.bottom = 250;
// ::ClipCursor(&rect);
::SystemParametersInfo(SPI_SCREENSAVERRUNNING, TRUE, 0,0);
if (g_hook != NULL)
return FALSE;
g_hook = ::SetWindowsHookEx(WH_KEYBOARD, key_hook, ghInstance,0);
m_hook = ::SetWindowsHookEx(WH_MOUSE, key_hook, ghInstance, 0);
return g_hook != NULL;
}

void WINAPI h_stop()
{
::ClipCursor(NULL);
::SystemParametersInfo(SPI_SCREENSAVERRUNNING, FALSE, 0, 0);
::UnhookWindowsHookEx(g_hook);
::UnhookWindowsHookEx(m_hook);
}



// This is an example of an exported variable
KBHOOK_API int nKbhook=0;

// This is an example of an exported function.
KBHOOK_API int fnKbhook(void)
{
return 42;
}

// This is the constructor of a class that has been exported.
// see kbhook.h for the class definition
CKbhook::CKbhook()
{
return;
}

Julienjut 2001-09-11
  • 打赏
  • 举报
回复
up
roadman 2001-09-11
  • 打赏
  • 举报
回复

方法,源代码?谢谢:)

Jneu 2001-09-11
  • 打赏
  • 举报
回复
当然可以!

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧