<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 閱讀(810) 評論(1)  編輯  收藏

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

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


    網站導航:
     
    主站蜘蛛池模板: 亚洲国产精品成人一区| 亚洲av无码国产精品夜色午夜 | 亚洲一区二区三区夜色 | 最新中文字幕免费视频| 久久综合亚洲色hezyo| 亚洲大尺度无码无码专区| 福利免费观看午夜体检区| 色吊丝免费观看网站| 亚洲精品高清久久| 老司机永久免费网站在线观看| 成av免费大片黄在线观看| 亚洲制服丝袜第一页| 亚洲国产天堂久久综合| 91免费国产自产地址入| 男女啪啪免费体验区| 亚洲国产美女在线观看| 久久精品夜色噜噜亚洲A∨| 免费三级毛片电影片| 97超高清在线观看免费视频| 狠狠色伊人亚洲综合网站色| 亚洲不卡av不卡一区二区| 国产免费观看视频| 国产91免费在线观看| 国产在线播放线91免费| 麻豆亚洲AV成人无码久久精品 | 亚洲av女电影网| 免费一区二区视频| 在线观看免费人成视频| 男人进去女人爽免费视频国产 | 青青视频观看免费99| 99麻豆久久久国产精品免费| 色综合久久精品亚洲国产| 亚洲精品网站在线观看你懂的| 久久亚洲欧洲国产综合| 免费无码成人AV片在线在线播放| 8888四色奇米在线观看免费看| 国产无遮挡又黄又爽免费网站| 国产亚洲精品美女久久久久| 亚洲综合久久精品无码色欲| 亚洲最大免费视频网| 亚洲国产精品一区|