在
windows
大行其道的今天,windows介面程式受到廣大使用者的歡迎。對這些程式的操作不外乎兩種,鍵盤輸入控制和滑鼠輸入控制。那麼我們能否通過編制程式來控制系統的滑鼠,例如隱藏計算機中的滑鼠呢?這個問題的答案是肯定的。這裡主要是通過乙個windows api函式來實現的。下面以乙個visual
c++的例項來介紹如何實現這個功能。需要讀者朋友們注意的是本**具有一定的危險性,程式執行後你將無法用滑鼠控制您的計算機,這時候需要對計算機的當前使用者名稱進行登出或重新啟動計算機。
一、實現方法
windows提供了乙個api函式mouse_event,可以模擬一次滑鼠事件,比如左鍵單擊、雙擊和右鍵單擊等。在程式中使用此函式將產生乙個十分有趣的效果,所模擬的滑鼠事件將遮蔽真正的滑鼠事件,我們的例項也就是利用該函式的這一特性來實現隱藏程式中的滑鼠。mouse_event函式原型如下:
第乙個引數為代表所要模擬的滑鼠訊息,為mouseeventf_leftdown時表示左鍵按下,為mouseeventf_leftup表示左鍵鬆開。一般情況下,dwflags取值如下:
mouseeventf_move 移動滑鼠
mouseeventf_leftdown 模擬滑鼠左鍵按下
mouseeventf_leftup 模擬滑鼠左鍵抬起
mouseeventf_rightdown 模擬滑鼠右鍵按下
mouseeventf_rightup 模擬滑鼠右鍵抬起
mouseeventf_middledown 模擬滑鼠中鍵按下
mouseeventf_middleup 模擬滑鼠中鍵抬起
mouseeventf_absolute 標示是否採用絕對座標
第二三個引數分別表示滑鼠的位置座標x,y,根據mouseeventf_absolute標誌,指定x,y方向的絕對位置或相對位置。第四五個引數並不重要,一般也可設為0,0。
下面是關於mouse_event的示例**,用兩個mouse_event (一次放下,一次鬆開)實現了滑鼠的單擊模擬:
point lppoint;
getcursorpos(&lppoint);
setcursorpos(lppoint.x, lppoint.y);
mouse_event(mouseeventf_leftdown,0,0,0,0); mouse_event(mouseeventf_leftup,0,0,0,0);
為了持續遮蔽系統的滑鼠,需要啟動乙個輔助線程來模擬滑鼠的動作,具體實現請參見**部分。
二、程式設計步驟
/執行緒函式;
cmainframe::cmainframe()
uint fmouse(lpvoid param)}}
return 0;//結束執行緒;
}四、小結
上述程式介紹了使用windows的api函式mouse_event()來模擬滑鼠的動作,從而隱藏機器中的滑鼠。於之相對應,windows還提供了乙個模擬鍵盤api函式keybd_event(),使用該函式可以相應的遮蔽鍵盤的動作。keybd_event()函式能觸發乙個按鍵事件,也就是說回產生乙個wm_keydown或wm_keyup訊息。該函式原型如下:
void keybd_event(
byte bvk, // virtual-key code
byte bscan, // hardware scan code
dword dwflags, // flags specifying various function options
dword dwextrainfo // additional data associated with keystroke
);從上述原型可以看出,keybd_event()共有四個引數,第乙個為按鍵的虛擬鍵值,如回車鍵為vk_return, tab鍵為vk_tab。第二個引數為掃瞄碼,一般不用設定,用0代替就行第三個引數為選項標誌,如果為keydown則置0即可,如果為keyup則設成"keyeventf_keyup",第四個引數一般也是置0即可。'a'的虛擬鍵值為65,所以可以用如下**實現模擬按下'a'鍵,
keybd_event(65,0,0,0);
keybd_event(65,0,keyeventf_keyup,0);
Visual C 程式設計隱藏計算機中的滑鼠
在 windows 大行其道的今天,windows介面程式受到廣大使用者的歡迎。對這些程式的操作不外乎兩種,鍵盤輸入控制和滑鼠輸入控制。那麼我們能否通過編制程式來控制系統的滑鼠,例如隱藏計算機中的滑鼠呢?這個問題的答案是肯定的。這裡主要是通過乙個windows api函式來實現的。下面以乙個visu...
Visual C 程式設計隱藏計算機中的滑鼠
在 windows 大行其道的今天,windows介面程式受到廣大使用者的歡迎。對這些程式的操作不外乎兩種,鍵盤輸入控制和滑鼠輸入控制。那麼我們能否通過編制程式來控制系統的滑鼠,例如隱藏計算機中的滑鼠呢?這個問題的答案是肯定的。這裡主要是通過乙個windows api函式來實現的。下面以乙個visu...
計算機中的定址
電腦的位數通常是指cpu的處理位數,這個不是靠位址匯流排來決定的,這個位數指的是cpu 通用暫存器的資料寬度,即cpu一次運算可以處理的資料bit長度。前面所說的是記憶體空間足夠的情況,下面用過一道軟考題目解釋記憶體空間 定址範圍的情況 某計算機字長32位,儲存容量8mb。按字編址,其定址範圍為 0...