能力值:
( LV2,RANK:10 )
2 楼
好东西,学习了
能力值:
(RANK:10 )
3 楼
Thanks for share.
上传的附件:
能力值:
( LV3,RANK:20 )
4 楼
XIEXIE
能力值:
( LV2,RANK:10 )
5 楼
咋 解 锁 啊
能力值:
( LV12,RANK:230 )
6 楼
第一次运行程序的时候会提示你设置密码,然后程序把密码放在c:\windows\win.ini下,第二次运行就不提示设置密码了,直接从上面那个文件里面读取
能力值:
( LV2,RANK:10 )
7 楼
//禁用任务管理器
s_hMutex = CreateMutex(0, FALSE, _T("Local\\TASKMGR.879e4d63-6c0e-4544-97f2-1244bd3f6de0"));
这个互斥体能创建成功吗?
能力值:
( LV12,RANK:230 )
8 楼
当然能,你如果是xp的话就不用创建了,是win7的话,必须创建互斥体,任务管理器才以为已经有一个实例了,就不运行了
能力值:
( LV2,RANK:10 )
9 楼
谢谢分享,学习了
能力值:
( LV2,RANK:10 )
10 楼
不错,谢谢分享
能力值:
( LV4,RANK:50 )
11 楼
Comctl32.lib Comctl32.h少二个文件
能力值:
( LV3,RANK:20 )
12 楼
其实不用禁止任务管理器吧。。直接循环置顶。。。
能力值:
( LV2,RANK:10 )
13 楼
学习了 。
能力值:
( LV9,RANK:610 )
14 楼
加几行 禁止Windows 键
if (pKHS->vkCode == VK_LWIN
|| pKHS->vkCode == VK_RWIN)
{
return TRUE;
}
能力值:
( LV3,RANK:20 )
15 楼
[QUOTE=blueapplez;1113428]加几行 禁止Windows 键
if (pKHS->vkCode == VK_LWIN
|| pKHS->vkCode == VK_RWIN)
{
return TRUE;
} [/QUOTE]
win7表示还需要禁止ctrl+alt+del。。。
能力值:
( LV12,RANK:230 )
16 楼
vc6.0自带这几个文件啊
能力值:
( LV12,RANK:230 )
17 楼
这个真没办法,不知道虚拟机是怎么做的,虚拟机里面按ctrl+alt+del就不管用
能力值:
( LV12,RANK:230 )
18 楼
[QUOTE=blueapplez;1113428]加几行 禁止Windows 键
if (pKHS->vkCode == VK_LWIN
|| pKHS->vkCode == VK_RWIN)
{
return TRUE;
} [/QUOTE]
不用那么麻烦,要是这样的话还有禁止Alt+Tab键,我是这样做的,源码我也不想改了,就这儿写出来吧,大家把Keyboard_llHookProc还是改成这样
//由虚拟码获取有效字符
BOOL GetCharByVkcode(DWORD vkCode, TCHAR &ch)
{
int nPressShift = GetKeyState(VK_SHIFT);
if(vkCode >= '0' && vkCode <= '9')
{
if(nPressShift == (-127) || nPressShift == (-128))//shift键被按下
{
switch(vkCode)
{
case '0':
ch = ')';
break;
case '1':
ch = '!';
break;
case '2':
ch = '@';
break;
case '3':
ch = '#';
break;
case '4':
ch = '$';
break;
case '5':
ch = '%';
break;
case '6':
ch = '^';
break;
case '7':
ch = '&';
break;
case '8':
ch = '*';
break;
case '9':
ch = '(';
break;
}
}
else
{
ch = (CHAR)vkCode;
}
}
else if(vkCode >= 'A' && vkCode <= 'Z')
{
if(!GetKeyState(VK_CAPITAL))
{
ch = (CHAR)vkCode + 32;
}
else
{
ch = (CHAR)vkCode;
}
}
else if( (vkCode >= 186 && vkCode <= 192)||( vkCode >=219 && vkCode <= 222) )
{
if( nPressShift == (-127) || nPressShift == (-128) )//shift键被按下
{
switch(vkCode)
{
case 186:
ch = ':';
break;
case 187:
ch = '+';
break;
case 188:
ch = '<';
break;
case 189:
ch = '_';
break;
case 190:
ch = '>';
break;
case 191:
ch = '?';
break;
case 192:
ch = '~';
break;
case 219:
ch = '{';
break;
case 220:
ch = '|';
break;
case 221:
ch = '}';
break;
case 222:
ch = '\"';
break;
}
}
else
{
switch(vkCode)
{
case 186:
ch = ';';
break;
case 187:
ch = '=';
break;
case 188:
ch = ',';
break;
case 189:
ch = '-';
break;
case 190:
ch = '.';
break;
case 191:
ch = '/';
break;
case 192:
ch = '`';
break;
case 219:
ch = '[';
break;
case 220:
ch = '\\';
break;
case 221:
ch = ']';
break;
case 222:
ch = '\'';
break;
}
}
}
else
{
return FALSE;
}
return TRUE;
}
LRESULT CALLBACK Keyboard_llHookProc(int code, WPARAM wParam, LPARAM lParam)
{
PKBDLLHOOKSTRUCT pKHS = (PKBDLLHOOKSTRUCT) lParam;
TCHAR ch;
if(code < 0)
return CallNextHookEx(g_hKeyboardHook, code, wParam, lParam);
switch(pKHS->vkCode)
{
case VK_HOME:
case VK_END:
case VK_LEFT:
case VK_RIGHT:
case VK_BACK:
case VK_DELETE:
break;
default:
{
if(!GetCharByVkcode(pKHS->vkCode, ch))
return TRUE;
}
}
return CallNextHookEx(g_hKeyboardHook, code, wParam, lParam);
}
能力值:
( LV2,RANK:10 )
19 楼
哥们,我想问下,你的那个屏蔽任务管理器的代码,为什么要建一个互斥对象,而且这个对象Local\\TASKMGR.879e4d63-6c0e-4544-97f2-1244bd3f6de0,问下,这个互斥名称是
如何得到的???求解,你是如何知道的
。。。。
能力值:
( LV3,RANK:20 )
20 楼
看到win2k里的做法
const TCHAR cszStartupMutex[] = TEXT("NTShell Taskman Startup Mutex");
但原理应该一样.接着Taskmgr就会判断下之前有没有这个互斥
g_hStartupMutex = CreateMutex(NULL, TRUE, cszStartupMutex);
if (g_hStartupMutex && GetLastError() == ERROR_ALREADY_EXISTS)
{
// Give the other instance (the one that owns the startup mutex) 10
// seconds to do its thing
WaitForSingleObject(g_hStartupMutex, FINDME_TIMEOUT);
}
如果存在了, 就表示自己曾经起来过, 当前的taskmgr会等待10s让其他的taskmgr实例完成初始化操作.
能力值:
( LV6,RANK:80 )
21 楼
看了楼主的马子,很不错哟!!!
VK_MENU,就是键盘上那个菜单键没屏蔽吧,另外在XP下确实不用创建任务管理器的互斥体也能屏蔽掉CTRL+ALT+DEL,至于WIN7上不晓得了。。。。。。。。。