<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 67  文章 - 79  trackbacks - 0
    <2008年9月>
    31123456
    78910111213
    14151617181920
    21222324252627
    2829301234
    567891011

    常用鏈接

    留言簿(1)

    隨筆檔案

    文章檔案

    相冊

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    使用win32 native api 來向窗口發送鍵盤消息,主要是為了做his程序的自動登陸腳本  來方面測試程序
    把程序傳上來留個筆記
    set_foreground_window 根據標題來設定目標窗口
    key_press 一次發送一個按鍵信息 包括key_down 和key_up
     1 #coding=gbk
     2 import win32gui,win32con,win32api,win32process
     3 import string,os
     4 
     5 
     6 __keys={ }
     7 for key in dir(win32con):
     8     if key.startswith('VK_'):
     9         __keys[key[3:].capitalize()]=getattr(win32con,key)
    10         
    11 def sleep(ms):
    12     win32api.Sleep(ms)
    13     
    14 def run(exe_file):
    15 
    16     win32api.ShellExecute(0,"",exe_file,'','',0)    
    17     
    18 def set_foreground_window(win):
    19     try:
    20         win32gui.SetForegroundWindow(win)
    21         win32api.Sleep(50)
    22     except TypeError:
    23         hwnd=win32gui.FindWindow(0,win)
    24         win32gui.SetForegroundWindow(hwnd)
    25         win32api.Sleep(50)
    26         print hwnd
    27         
    28 def dump_keys():
    29     ks=[k for k in __keys.keys()]
    30     ks.sort()
    31     print "\n".join( "%s=0x%x"%(k,__keys[k]) for k in ks )
    32 
    33 def keyboard_event(key,flag=0):
    34     value=None
    35     if isinstance (key,int):
    36         value=key
    37     else:
    38         if len(key)==1:
    39             value=win32api.VkKeyScan (key)
    40         else:
    41             key=key.capitalize()
    42             if key in __keys:
    43                 value=__keys[key]               
    44 
    45     if value != None:
    46         win32api.keybd_event(value,0,flag,0)
    47     else:
    48         raise TypeError()
    49     
    50 def key_down(key):
    51     keyboard_event(key)
    52     
    53 def key_up(key):
    54     keyboard_event(key,flag=win32con.KEYEVENTF_KEYUP)
    55     
    56     
    57 
    58 def key_press(key):  
    59     if  len(key)==1:
    60         v=win32api.VkKeyScan (key)
    61         
    62         c=v&0xff00
    63 
    64         if c==1:
    65             key_down('Shift')
    66                 
    67         key_down(v)
    68         key_up(v)
    69 
    70         if c==1:
    71             key_up('Shift')            
    72     else:
    73         key_down(key)
    74         key_up(key)
    75         
    76 if __name__=='__main__':
    77     set_foreground_window('系統登錄')
    78 
    79     for i in '8888p':
    80         key_press(i)
    81     key_press('Return')
    82 


    八月份發生了太多事情,技術上,工作上,生活上都有。本來可以寫很多,想想還是算了, 太私人的東西不好意思放上來曬
    posted on 2008-09-03 14:14 zarra 閱讀(811) 評論(1)  編輯  收藏

    FeedBack:
    # re: 發送鍵盤消息[未登錄] 2008-09-04 10:22 apple
    喵嗚~~
    這些代碼看看很熟悉,可是依然讀不懂每句語句的意思
      回復  更多評論
      

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 国产一区二区三区在线免费观看 | 亚洲乱码在线播放| 最新欧洲大片免费在线| 亚洲AV无码资源在线观看| 亚洲人成亚洲人成在线观看| 四虎最新永久免费视频| 国产亚洲精品国产福利在线观看| 亚洲国产成+人+综合| 国产国产人免费人成免费视频| 97人妻精品全国免费视频 | 亚洲人成电影网站国产精品| 免费国产黄网站在线观看可以下载| 亚洲日韩一区精品射精| 亚洲精品无码mv在线观看网站 | 57pao一国产成视频永久免费| 亚洲av无一区二区三区| 色婷婷六月亚洲婷婷丁香| 在线观看91精品国产不卡免费| 无码精品人妻一区二区三区免费看 | 国产成人自产拍免费视频| 亚洲午夜电影在线观看高清| 亚洲毛片av日韩av无码| 久久久久国色AV免费观看性色| 中文在线免费观看| 亚洲gay片在线gv网站| 亚洲综合国产精品| 亚洲国产精品无码久久青草| 91在线视频免费看| 国偷自产一区二区免费视频| 看成年女人免费午夜视频| 亚洲av成人综合网| 亚洲大尺度无码专区尤物| 免费观看午夜在线欧差毛片| 曰批全过程免费视频在线观看| 免费人成激情视频在线观看冫| 免费观看四虎精品成人| 国产成人亚洲精品| 亚洲第一页在线视频| 久久精品国产精品亚洲色婷婷| 亚洲国产精品狼友中文久久久| 国产老女人精品免费视频|