乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      如何在vba中用keybd_event操作鍵盤?

       winona535 2019-09-06

      2018年2月6日作者:ExcelOffice

      鍵盤的工作原理:

      當(dāng)用戶按下鍵盤上的一個(gè)鍵時(shí),鍵盤內(nèi)的芯片會(huì)檢測到這個(gè)動(dòng)作,并把這個(gè)信號傳送到計(jì)算機(jī)。如何區(qū)別是哪一個(gè)鍵被按下了呢?鍵盤上的所有按鍵都有一個(gè)編碼,稱作鍵盤掃描碼。當(dāng)你按下一個(gè)鍵時(shí),這個(gè)鍵的掃描碼就被傳給系統(tǒng)。掃描碼是跟具體的硬件相關(guān)的,同一個(gè)鍵,在不同鍵盤上的掃描碼有可能不同。鍵盤控制器就是將這個(gè)掃描碼傳給計(jì)算機(jī),然后交給鍵盤驅(qū)動(dòng)程序。鍵盤驅(qū)動(dòng)程序會(huì)完成相關(guān)的工作,并把這個(gè)掃描碼轉(zhuǎn)換為鍵盤虛擬碼。什么是虛擬碼呢?因?yàn)閽呙璐a與硬件相關(guān),不具有通用性,為了統(tǒng)一鍵盤上所有鍵的編碼,于是就提出了虛擬碼概念。無論什么鍵盤,同一個(gè)按鍵的虛擬碼總是相同的,這樣程序就可以識(shí)別了。簡單點(diǎn)說,虛擬碼就是我們經(jīng)??梢钥吹降南馰K_A,VK_B這樣的常數(shù),比如鍵A的虛擬碼是65,寫成16進(jìn)制就是&H41,注意,人們經(jīng)常用16進(jìn)制來表示虛擬碼。當(dāng)鍵盤驅(qū)動(dòng)程序把掃描碼轉(zhuǎn)換為虛擬碼后,會(huì)把這個(gè)鍵盤操作的掃描碼和虛擬碼還有其它信息一起傳遞給操作系統(tǒng)。然后操作系統(tǒng)則會(huì)把這些信息封裝在一個(gè)消息中,并把這個(gè)鍵盤消息插入到消息列隊(duì)。最后,要是不出意外的話,這個(gè)鍵盤消息最終會(huì)被送到當(dāng)前的活動(dòng)窗口那里,活動(dòng)窗口所在的應(yīng)用程序接收到這個(gè)消息后,就知道鍵盤上哪個(gè)鍵被按下,也就可以決定該作出什么響應(yīng)給用戶了。這個(gè)過程可以簡單的如下表示:

      用戶按下按鍵—–鍵盤驅(qū)動(dòng)程序?qū)⒋耸录鬟f給操作系統(tǒng)—–操作系統(tǒng)將鍵盤事件插入消息隊(duì)列—–鍵盤消息被發(fā)送到當(dāng)前活動(dòng)窗口。

      api函數(shù)keybd_event可以實(shí)現(xiàn)鍵盤的各種個(gè)操作。

      它的語法如下:

      Visual Basic

      VOID WINAPI keybd_event( _In_ BYTE bVk, _In_ BYTE bScan, _In_ DWORD dwFlags, _In_ ULONG_PTR dwExtraInfo );

      1

      2

      3

      4

      5

      6

      VOID WINAPI keybd_event(

        _In_ BYTE      bVk,

        _In_ BYTE      bScan,

        _In_ DWORD     dwFlags,

        _In_ ULONG_PTR dwExtraInfo

      );

      其中bVk參數(shù)為按鍵的虛擬碼,具體的按鍵的虛擬碼可以見鏈接。

      bScan參數(shù) 為按鍵的掃描碼,一般可以不提供,直接輸入0。

      以下代碼是api函數(shù)keybd_event實(shí)現(xiàn)按下F2鍵的效果:

      Visual Basic

      Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) Const KEYEVENTF_KEYUP = &H2 Const VK_F2 = &H71 Sub QQ1722187970() '按下F2 keybd_event VK_F2, 0, 0, 0 '釋放F2 keybd_event VK_F2, 0, KEYEVENTF_KEYUP, 0 End Sub

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

      Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

      Const KEYEVENTF_KEYUP = &H2

      Const VK_F2 = &H71

      Sub QQ1722187970()

          '按下F2

          keybd_event VK_F2, 0, 0, 0

          '釋放F2

          keybd_event VK_F2, 0, KEYEVENTF_KEYUP, 0

      End Sub

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多