2015-04-15 270 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如何做到這一點。