1)運行模擬鼠標功能的壹些程序,此法適用於諸多的操作系統(已經測試過了95,97,98,98se,2000,me等,還沒有測試過DOS,win3.x和NT)。這種程序的運用可以在很大程度上上代替鼠標(除了那些需要在按住鼠標左鍵的同時還要移動鼠標的操作,如:對窗口的隨意拖動,word文檔中內容的連續選擇和文件夾間的拖動等)。運用這類模擬程序,我們可以設置鼠標移動的(八個)方向鍵,邏輯左鍵,邏輯右鍵,左雙擊鍵,右雙擊鍵,以及鼠標滑動的速度等,這些壹般設置在數字小鍵盤上(當然設置在大鍵盤上也未必不可,視個人的習慣而定。這些程序在國外非常的多,但是國內使用較多的是Virtual Mouse。
2)直接利用數字小鍵盤來模擬鼠標的多數功能,但是這項功能只在win98以上的版本中開放了,低於win98的系統(如97,95)就沒有此功能。我們可以在"開始-->設置-->控制面板-->輔助選項-->鼠標-->鼠標鍵"中找到這項功能。為了讓讀者免除閱讀幫助文件的麻煩和痛苦(因為它說明的不清不楚,讓人費解),下面我把它的具體使用方法給大家說明壹下,希望能夠講述得比Bill Gates的"瘟酒吧-吐"清楚那麽壹點點。
和第壹種方法--鼠標功能模擬程序那樣,1,2,3,6,9,8,7,4八個數字鍵是鼠標的(八個)方向鍵的替代鍵,5代替鼠標的單擊(既可以是左鍵的單擊,也可以是右鍵的單擊,具體是哪個鍵要看在tray中的鼠標鍵狀態圖標的指示),撳下5在鼠標鍵狀態圖標上的反應是相應的鍵的壹次閃爍;"+"代替雙擊(同樣也沒有指定是哪個鍵的雙擊),在鼠標鍵圖標上的反應是相應的鍵連續閃爍兩次;"*"代替左右兩鍵的同時單擊,在鼠標鍵圖標上的反應是相應的兩個鍵同時閃爍壹次,"/"是切換鍵,既是單擊與雙擊間的切換,又是左鍵和右鍵間的切換;所有的這些狀態都會在狀態欄中的鼠標鍵圖標上得到體現,當然左右鍵的狀態是非常明顯的顯示在相應的圖標上,而單擊顯示為灰色,雙擊顯示為黑色。"0(Ins)"鍵代替按下鼠標鍵(同樣沒有指明左右鍵),在鼠標鍵狀態圖標上的反應是相應的鍵由灰變黑,這個鍵為我們拖動文件夾,選擇文檔的部分內容提供了方便;"·(del)"鍵則代替釋放鼠標鍵,在鼠標鍵圖標上的反應是相應的鍵由黑變灰。還可以設置鼠標移動的速度(crl表示加速,shift表示減速),數字小鍵盤的開關鍵(Alt+Shift+NumLock)等等。
記住,由於數字小鍵盤不是真的鼠標,所以要領會它的壹些規章制度。要領就是先確定下面的操作是左鍵呢還是右鍵,以及是單擊呢還是雙擊,鼠標鍵是按下還是松開?然後再進行相關的操作。
如果您還沒有聽清的話,或者您想知道得更多壹些,請參考相關的幫助文件。
3)用鍵盤的各種快捷鍵/組合鍵來代替鼠標的各種操作,當然這種方法的缺點就是要記憶許多的組合鍵,如同dos命令相對於windows操作來說的那種麻煩和擾人:
[左鍵]大小鍵盤上的enter鍵。
[右鍵]用shift+F10可以完全代替,而alt+enter則是shift+F10+R的替代鍵:查看某選項(可以是文件,也可以是文件夾,甚至是硬盤)的屬性。
[菜單的彈出與激活]可以用alt鍵或者組合鍵ctrl+f10來彈出第壹個菜單,或者用alt+相應的字母,直接彈出對應的菜單;在子菜單中,可以直接用相應的縮寫字母來執行對應的功能,也可以用鍵盤中的上下鍵移到相應的子菜單項上(特別是對於那些子菜單非常多,而我們需要的東東又在倒數幾個的位置),再用enter鍵執行該功能。
[win鍵]^+ESC
[選定、選擇]SHIFT+方向鍵為行選擇方式,SHIFT+ALT+方向鍵為列選擇方式(列選擇在word排版時比較適用)
shift+home/end:選定的範圍是從當前的光標位置到行首/行末;
shift+PageUp/PageDown:選定的範圍從當前的光標處到頁首/頁末;
shift+ctrl+PageUp/PageDown:選定的範圍從當前的光標處到文頂/文底(註意ctrl+PageUp/PageDown的效果是將光標直接跳到頂部/底部,配合鼠標的操作特別奏效)
[TAB鍵]IE中:在 Web 頁、地址欄和鏈接欄中向前移動到下壹個項目;
alt+home:進入您的主頁
[當前窗口間的切換]
如果只有少數幾個窗口的話,就直接利用alt+TAB鍵來切換,
ALT+TAB:兩個鍵同時按下時,是在切換,但是當前的活動窗口還沒有改變,直到alt鍵松開時,活動窗口才改變,shift+alt+tab切換順序變成為逆序,
ALT+ESC:每按下壹次該組合鍵(不管alt鍵松開與否),當前的活動窗口就順序的變成下壹個,shift+alt+esc:功能和alt+esc壹樣,只不過是切換順序變成了逆序
如果開有非常多的程序窗口,先用^+ESC彈出win鍵,然後用ESC取消,接著再利用TAB鍵在win鍵,狀態欄,工具欄和sys tray之間切換,當鼠標切換到相應的地方時,再運用左右鍵;
最後的辦法就是用alt+space彈出窗口的控制菜單,然後將當前窗口最小化,最後就可以看到需要的窗口了。
[窗口的最大化,最小化,關閉]
窗口的關閉:ALT+F4,CTRL+W,ALT+F+X,CAD(^+ALT+DEL)再選擇需要關閉的窗口名稱,或者用alt+space彈出控制菜單,然後選擇"關閉"壹項;
其中alt+f4是退出某程序,ctrl+w是關閉某程序的當前窗口,而不關閉其他窗口,但是如果某程序只開了壹個窗口時,其效果就是退出該程序;
最大、最小化、以及恢復/還原:ALT+SPACE(打開窗口的控制菜單,選擇恢復/還原、最大化,最小化,調節窗口大小、移動等功能項)
[窗口的移動]ALT+SPACE打開控制菜單,然後選擇m(移動)壹項,這樣用上下左右鍵就可以移動窗口了,
[窗口大小的改變]ALT+SPACE,然後選擇s(大小)壹項,同樣的,上下左右鍵可以改變窗口的大小
[窗口的翻頁]:PageDown和PageUp分別是向下和向上翻壹頁,ctrl+PageDown和ctrl+PageUp分別是翻到窗口的底部和頂端,
home/end:到行首和行尾,在IE中是到窗口的top和bottum
[文件的移動、改名與刪除]DEL:放到回收站中,SHIFT+DEL:直接刪除,不經過回收站
[文件的選擇]選擇壹個:就是用上下左右鍵來選擇;
選擇全部:用ctrl+a鍵就可以了;
有規律性的或者說是連續性的選擇:用shift+方向鍵就可以了;
無規律性的選擇:按住ctrl鍵,然後按方向鍵到所需要選擇的項目上,然後按下空格space鍵就可選上該項目,然後再移動方向鍵,再space進行選擇(此時需要壹直按著ctrl鍵);
如果在眾多的項目中只有少數的項目不選:我們可以先選擇好這些不需要選擇的項目,然後用編輯菜單下的"反向選擇"功能進行選擇,就達到了選擇大多數項目的目的;
[工具欄中功能的實現]前進、後退、向上、停止、cut,copy,paste、undo,delete,屬性
請參考windows幫助系統中的"快睫方式,鍵盤"壹項的具體說明
CTRL+S,ALT+F+S,ALT+F+A,
ctrl+Z,ALT+BackSpace:取消上壹步的操作,也就是會到上壹步的操作結果中,但是不能夠回到下壹步的操作結果中。
BackSpace是後退壹步,在IE中類似於alt+〈-
[某些屬性的快捷鍵(有鼠標時也是如此)]
CAD(ctrl+ALT+DEL):終止進程、關閉和重啟計算機
ctrl+A:對當前編輯窗口中的內容進行全選;
ctrl+C:對已經被選定的對象進行復制;
ctrl+V:在光標位置粘貼已經被復制的對象/內容,同時被復制的對象不被刪除;
ctrl+X:對被選定的內容/對象進行復制,並且在該內容/對象已經被粘貼之後,再刪除原有的內容/對象,否則不予刪除;(有點類似於^+C)
ctrl+Z:對最近的壹次操作進行反悔(undo)、撤消;
ALT+BackSpace:undo
ctrl+S:保存當前窗口的內容,以及快速保存,和Alt+F+s效果相同
ctrl+N:在現有IE窗口的基礎上再打開壹個新窗口,新窗口的內容與當前窗口壹樣;
ctrl+P:彈出打印有關的內容的菜單,知道確認後才正式的打印。
ctrl+B:在office編輯中,起到對字體加黑/去黑的作用;
ctrl+I:在office編輯中,起到對字體傾斜/去斜的作用;
ctrl+W:效果和組合鍵Alt+F4相同,關閉當前的窗口(而不是直接關閉當前窗口涉及的程序),在IE,Office程序,我的電腦以及windows資源管理器中起到亦起相同作用
ctrl+R:類似於ctrl+F5,對當前內容進行強制性的更新,而不檢驗、對比內容的日期
ALT+ENTER:快速查看所選項目的屬性,功能和SHIFT+F10+R/P壹樣
ALT+PrintScreen:將整個屏幕上的內容存成圖片並copy在剪貼板中,以供復制
SHIFT+F10:彈出"打開方式"
·在win系列的啟動中按住SHIFT,可以直接進入"安全模式",出現win畫面後再按SHIFT鍵,則跳過 "開始/程序/啟動"程序組中的程序
·在放入光盤時按住SHIFT,則是作為自動播放的開關/轉化、
·在^+ALT+SHIFT之後需要重新啟動機器時,按住SHIFT,則是重新啟動GUI即windows,而不需要再從BIOS開始,某些時候節約了時間,加快了速度。
shift+dele:徹底地刪除文件,而不是扔到垃圾箱中
[功能鍵]
F1:幫助文件的導出,
f2:重新命名的快捷方式,功能等同於"右鍵-->重命名"
F3:對內容的查找,作用等同於"win鍵-->查找-->文件或文件夾"
f4:將光標指向地址欄,並且彈出當前地址的相對地址,以及所有的地址(在資源管理器中)
shift+f4:將光標指向地址欄,並且彈出當前地址的相對地址,以及所有的地址(在資源管理器中)
ctrl
+f4:將光標指向地址欄,而沒有其他的操作
F5:對內容的更新/刷新,在文本編輯框中,調出當前的時間:時分年月日,比如19:18 2000-08-02
F5 或
CTRL+R 僅當 Web 上的頁面與本機存儲的 Web 頁時間戳不同時,才刷新當前 Web 頁
CTRL+F5 即使 Web 上的頁面與本機存儲的 Web 頁時間戳相同,仍然刷新當前 Web 頁
f6:功能和tab鍵壹樣,完成順序的切換,ctrl+f6也壹樣
shift+f6:功能和shift+tab鍵壹樣,完成逆序的切換工作
f10:相當與alt鍵的功能類似,彈出的菜單中包含是第壹個菜單(多數為文件)的內容,同時還有在所選擇的項目上的右鍵所彈出的菜單的內容
shift+f10:鼠標的右鍵功能,在IE中是顯示某個鏈接的快捷菜單
F11:在全屏幕和常規窗口(最大化)之間進行切換;
[在IE中的操作]
ESC:終止網頁下載(更新)過程,而不取消所下載的網頁,也就是說,下載了多少網頁代碼,就解釋/顯示多少網頁內容
CTRL+L:轉到新位置
ctrl+o:在IE中是彈出"打開新網頁"的對話框
CTRL+N:直接打開新窗口(內容和最後壹次成功顯示的頁面內容相同)
CTRL+W:關閉當前窗口
CTRL+S:保存當前頁
CTRL+P:打印當前頁或當前框架
ENTER:激活選定的鏈接
CTRL+E:在瀏覽欄中打開搜索頁
CTRL+I:在瀏覽欄中打開收藏夾
CTRL+H:在瀏覽欄中打開歷史記錄
CTRL+單擊:在歷史記錄或收藏欄上,打開多個文件夾
alt+右箭頭鍵
alt+左箭頭鍵
[使用地址欄]
ALT+D:選擇地址欄中的文字
F4:顯示地址欄的歷史記錄
CTRL+向左箭頭:在地址欄中時,將光標左移到相鄰的邏輯分隔符(. 或 /)
CTRL+向右箭頭:在地址欄中時,將光標右移到相鄰的邏輯分隔符(. 或 /)
CTRL+ENTER:在地址欄中將""添加到鍵入的文本的前面,將".com"添加到文本的後面
向上箭頭:在"自動完成"建議項的列表中向前移動
向下箭頭:在"自動完成"建議項的列表中向後移動
[使用收藏夾]
CTRL+D:將當前 Web 頁添加到收藏夾中
CTRL+B:打開"整理收藏夾"對話框
ALT+UPARROW:在"整理收藏夾"對話框的"收藏夾"列表中向上移動所選項目
ALT+DOWNARROW:在"整理收藏夾"對話框的"收藏夾"列表中向下移動所選項目
[文本的編輯]
CTRL+X:刪除所選項目並將其復制到剪貼板中
CTRL+C:將所選項目復制到剪貼板
CTRL+V:將剪貼板中的內容插入到所選位置
CTRL+A:選中當前 Web 頁中的所有項目
在word(office)編排時,ctrl+"="為下標;ctrl+shift為上標;ctrl+b為黑體;ctrl+i為斜體;ctrl+u為下劃線;
鼠標的拖動:將所選項目的快捷方式拖到新的地方(如桌面,另外的文件夾中)
ctrl+拖動:可在任意兩文件夾之間拷貝(不同盤之間可剩去ctrl);
shift+拖動:可在任意兩個文件夾之間移動(同壹盤上可剩去shift;
ctrl+shift+拖動:創建快捷方式
ctrl+shift:切換中文輸入法
shift+空格:切換全角/半角方式
在IE中,用shift+左鍵確認:在新的窗口中顯示該鏈接指定的web頁面的內容
或者
函數功能:該函數定義壹個系統範圍的熱鍵。
函數原型:BOOL RegisterHotKey(HWND hWnd,intid,UINT fsModifiers,UINT vk);
參數:
hWnd:接收熱鍵產生WM_HOTKEY消息的窗口句柄。若該參數NULL,傳遞給調用線程的WM_HOTKEY消息必須在消息循環中中進行處理。
id:定義熱鍵的標識符。調用線程中的其他熱鍵不能使用同樣的標識符。應用功能程序必須定義壹個0X0000-0xBFFF範圍的值。壹個***享的動態鏈接庫(DLL)必須定義壹個0xC000-0xFFFF範圍的值伯GlobalAddAtom函數返回該範圍)。為了避免與其他動態鏈接庫定義的熱鍵沖突,壹個DLL必須使用GlobalAddAtom函數獲得熱鍵的標識符。
fsModifoers:定義為了產生WM_HOTKEY消息而必須與由nVirtKey參數定義的鍵壹起按下的鍵。該參數可以是如下值的組合:
MOD_ALT:按下的可以是任壹Alt鍵。
MOD_CONTROL:按下的可以是任壹Ctrl鍵。
MOD_SHIFT:按下的可以是任壹Shift鍵。
MOD_WIN:按下的可以是任壹Windows按鍵。這些鍵可以用Microsoft Windows日誌記錄下來。
vk:定義熱鍵的虛擬鍵碼。
返回值:若函數調用成功,返回壹個非O值。若函數調用失敗,則返回值為0。若要獲得更多的錯誤信息,可以調用GetLastError函數。
備註:當某鍵被接下時,系統在所有的熱鍵中尋找匹配者。壹旦找到壹個匹配的熱鍵,系統將把WM_HOTKEY消息傳遞給登記了該熱鍵的線程的消息隊列。該消息被傳送到隊列頭部,因此它將在下壹輪消息循環中被移去。該函數不能將熱鍵同其他線程創建的窗口關聯起來。
若為壹熱鍵定義的擊鍵己被其他熱鍵所定義,則RegisterHotKey函數調用失敗。
若hWnd參數標識的窗口已用與id參數定義的相同的標識符登記了壹個熱鍵,則參數fsModifiers和vk的新值將替代這些參數先前定義的值。
Windows CE:Windows CE 2.0以上版本對於參數fsModifiers支持壹個附加的標誌位。叫做MOD_KEYUP。
若設置MOD_KEYUP位,則當發生鍵被按下或被彈起的事件時,窗口將發送WM_HOTKEY消息。
RegisterHotKey可以被用來在線程之間登記熱鍵。
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:不支持;頭文件:winuser.h;庫文件:user32.lib。
為了得到唯壹標識,我們還將用到另壹個API函數
ATOM GlobalAddAtom(
LPCTSTR lpString //自己設定的壹個字符串
);
因為我們還要在程序退出的時候,消除這個熱鍵, 所以需要聲明壹個全局變量:
HotKeyId: Integer;
第壹步:
在窗口的create事件中,加入以下代碼
HotKeyId := GlobalAddAtom(‘MyHotKey’) - $C000;
註: HotKeyId的合法取之範圍是0x0000到0xBFFF之間, GlobalAddAtom函數得到的值
在0xC000到0xFFFF之間,所以減掉0xC000來滿足調用要求。
第二步:
在上面的代碼下面加入:
RegisterHotKey(Handle, hotkeyid, MOD_ALT, VK_F8);
熱鍵的輔助按鍵包括Mod_Ctrl 、Mod_Alt、Mod_Shift,對於Windows兼容鍵盤還支持Windows
鍵,即其鍵面上有Windows標誌的那個鍵,其值為Mod_win。
上面 的代碼註冊了壹個熱鍵:ALT+F8。當然如果妳希望象TAKEIT那樣,只用F8, 就這麽寫:
RegisterHotKey(Handle, hotkeyid, 0, VK_F8);
註:handle是壹個特殊的變量,它表示當前窗口的句柄。
這個函數妳應該能句舉壹反三了吧。
原理:
壹旦熱鍵設置成功,在程序應用過程中如果有相應的鍵被按下,Windows系統都會給妳的應
用程序發送壹個消息WM_HOTKEY,不管妳的應用程序是否為當前活動的。其中WM_HOTKEY消
息的格式為:
idHotKey = (int) wParam; // 該參數在設置系統級的熱鍵有用,壹般不予使用
fuModifiers = (UINT) LOWORD(lParam); //熱鍵的輔助按鍵
uVirtKey = (UINT) HIWORD(lParam); //熱鍵的鍵值
第三步:
註冊了熱鍵,就該寫下響應代碼了。
首先,在程序頭部分的private段中加入聲明 (作用是聲明這個過程,和聲明變量類似。
關於如何聲明函數、過程,請請參考各自的幫助文件或其它資料):
procedure HotKeyDown(var Msg: Tmessage); message WM_HOTKEY;
然後在程序中加入如下代碼:
procedure Tfmain.HotKeyDown(var Msg: Tmessage);
begin
if (Msg.LparamLo = MOD_ALT) AND Msg.LParamHi = VK_F8 then // 假設熱鍵為ALT+F8
begin
end;
最後壹步:
在窗口的close事件中加入
UnRegisterHotKey(handle, HotKeyId); //註銷HotKey, 釋放資源
測試代碼:
首先用RegisterHotKey函數註冊壹個熱鍵,例如Enter鍵。當按下Enter後,就調用mouse_event函數,模擬點擊鼠標左鍵。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure OnHotKey(var msg:Tmessage);message WM_HOTKEY;
private
public
end;
var
Form1: TForm1;
implementation
procedure TForm1.OnHotKey(var msg:Tmessage);
var
pt:TPoint;
begin
if msg.WParam=9999 then
begin
GetCursorPos(pt);
mouse_event(MOUSEEVENTF_LEFTDOWN,pt.x,pt.y,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,pt.x,pt.y,0,0);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
RegisterHotkey(handle,9999,0,VK_RETURN); //註冊壹個id為9999的hotkey
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
UnRegisterHotkey(handle,9999);
end;
end.
試試以上代碼,運行時按回車鍵,就會模擬點擊鼠標左鍵的了。