求屏蔽系统ctrl+alt+del三键的原码。因要做成DLL请各位指点一下!
因为要在VB中用谢 谢 。。
因为要在VB中用谢 谢 。。
解决方案 »
- 以下代码播放几个MP3文件时,为什么播放过的MP3文件不能再次进行播放,且总是播放最后一次播放的文件
- DynamicSkinForm 控件使用请教一下用过这个控件的前辈,指点一二,谢谢
- 如何控制窗口的显示位置
- 请问如何给控件加上ToolTip?
- 关于多表头DBGridEh导出Excel文件的问题
- 怎样彻底删除数据?
- 请问如何制作特殊格式输入文本框?高分在线等待
- 怎样在一个button中调用dbnagativor的保存(勾)事件!在线等待
- 主窗体上放了ADOQuery,结果设置设置DataSource的DataSet属性却只能选择子窗体的ADOQuery?
- 高分求教delphi的毕设题目
- 有哪位兄弟知道广州普信科技怎么样?
- 编写一个richedit类似的控件,且能够在里面显示输入框(TEdit),Combobox等,
一个变通的办法:
因为你肯定是单任务形式的,所以你可以用CreateProcess创建进程,等待进程结束
后,重新LockSystem,这是一个单任务的函数,你程序里调用就行了(我也是超的):function WinExecAndWait32(FileName:String; Visibility : integer):integer;
var
zAppName:array[0..512] of char;
zCurDir:array[0..255] of char;
WorkDir:String;
StartupInfo:TStartupInfo;
ProcessInfo:TProcessInformation;
tmp :DWORD;
begin
StrPCopy(zAppName,FileName);
GetDir(0,WorkDir);
StrPCopy(zCurDir,WorkDir);
FillChar(StartupInfo,Sizeof(StartupInfo),#0);
StartupInfo.cb := Sizeof(StartupInfo);
StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow := Visibility;
if not CreateProcess(nil,
zAppName, { pointer to command line string }
nil, { pointer to process security attributes }
nil, { pointer to thread security attributes }
false, { handle inheritance flag }
CREATE_NEW_CONSOLE or { creation flags }
NORMAL_PRIORITY_CLASS,
nil, { pointer to new environment block }
nil, { pointer to current directory name }
StartupInfo, { pointer to STARTUPINFO }
ProcessInfo) then
Result := -1 { pointer to PROCESS_INF }
else
begin
WaitforSingleObject(ProcessInfo.hProcess,INFINITE);
GetExitCodeProcess(ProcessInfo.hProcess,tmp);
Result := tmp;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var tmp:integer;
begin
tmp := 0; //屏蔽 Alt-Tab
SystemParametersInfo( SPI_SETFASTTASKSWITCH, 1, @tmp, 0); //屏蔽 Ctrl-Alt-Del
SystemParametersInfo( SPI_SCREENSAVERRUNNING, 1, @tmp, 0);
end;
偶试了一下,使用KB Hook LL都不屏蔽不掉(除Power键没试之外,就这个组合键屏蔽不掉),有人说是需要到Ring0层去,但是如果那样的不话倒不如直接截掉键盘IO。
还一种就是使用API HOOK,不过这种方法没试过,很多论坛的杂志上面都有的,楼主不防拿来试试.
{
BOOL bCtrlKeyDown =
GetAsyncKeyState(VK_CONTROL)>>((sizeof(SHORT) * 8) - 1); if ((pkh->vkCode==VK_ESCAPE && bCtrlKeyDown) || // Ctrl+Esc
(pkh->vkCode==VK_TAB && pkh->flags & LLKHF_ALTDOWN) || // Alt+TAB
(pkh->vkCode==VK_ESCAPE && pkh->flags & LLKHF_ALTDOWN)|| // Alt+Esc
(pkh->vkCode==VK_LWIN || pkh->vkCode==VK_RWIN)) { // Start Menu
if (g_bBeep && (wp==WM_SYSKEYDOWN||wp==WM_KEYDOWN))
MessageBeep(0); // only beep on downstroke if requested
return 1; // gobble it: go directly to jail, do not pass go
}
}
return CallNextHookEx(g_hHookKbdLL, nCode, wp, lp);
DLLEXPORT BOOL AreTaskKeysDisabled()
{
return g_hHookKbdLL != NULL;
}//////////////////
// Disable task keys: install low-level kbd hook.
// Return whether currently disabled or not.
//
DLLEXPORT BOOL DisableTaskKeys(BOOL bDisable, BOOL bBeep)
{
if (bDisable) {
if (!g_hHookKbdLL) {
g_hHookKbdLL = SetWindowsHookEx(WH_KEYBOARD_LL,
MyTaskKeyHookLL, MyDll.m_hInstance, 0);
} } else if (g_hHookKbdLL != NULL) {
UnhookWindowsHookEx(g_hHookKbdLL);
g_hHookKbdLL = NULL;
}
g_bBeep = bBeep; return AreTaskKeysDisabled();
}
http://www.delphifans.com/SoftView/SoftView_516.html
http://search.csdn.net/Expert/topic/2362/2362543.xml?temp=.4117853
http://search.csdn.net/Expert/topic/1920/1920870.xml?temp=.9835626网上很多资料
自己查查
祝你好运
口过程,接管WM_HOTKEY消息,以达到屏蔽Ctrl + Alt + Del之目的。
//网上呢称:聪聪
//Home Page :http://www.soft520.com
//E-Mail :[email protected]
//日期 :2004-8-23
//功能 :根据BCB_FANS(四大名捕之追杀令)在2000下屏蔽Ctrl + Alt + Del组合键的
// 技术,在Borland C++Builder 6.0 Patch4下编写远程线程注入的代码,封装
// 成DLL并输出EnabledKey和DisabledKey两个函数,使得可以在Delphi,VB等程
// 中可以使用,本程序在Windows Server 2003中文版平台下面测试通过
//开发语言:Borland C++Builder 6.0 Patch4
//文件说明:SASHOOK.dll 屏蔽Ctrl + Alt + Del的DLL
// RunDLL.dll 负责将SASHOOK.dll远程线程注入的DLL,输出EnabledKey和
// DisabledKey两个函数
// RunDLLExample.exe 对RunDLL.dll的两个函数调用 //鸣谢 :BCB_FANS(四大名捕之追杀令)
//版权 :转载请注明原作者:)// :以下为 BCB_FANS(四大名捕之追杀令)在2000下屏蔽Ctrl + Alt + Del组合键的
// 技术说明
//原理 :采用远程线程注入技术,装载一个DLL到Winlogon进程,然后截获SAS窗口的窗
// 口过程,接管WM_HOTKEY消息,以达到屏蔽Ctrl + Alt + Del之目的。
//技术比较:关于在2000下面如何屏蔽Ctrl + Alt + Del组合键,一种常被提到的解决方法就
// 是使用自己写的GINA去替换MSGINA.DLL,然后在WlxLoggedOnSAS里边直接返回
// WLX_SAS_ACTION_NONE。嘿嘿,说到底这并不是真正地屏蔽了这个组合键,只是
// 直接返回WLX_SAS_ACTION_NONE时,Winlogon进程又自动从"Winlogon"桌面切换
// 回原来的"Default"桌面了,而不是显示安全对话框,所以看起来被屏蔽了:),
// 使用那种方法明显地看到桌面在闪烁!但是使用本文的方法时,你不会看到任
// 何闪烁!源代码我这里也有,有需要找我要