C 不通過事件方式獲取鍵盤按鈕按下的狀態

2022-02-19 03:03:00 字數 2022 閱讀 1093

原始碼來自:

以前,如果想獲取鍵盤按鈕是否被按下,一般通過鍵盤事件去獲取,而有時候,我們可能使用的不是windows form,可能是控制台或類庫,則不得不放棄使用鍵盤事件的方式,而需另找其他方法。

我們可以通過使用win32 api中的getkeystate函式來實現鍵盤按鈕按下狀態的檢查,而不通過鍵盤事件方式,**如下:

using

system;

using

system.collections.generic;

using

system.runtime.interopservices;

using

system.text;

namespace

pinvoke.net

return

keypressed;

}public

enum virtualkeystates : int

' for us

vk_oem_7 = 0xde, //

''"' for us

vk_oem_8 = 0xdf

,

// vk_oem_ax = 0xe1, //

'ax' key on japanese ax kbd

vk_oem_102 = 0xe2, //

"<>" or "\|" on rt 102-key kbd.

vk_ico_help = 0xe3, //

help key on ico

vk_ico_00 = 0xe4, //

00 key on ico

// vk_processkey = 0xe5

,

// vk_ico_clear = 0xe6

,

// vk_packet = 0xe7

,

// vk_oem_reset = 0xe9

, vk_oem_jump = 0xea

, vk_oem_pa1 = 0xeb

, vk_oem_pa2 = 0xec

, vk_oem_pa3 = 0xed

, vk_oem_wsctrl = 0xee

, vk_oem_cusel = 0xef

, vk_oem_attn = 0xf0

, vk_oem_finish = 0xf1

, vk_oem_copy = 0xf2

, vk_oem_auto = 0xf3

, vk_oem_enlw = 0xf4

, vk_oem_backtab = 0xf5

,

// vk_attn = 0xf6

, vk_crsel = 0xf7

, vk_exsel = 0xf8

, vk_ereof = 0xf9

, vk_play = 0xfa

, vk_zoom = 0xfb

, vk_noname = 0xfc

, vk_pa1 = 0xfd

, vk_oem_clear = 0xfe

} }

}

C 獲取鍵盤事件

一 windows 系統下的 vs 中可以使用 kbhit 函式來獲取鍵盤事件,使用時需要加入 conio.h 標頭檔案,例 include include using namespace std int main 當按下esc時迴圈,esc鍵的鍵值時27.system pause 二 在 unix...

C語言使用數學庫編譯不通過問題

include include int main 編譯結果 tmp ccibw7gz.o in function main test.c text 0x2d undefined reference to pow collect2 ld returned 1 exit status 這是怎麼回事?us...

如何不通過白名單獲取手機的UA

做手機應用,我們都希望使用者訪問我們服務時,能夠獲得使用者的機型資訊,有兩種途徑 1 你的 加入了移動的白名單列表,2 通過和支援白名單的第三方合作獲取 如果你既不在白名單列表中,有不想支付費用,怎麼辦,其實可以用一種變通的方法,通過使用者請求的http頭資訊,來識別出機型資訊。1.獲取http的u...