2015-04-15 167 views
0

我使用以下代码(在Cherrypy中)在网络共享上打开文件。 (http://localhost:8080/g?filename=filename.docx) 这似乎工作正常,但是当我打开一个文件,例如一个Word文档时,Word在当前浏览器窗口后面打开。 如何打开链接并专注于窗口?在浏览器中打开文档

import os 
import cherrypy 
import webbrowser 

class StringGenerator(object): 
     @cherrypy.expose 
     def index(self): 
      return "Hello world!" 

     @cherrypy.expose 
     def g(self, filename): 
      webbrowser.open(r'\\computer\share\filename.docx', new=2, autoraise=True) 

if __name__ == '__main__': 
     cherrypy.quickstart(StringGenerator()) 

回答

1

您可以使用pywin32库。例如:

import win32com.client 
import win32gui 
import win32process 

hwnd = win32gui.GetForegroundWindow() 
_, pid = win32process.GetWindowThreadProcessId(hwnd) 
shell = win32com.client.Dispatch("WScript.Shell") 

shell.AppActivate('filename.docx') 
+0

或者您可以尝试使用pywinauto,它更像AutoIt。 –

0

documentation状态(部分):

注意,在某些平台上,试图打开使用此功能的文件名,可以工作,并启动操作系统的相关程序。但是,这既不支持也不便携。

该评论的最后部分是问题所在。实际上,在查看源代码时,似乎在某些系统上调用了系统特定的命令,该命令按文件类型打开默认程序。由于Word文档的默认程序是MS Word,该文件将在该程序中打开。由于网页的默认程序是浏览器,因此网页将在默认浏览器中打开。

但是,您可以告诉webbroswer使用特定的程序。见this answer如何做到这一点。