• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Pencil.C++

            更新速度可能會(huì)晚于http://blog.csdn.net/bilaopao

              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              34 隨筆 :: 0 文章 :: 40 評(píng)論 :: 0 Trackbacks
            程序源碼如下.

            /////////////////////////////////////////////////////////////////////
            #include   "windows.h "
            #include   "WinIo.h "
            #include   "winuser.h "
            #include   "iostream.h "
            #define   VK_A   0x41

            #define   KBC_KEY_CMD   0x64         //鍵盤命令端口
            #define   KBC_KEY_DATA   0x60       //鍵盤數(shù)據(jù)端口


            void   KBCWait4IBE()
            {
            DWORD   dwRegVal=0;
            do
            {  
            GetPortVal(0x64,&dwRegVal,1);
            }
            while(dwRegVal   &   0x00000001);
            }

            void   MyKeyDownEx(long   vKeyCoad)       //模擬擴(kuò)展鍵按下,參數(shù)vKeyCoad是擴(kuò)展鍵的虛擬碼
            {
            long   btScancode;
            btScancode   =   MapVirtualKey(vKeyCoad,   0);

                    KBCWait4IBE();       //等待鍵盤緩沖區(qū)為空
                    SetPortVal(KBC_KEY_CMD,   0xD2,   1     );       //發(fā)送鍵盤寫(xiě)入命令
                    KBCWait4IBE();
                    SetPortVal(KBC_KEY_DATA,   0xE0,   1   );   //寫(xiě)入擴(kuò)展鍵標(biāo)志信息
                   
                   
                    KBCWait4IBE();       //等待鍵盤緩沖區(qū)為空
                    SetPortVal(   KBC_KEY_CMD,   0xD2,   1   );         //發(fā)送鍵盤寫(xiě)入命令
                    KBCWait4IBE();
                    SetPortVal(   KBC_KEY_DATA,   btScancode,   1   );   //寫(xiě)入按鍵信息,按下鍵
            }


            void   MyKeyUpEx(long   vKeyCoad)       //模擬擴(kuò)展鍵彈起
            {
            long   btScancode;
            btScancode   =   MapVirtualKey(vKeyCoad,   0);

                    KBCWait4IBE();       //等待鍵盤緩沖區(qū)為空
                    SetPortVal(KBC_KEY_CMD,   0xD2,   1   );         //發(fā)送鍵盤寫(xiě)入命令
                    KBCWait4IBE();
                    SetPortVal   (KBC_KEY_DATA,   0xE0,   1   );   //寫(xiě)入擴(kuò)展鍵標(biāo)志信息
                   
                   
                    KBCWait4IBE();     //等待鍵盤緩沖區(qū)為空
                    SetPortVal(KBC_KEY_CMD,   0xD2,   1   );         //發(fā)送鍵盤寫(xiě)入命令
                    KBCWait4IBE();
                    SetPortVal(KBC_KEY_DATA,   (btScancode   |   0x80),   1);     //寫(xiě)入按鍵信息,釋放鍵
            }

            void   MyKeyDown(long   vKeyCoad)
            {
            long   byScancode   =   MapVirtualKey(vKeyCoad,0);  
            KBCWait4IBE();//等待鍵盤緩沖區(qū)為空  
            if(SetPortVal(0x64,0xD2,1)==false)cout < < "發(fā)送鍵盤寫(xiě)入命令失敗! " < <endl;//發(fā)送鍵盤寫(xiě)入命令

            KBCWait4IBE();//等待鍵盤緩沖區(qū)為空  
            if(SetPortVal(0x60,(ULONG)byScancode,1)==false)cout < < "按下鍵失敗! " < <endl;//寫(xiě)入按鍵信息,按下鍵
            }


            void   MyKeyUp(long   vKeyCoad)
            {
            long   byScancode   =   MapVirtualKey(vKeyCoad,0);  
            KBCWait4IBE();//等待鍵盤緩沖區(qū)為空  
            if(SetPortVal(0x64,0xD2,1)==false)cout < < "發(fā)送鍵盤寫(xiě)入命令失敗! " < <endl;//發(fā)送鍵盤寫(xiě)入命令

            KBCWait4IBE();//等待鍵盤緩沖區(qū)為空  
            if(SetPortVal(0x60,(ULONG)(byScancode   |   0x80),1)==false)cout < < "釋放鍵失敗! " < <endl;//寫(xiě)入按鍵信息,釋放鍵
            }


            void   main()
            {
            if(InitializeWinIo()==false)cout < < "驅(qū)動(dòng)程序加載失敗! " < <endl;

            Sleep(3000);

            MyKeyDownEx(VK_LEFT);       //按下左方向鍵
            Sleep(200);                         //延時(shí)200毫秒
            MyKeyUpEx(VK_LEFT);           //釋放左方向鍵  
            Sleep(500);
            MyKeyDown(VK_SPACE);       //按下空格鍵,注意要發(fā)送兩次
            MyKeyDown(VK_SPACE);
            Sleep(200);
            MyKeyUp(VK_SPACE   )   ;       //釋放空格鍵

            ShutdownWinIo();
            }
            posted on 2009-06-06 01:46 Pencil.C++ 閱讀(4145) 評(píng)論(6)  編輯 收藏 引用

            評(píng)論

            # re: WINIO模擬鍵盤時(shí)間代碼(VC) 2009-11-24 17:47 小哥
            為什么空格要發(fā)送2次  回復(fù)  更多評(píng)論
              

            # re: WINIO模擬鍵盤時(shí)間代碼(VC) 2010-05-20 15:16 haowang520
            因?yàn)殚_(kāi)始模擬的是擴(kuò)展鍵,轉(zhuǎn)到模擬普通鍵的時(shí)候,要down兩下
              回復(fù)  更多評(píng)論
              

            # re: WINIO模擬鍵盤時(shí)間代碼(VC) 2011-03-26 20:45 大蝦炒飯
            呵呵,不好用的代碼  回復(fù)  更多評(píng)論
              

            # re: WINIO模擬鍵盤時(shí)間代碼(VC) 2011-03-26 20:46 大蝦炒飯
            代碼不好用  回復(fù)  更多評(píng)論
              

            # re: WINIO模擬鍵盤時(shí)間代碼(VC) 2011-08-05 12:17 afun
            用不了  回復(fù)  更多評(píng)論
              

            # re: WINIO模擬鍵盤時(shí)間代碼(VC) 2012-03-02 18:55 wgh
            代碼無(wú)效...
            for(int i=0; i<10; i++){
            MyKeyDown(VK_SPACE);
            MyKeyDown(VK_SPACE);
            Sleep(500);
            MyKeyUp(VK_SPACE);
            Sleep(500);
            qDebug() << " " << i;
            }  回復(fù)  更多評(píng)論
              


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            97精品国产97久久久久久免费| 精品乱码久久久久久夜夜嗨| 亚洲精品无码久久久久去q| 国色天香久久久久久久小说| 亚洲va久久久噜噜噜久久狠狠| 色综合久久综精品| 99久久国产宗和精品1上映| 国产精品久久国产精品99盘| 中文精品久久久久人妻| 久久精品国内一区二区三区| 久久人与动人物a级毛片| 国产精品美女久久久免费| 亚洲国产精品一区二区久久hs| 久久久久国产日韩精品网站| 91精品国产乱码久久久久久 | 久久精品一区二区国产| 久久久久亚洲?V成人无码| 国产精品一区二区久久国产| 亚洲欧美日韩精品久久亚洲区 | 精品国产热久久久福利| 久久久久国产精品人妻| 国内精品久久久久久不卡影院| 久久久久久久久无码精品亚洲日韩| 色婷婷综合久久久久中文字幕| 久久青青草原综合伊人| 狠狠色丁香婷婷久久综合不卡| 国内精品人妻无码久久久影院导航 | 色婷婷久久综合中文久久一本| 久久青青草原精品影院| 精品久久一区二区三区| 日韩精品久久久久久久电影蜜臀 | 久久精品无码一区二区app| 91久久婷婷国产综合精品青草 | 国产精品狼人久久久久影院| 91精品国产综合久久香蕉| 久久国产精品-国产精品| 精品久久久久久国产91| 91久久香蕉国产熟女线看| 97超级碰碰碰碰久久久久| 国产午夜福利精品久久| 久久久久免费视频|