upload = dr.find_element_by_id('exampleInputFile0') upload.click() time.sleep(1) # win32gui dialog = win32gui.FindWindow('#32770', u'打開') # 對話框 ComboBoxEx32 = win32gui.FindWindowEx(dialog, 0, 'ComboBoxEx32', None) ComboBox = win32gui.FindWindowEx(ComboBoxEx32, 0, 'ComboBox', None) Edit = win32gui.FindWindowEx(ComboBox, 0, 'Edit', None) # 上面三句依次尋找對象,直到找到輸入框Edit對象的句柄 button = win32gui.FindWindowEx(dialog, 0, 'Button', None) # 確定按鈕Button win32gui.SendMessage(Edit, win32con.WM_SETTEXT, None, 'D:\category.sql') # 往輸入框輸入絕對地址 win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button) # 按button
----------------------------------
函數功能:該函數獲得一個窗口的句柄,該窗口的類名和窗口名與給定的字符串相匹配。這個函數查找子窗口,從排在給定的子窗口后面的下一個子窗口開始。在查找時不區分大小寫。
函數原型:HWND FindWindowEx(HWND hwndParent,HWND hwndChildAfter,LPCTSTR lpszClass,LPCTSTR lpszWindow);
參數;
hwndParent:要查找子窗口的父窗口句柄。
如果hwnjParent為NULL,則函數以桌面窗口為父窗口,查找桌面窗口的所有子窗口。
Windows NT5.0 and later:如果hwndParent是HWND_MESSAGE,函數僅查找所有消息窗口。
hwndChildAfter :子窗口句柄。查找從在Z序中的下一個子窗口開始。子窗口必須為hwndPareRt窗口的直接子窗口而非后代窗口。如果HwndChildAfter為NULL,查找從hwndParent的第一個子窗口開始。如果hwndParent 和 hwndChildAfter同時為NULL,則函數查找所有的頂層窗口及消息窗口。
lpszClass:指向一個指定了類名的空結束字符串,或一個標識類名字符串的成員的指針。如果該參數為一個成員,則它必須為前次調用theGlobaIAddAtom函數產生的全局成員。該成員為16位,必須位於lpClassName的低16位,高位必須為0。
lpszWindow:指向一個指定了窗口名(窗口標題)的空結束字符串。如果該參數為 NULL,則為所有窗口全匹配。返回值:如果函數成功,返回值為具有指定類名和窗口名的窗口句柄。如果函數失敗,返回值為NULL。
若想獲得更多錯誤信息,請調用GetLastError函數。
Unity3d中SendMessage 用法簡單筆記
Message相關有3條指令:
SendMessage ("函數名",參數,SendMessageOptions) //GameObject自身的Script
BroadcastMessage ("函數名",參數,SendMessageOptions) //自身和子Object的Script
SendMessageUpwards ("函數名",參數,SendMessageOptions) //自身和父Object的Script
用於向某個GameObject發送一條信息,讓它完成特定功能。
其實本質是調用那個GameObject里面的Script里面的函數,可以跨語言的,例如Javascript可以調用C#的函數,我已實驗成功。
☆另外,如果GameObject本身有兩個腳本,例如“move1”和“move2”,兩個腳本內有同名函數例如“moveMe()”,會兩個函數都執行一次。
第三個參數使用:
SendMessageOptions.RequireReceiver //如果沒有找到相應函數,會報錯(默認是這個狀態)
SendMessageOptions.DontRequireReceiver //即使沒有找到相應函數,也不會報錯,自動忽略
enumerate()說明
enumerate()是python的內置函數
enumerate在字典上是枚舉、列舉的意思
對於一個可迭代的(iterable)/可遍歷的對象(如列表、字符串),enumerate將其組成一個索引序列,利用它可以同時獲得索引和值
enumerate多用於在for循環中得到計數
例如對於一個seq,得到:
(0, seq[0]), (1, seq[1]), (2, seq[2])
1
enumerate()返回的是一個enumerate對象,例如:
這里寫圖片描述
enumerate()使用
如果對一個列表,既要遍歷索引又要遍歷元素時,首先可以這樣寫:
list1 = ["這", "是", "一個", "測試"]
for i in range (len(list1)):
print i ,list1[i]
上述方法有些累贅,利用enumerate()會更加直接和優美:
list1 = ["這", "是", "一個", "測試"]
for index, item in enumerate(list1):
print index, item
>>>
0 這
1 是
2 一個
3 測試
enumerate還可以接收第二個參數,用於指定索引起始值,如:
list1 = ["這", "是", "一個", "測試"]
for index, item in enumerate(list1, 1):
print index, item
>>>
1 這
2 是
3 一個
4 測試
補充
如果要統計文件的行數,可以這樣寫:
count = len(open(filepath, 'r').readlines())
這種方法簡單,但是可能比較慢,當文件比較大時甚至不能工作。
可以利用enumerate():
count = 0
for index, line in enumerate(open(filepath,'r')):
count += 1
