2013-04-28 173 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