線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3847
推到 Plurk!
推到 Facebook!

請教:如何禁用鍵盤按鍵?

尚未結案
tiao
一般會員


發表:11
回覆:19
積分:6
註冊:2005-02-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-02-22 09:05:55 IP:218.14.xxx.xxx 未訂閱
我想寫一個小程序,功能:當程序運行是,禁用某幾個設定的按鍵,使用戶在操作計算機時無法使用。在此請教各位前輩,謝謝!
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-02-22 11:16:50 IP:218.15.xxx.xxx 未訂閱
tiao您好,查找关键字:SetwindowsHookEx,HOOK 或参考: http://delphi.ktop.com.tw/topic.php?topic_id=47169 http://delphi.ktop.com.tw/topic.php?topic_id=34828 小弟对mathewzhao大大的略做修改,不够精细,自己研究看看 < class="code"> unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; const WH_KEYBOARD_LL =$80000000; var Form1: TForm1; hKeyHook: Integer; hKeyHookwin98:integer; implementation {$R *.dfm} function KeyHook(iCode: Integer; wParam: wParam; Key: lParam): LRESULT; stdcall; begin Result:=0; If iCode < 0 Then //根據SDK說明,若iCode小於0,調用CallNextHookEx並返回 begin Result:=CallNextHookEx(hKeyHook, iCode, wParam, key); Exit; end; //在此处设定需屏蔽的按键,此处为屏蔽Ctrl c,Ctrl v,ctrl x if ((key and WH_KEYBOARD_LL)= 0) and(GetKeyState(vk_control) <0) and ((wParam = Ord('X'))or(wParam = Ord('V'))or(wParam = Ord('C')))then {此处屏蔽F1,换汤不换药,自己按需修改 if ((key and WH_KEYBOARD_LL)= 0) and(GetKeyState(vk_F1) <0) then } begin Result:=1; Exit; end; end; //实行屏蔽 procedure TForm1.Button1Click(Sender: TObject); var temp:integer; begin if Win32Platform=VER_PLATFORM_WIN32_WINDOWS then //win98 begin SystemParametersInfo(Spi_screensaverrunning,1,@temp,0); hKeyHookwin98 := SetWindowsHookEx(WH_KEYBOARD, KeyHook, HInstance, 0); end else // win2000 begin hKeyHook := SetWindowsHookEx(WH_KEYBOARD_LL, KeyHook, HInstance, 0); end; end; //解除屏蔽 procedure TForm1.Button2Click(Sender: TObject); var temp:integer; begin if Win32Platform=VER_PLATFORM_WIN32_WINDOWS then begin SystemParametersInfo(spi_screensaverrunning,0,@temp,0); UnHookWindowsHookEx(hKeyHookwin98); hKeyHookwin98:=0; end else begin UnHookWindowsHookEx(hKeyHook); hKeyHook := 0; end; end; end. ~~~静心养德~~~ 發表人 - deity 於 2005/02/22 11:24:20
tiao
一般會員


發表:11
回覆:19
積分:6
註冊:2005-02-01

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-02 09:41:23 IP:218.14.xxx.xxx 未訂閱
deity:謝謝妳的解答!這段時間太忙,好幾天沒上來看暸。 我想禁用小鍵盤裏麵的‘.’、‘ ’、‘-’、‘*’、‘/’幾個按鍵,想知道這幾個鍵的值是多少? 不知道妳是否明白我上麵提到的“值”的意思?譬如妳的例子裏麵要禁用‘F1’,語句用到暸GetKeyState(vk_F1)。 謝謝!
chtai
高階會員


發表:68
回覆:238
積分:116
註冊:2004-05-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-03-02 11:39:02 IP:59.105.xxx.xxx 未訂閱
 
常數名稱 十六進位值 十進位值 滑鼠或按鍵的對應值
.............................................................
VK_LBUTTON 01 1 滑鼠左鈕
VK_RBUTTON 02 2 滑鼠右鈕
VK_CANCEL 03 3 Control-break 執行
VK_MBUTTON 04 4 滑鼠中鈕
05-07 5-7 未定義
VK_BACK 08 8 Backspace 鍵
VK_TAB 09 9 Tab 鍵
0A-0B 10-11 未定義
VK_CLEAR 0C 12 Clear 鍵
VK_RETURN 0D 13 Enter 鍵
0E-0F 14-15 未定義
VK_SHIFT 10 16 Shift 鍵
VK_CONTROL 11 17 Ctrl 鍵
VK_MENU 12 18 Alt 鍵
VK_PAUSE 13 19 Pause 鍵
VK_CAPITAL 14 20 Caps Lock 鍵
15-19 21-25 保留給Kanji 系統使用
1A 26 未定義
VK_ESCAPE 1B 27 Esc 鍵
1C-1F 28-31 保留給Kanji 系統使用
VK_SPACE 20 32 SpaceBar 鍵
VK_PRIOR 21 33 Page Up 鍵
VK_NEXT 22 34 Page Down 鍵
VK_END 23 35 End 鍵
VK_HOME 24 36 Home 鍵
VK_LEFT 25 37 Left Arrow 鍵
VK_UP 26 38 Up Arrow 鍵
VK_RIGHT 27 39 Right Arrow 鍵
VK_DOWN 28 40 Down Arrow 鍵
VK_SELECT 29 41 Select 鍵
2A 42 OEM 自訂使用
VK_EXECUTE 2B 43 Execute 鍵
VK_SNAPSHOT 2C 44 Print Screen 鍵
VK_INSERT 2D 45 Ins 鍵
VK_DELETE 2E 46 Del 鍵
VK_HELP 2F 47 Help 鍵
VK_0 30 48 0鍵
VK_1 31 49 1鍵
VK_2 32 50 2鍵
VK_3 33 51 3鍵
VK_4 34 52 4鍵
VK_5 35 53 5鍵
VK_6 36 54 6鍵
VK_7 37 55 7鍵
VK_8 38 56 8鍵
VK_9 39 57 9鍵
3A-40 58-64 未定義
VK_A 41 65 A鍵
VK_B 42 66 B鍵
VK_C 43 67 C鍵
VK_D 44 68 D鍵
VK_E 45 69 E鍵
VK_F 46 70 F鍵
VK_G 47 71 G鍵
VK_H 48 72 H鍵
VK_I 49 73 I鍵
VK_J 4A 74 J鍵
VK_K 4B 75 K鍵
VK_L 4C 76 L鍵
VK_M 4D 77 M鍵
VK_N 4E 78 N鍵
VK_O 4F 79 O鍵
VK_P 50 80 P鍵
VK_Q 51 81 Q鍵
VK_R 52 82 R鍵
VK_S 53 83 S鍵
VK_T 54 84 T鍵
VK_U 55 85 U鍵
VK_V 56 86 V鍵
VK_W 57 87 W鍵
VK_X 58 88 X鍵
VK_Y 59 89 Y鍵
VK_Z 5A 90 Z鍵
5B-5F 91-95 未定義
VK_NUMPAD0 60 96 數字鍵0鍵
VK_NUMPAD1 61 97 數字鍵1鍵
VK_NUMPAD2 62 98 數字鍵2鍵
VK_NUMPAD3 63 99 數字鍵3鍵
VK_NUMPAD4 64 100 數字鍵4鍵
VK_NUMPAD5 65 101 數字鍵5鍵
VK_NUMPAD6 66 102 數字鍵6鍵
VK_NUMPAD7 67 103 數字鍵7鍵
VK_NUMPAD8 68 104 數字鍵8鍵
VK_NUMPAD9 69 105 數字鍵9鍵
VK_MULTIPLY 6A 106 *鍵
VK_ADD 6B 107 +鍵
VK_SEPARATOR 6C 108 Separator 鍵
VK_SUBTRACT 6D 109 -鍵
VK_DECIMAL 6E 110 .鍵
VK_DIVIDE 6F 111 
不知你要的是不是這個呢? -- http://www.csie.nctu.edu.tw/~chtai/software.php 好用免費軟體的收集網頁,歡迎大家跟我分享或一同推廣免費軟體。 若您覺得這網頁不錯,也歡迎您將它傳出去 :)
------
My Web: http://nelson.csie.us
My Blog: http://blog.nelson.csie.us
tiao
一般會員


發表:11
回覆:19
積分:6
註冊:2005-02-01

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-03-02 14:51:54 IP:218.14.xxx.xxx 未訂閱
chtai : 您好,謝謝,我要的正是這個! 另外,deity前輩的程序好像有點問題。而且,我需要的功能是在程序運行后,完全禁用指定的按鍵,在沒有解除的情況下,任何程序都無法使用該按鍵。急盼囬復。 謝謝大傢的指導!
tiao
一般會員


發表:11
回覆:19
積分:6
註冊:2005-02-01

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-03-03 10:58:16 IP:218.14.xxx.xxx 未訂閱
我在論壇上找到關于dwinlock的資料,下載該控件囬來安裝使用,已經解決暸我的需求。其中用到暸chtai提供的資料,同時也參攷暸deity前輩的編程思想,在此一並錶示感謝! 給大傢提供一個dwinlock的下載地阯:http://soft.ttdown.com/SoftView/SoftView_29431.html
wbao80
一般會員


發表:0
回覆:1
積分:0
註冊:2005-03-21

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-03-21 15:30:45 IP:218.16.xxx.xxx 未訂閱
deity: 我按照你所述試了一下,無法遮罩Ctrl Alt Del鍵! 有沒有可以能成功的源碼?謝謝!!!
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-03-22 14:59:30 IP:218.15.xxx.xxx 未訂閱
引言: deity: 我按照你所述試了一下,無法遮罩Ctrl Alt Del鍵! 有沒有可以能成功的源碼?謝謝!!!
wbao80你好:小弟在win98测试是可以的,也可以修正为: 简单法
var
  temp:integer;    //开启屏蔽ctrl alt del
procedure TForm1.Button1Click(Sender: TObject);
begin
  SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1,@temp,0);
end;    //关闭屏蔽ctrl alt del
procedure TForm1.Button2Click(Sender: TObject);
begin
  SystemParametersInfo(SPI_SCREENSAVERRUNNING,0,@temp,0);
end;
 
如在win2K或NT 可参考: 【BCB】【轉貼】教你如何在 Win2K/NT 下攔截 Ctrl Alt Del http://delphi.ktop.com.tw/topic.php?topic_id=46004 另推荐使用tiao兄所说的,用dwinlock 具体可参考: http://www.dwinlock.kassl.de/ 里有很详细的范例和控件,小弟没测试过,您可以自行试试 站内也有很多相关的可行方法,您可输入“Ctrl Alt Del”进行查找。 希望能对您有所帮助 <>~~~静心养德~~~
系統時間:2024-04-29 15:26:04
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!