2013-04-28 810 views
0

爲了從聊天窗口中提取文本,我首先收集窗口句柄。 我設法通過下面的代碼實現這一點:win32gui獲取窗口內容(Internet Explorer_server)

import time, win32gui 
def callback(hwnd, IEServers): 
    if win32gui.GetClassName(hwnd) == 'Internet Explorer_Server': 
     IEServers.append(hwnd) 
      print "IE server found:", hwnd 
time.sleep(3) 
mainHwnd = win32gui.GetForegroundWindow() 
IEServers = [] 
win32gui.EnumChildWindows(mainHwnd, callback, IEServers) 
for serv in IEServers: 
    print win32gui.GetClassName(serv) 

我想要做的下一件事是獲取內容(內部HTML?)作爲一個字符串。

我相信它可以通過IHTMLDocument2對象來完成。 信息:http://support.microsoft.com/kb/q249232

如何做到這一點?

回答

0

你可以嘗試這樣的事情。也許不完全是你想要什麼,但應該讓你對你的方式:

import time, win32gui 
import win32com.client 

time.sleep(2) 
mainHwnd = win32gui.GetForegroundWindow() 

s = win32com.client.Dispatch("Shell.Application") 
for w in s.Windows(): 
    if int(w.Hwnd) == mainHwnd: 
     print w.LocationURL 
     print w.Document.body.innerText 
     print w.Document.body.innerHTML 
     break  

我想的innerText是你想要的,但我包括幾個屬性,所以你可以把你挑。這當然只適用於IE。

+0

這不起作用。該窗口是一個更大的接口,這不是一個Internet Explorer_server類的一部分.. – Benjamin 2013-04-28 20:28:56

+0

嗯,我一定誤解了你的情況。對不起,它沒有幫助。 – MikeHunter 2013-04-28 21:38:26