NT下模拟Ctrl+Alt+Del
来源:互联网 发布:淘宝订单管理软件 编辑:程序博客网 时间:2024/05/17 04:50
NT下模拟Ctrl+Alt+Del
看来很多人有这个要求,5.5至今已有3人提出。但问题好象很难解决。
可以肯定,用API的方式在Windows98是行不通的。
在WIndows NT 下应该是可以实现的。但是,我试过N次,都fail.
其一:
var
HDesk_WL: HDESK;
begin
HDesk_WL := OpenDesktop ('Winlogon', 0, False, DESKTOP_JOURNALPLAYBACK);
if (HDesk_WL <> 0) then
begin
{we have open the Winlogon Desktop so assign it to our thread}
if (SetThreadDesktop (HDesk_WL) = True) then
begin
// Winlogon uses hotkeys to trap Ctrl-Alt-Del...
PostMessage(HWND_BROADCAST, WM_HOTKEY, 0, MAKELONG (MOD_ALT or MOD_CONTROL, VK_DELETE));
end
end
end;
其二:
SK_DEL = #249;
SK_SHIFT_DN = #250;
SK_SHIFT_UP = #251;
SK_CTRL_DN = #252;
SK_CTRL_UP = #253;
SK_ALT_DN = #254;
SK_ALT_UP = #255;
procedure SendKeyString(Text: String);
var
i: Integer;
Shift: Boolean;
vk, ScanCode: Word;
ch: Char;
c, s: Byte;
const
vk_keys: Array[0..9] of Byte =
(VK_HOME, VK_END, VK_UP, VK_DOWN, VK_LEFT,
VK_RIGHT, VK_PRIOR, VK_NEXT, VK_INSERT, VK_DELETE);
vk_shft: Array[0..2] of Byte = (VK_SHIFT, VK_CONTROL, VK_MENU);
flags: Array[False..True] of Integer = (KEYEVENTF_KEYUP, 0);
begin
Shift := False;
for i := 1 to Length(Text) do
begin
ch := Text[i];
if ch >= #250 then
begin
s := Ord(ch) - 250;
Shift := not Odd(s);
c := vk_shft[s shr 1];
ScanCode := MapVirtualKey(c,0);
Keybd_Event(c, Scancode, Flags[shift], 0);
end
else
begin
vk := 0;
if ch >= #240 then
c := vk_keys[Ord(ch) - 240]
else
if ch >= #228 then {228 (F1) => $70 (vk_F1)}
c := Ord(ch) - 116
else
if ch < #110 then
c := Ord(ch)
else
begin
vk := VkKeyScan(ch);
c := LoByte(vk);
end;
ScanCode := MapVirtualKey(c,0);
if not Shift and (Hi(vk) > 0) then { $2A = scancode of VK_SHIFT }
Keybd_Event(VK_SHIFT, $2A, 0, 0);
Keybd_Event(c,scancode, 0, 0);
Keybd_Event(c,scancode, KEYEVENTF_KEYUP, 0);
if not Shift and (Hi(vk) > 0) then
Keybd_Event(VK_SHIFT, $2A, KEYEVENTF_KEYUP, 0);
end;
end;
end;
procedure SendKeysToHandle(WindowHandle: hWnd; Text: String);
begin
MakeWindowActive(WindowHandle);
SendKeyString(Text);
end;
- NT下模拟Ctrl+Alt+Del
- 模拟CTRL+ALT+DEL
- WINDOWS NT/2000下如何屏蔽CTRL+ALT+DEL
- .NET下屏蔽Alt+Ctrl+Del
- 在远程桌面下发送Ctrl+Alt+Del!
- WINDOWS NT/2000下如何屏蔽CTRL+ALT+DEL http://www.vckbase.com/document/viewdoc/?id=242
- 禁用ctrl+alt+del
- ctrl+alt+del
- 禁用 CTRL+ALT+DEL
- 屏蔽Ctrl+alt+del
- 禁止 CTRL+ALT+DEL
- 禁用Ctrl+alt+del
- VC实现Win2000下屏蔽Ctrl+Alt+Del键
- VC实现Win2000下屏蔽Ctrl+Alt+Del键
- VC实现Win2000下屏蔽Ctrl+Alt+Del键
- VC实现下屏蔽Ctrl+Alt+Del键
- 求教Disable Del+Ctrl+Alt
- Synergy 发送ctrl alt del
- 影音播放拖慢Vista局域网速
- “三无穷人”怎样变成有钱人
- 关于老公和老婆讲理
- Microsoft Windows Vista
- 2007年程序员最应该知道的十件事
- NT下模拟Ctrl+Alt+Del
- java创建线程池
- 关于 sizeof() 的一些思考
- netstat -an解读
- raptier的使用
- dorado与Struts+Hibernate+Spring的集成开发模式
- 软件人员的代码规范
- 必备绝技——Hook大法(上)
- 事务处理的层次问题