VB 用API操作遊戲杆

2021-04-18 20:04:45 字數 1236 閱讀 2376

暑假閒來無事,隨便找了個網上比較多人推薦的悠閒遊戲來玩了下(《咕嚕小天使》),正好該遊戲支援遊戲杆,於是我便萌生了做這個小小的軟體的想法,其中參考了kaper的一篇文章(

《[個人心得]windows下對遊戲杆程式設計(未完)》

),小弟第一次在高手如雲的csdn發帖,若有不正確之處,還望各位前輩大蝦們指正~~

首先介紹關於遊戲杆(joystick)的幾個api:

joyconfigchanged '通知驅動程式遊戲杆設定已經改變並重新從登錄檔讀取設定

joygetdevcaps '查詢指定的遊戲杆裝置以確定其效能

joygetnumdevs '返回系統支援的遊戲杆裝置的數量

joygetpos '查詢指定的遊戲杆裝置的位置和活動性

joygetpo*** '查詢乙個遊戲杆裝置的位置和它的按扭狀態

joygetthreshold '查詢指定的遊戲杆裝置的當前移動閾值

joyreleasecapture '釋放由joysetcapture函式設定的在指定遊戲杆裝置上的捕獲

joysetcapture '傳送乙個遊戲杆訊息到指定的視窗

joysetthreshold '設定指定的遊戲杆裝置的移動閾值

主要用到的是 joysetcapture 和 joyreleasecapture 這兩個函式,我們先來看 joysetcapture 這個函式,這個函式的宣告是:

private declare function joysetcapture _

lib "winmm.dll" (byval hwnd as long, _

byval uid as long, _

byval uperiod as long, _

byval bchanged as long) as long

hwnd 是要獲取訊息的視窗控制代碼

uid 是遊戲杆的 id,可以是 joystickid1 或者 joystickid2

uperiod 是查詢遊戲杆訊息的頻率,單位是毫秒 bchanged 是改變位置標誌。若設為 true,則僅當遊戲杆改變的值大於或等於 joysetthreshold 設定的域值時才傳送遊戲杆值改變的訊息到主程式;若設為 false,則只要達到 uperiod 指定的時間就傳送訊息到主程式。

joyreleasecapture 函式只有乙個引數 uid,這個引數可以是 joystickid1 或者 joystickid2,表示要釋放捕捉遊戲杆 1 或遊戲杆 2 的訊息。 

用API操作串列埠

步驟 1 createfile,開啟串列埠 示例 g hcom createfile l com3 generic read generic write,0,null,open existing,必須用0,表示以獨佔的模式來占用串列埠 開啟除檔案之外的裝置時,用 open existing 2 se...

VB用API模擬截圖鍵PrintScreen

很多人用 sendkeys 模擬截圖鍵 printscreen 的時候提示 錯誤 70 拒絕的許可權 於是經常遇到人問.乾脆寫下來 宣告private declare sub keybd event lib user32 alias keybd event byval bvk as byte,byv...

用VB操作Excel的方法

1 定義excel 操作變數 dim objexcelfile as excel dim objworkbook as excel workbook dim objimportsheet as excel worksheet 2 開啟excel 程序,並開啟目標excel 檔案set objexce...