如何用程式觸發鍵盤按鍵的事件(Ex. Ctl + F11) |
答題得分者是:領航天使
|
wkshei
一般會員 發表:3 回覆:9 積分:7 註冊:2002-04-11 發送簡訊給我 |
|
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
引言: 我看了如何用程式觸發鍵盤按鍵的事件的範例(單鍵),覺得受益良多, 可是我如法泡製拿來作組合鍵(ex: Ctl F11)確無法成功, 請問那位先知可否告之, 謝謝 Hsieh試了好久,寫出一個範例程式給您參考: unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons; type TForm1 = class(TForm) Memo1: TMemo; SpeedButton2: TSpeedButton; SpeedButton1: TSpeedButton; SpeedButton3: TSpeedButton; procedure SpeedButton2Click(Sender: TObject); procedure Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure SpeedButton1Click(Sender: TObject); procedure SpeedButton3Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.SpeedButton2Click(Sender: TObject); begin memo1.setfocus; keybd_event(VK_CONTROL,0,0,0); keybd_event(VK_F1,0,0,0); keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0); keybd_event(VK_F1,0,KEYEVENTF_KEYUP,0); end; procedure TForm1.SpeedButton1Click(Sender: TObject); begin memo1.setfocus; keybd_event(VK_MENU,0,0,0); keybd_event(VK_F1,0,0,0); keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0); keybd_event(VK_F1,0,KEYEVENTF_KEYUP,0); end; procedure TForm1.SpeedButton3Click(Sender: TObject); begin memo1.setfocus; keybd_event(VK_SHIFT,0,0,0); keybd_event(VK_F1,0,0,0); keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0); keybd_event(VK_F1,0,KEYEVENTF_KEYUP,0); end; procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key=vk_F1 then begin caption:='F1'; if shift=[ssCtrl] then caption:='C-F1'; if shift=[ssAlt] then caption:='A-F1'; if shift=[ssShift] then caption:='S-F1'; end; end; end. 先試試有問題再問! ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~ |
wkshei
一般會員 發表:3 回覆:9 積分:7 註冊:2002-04-11 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |