簡體   English   中英

python打開windows資源管理器

[英]python open windows explorer

請想象這樣一種情況:本地文件的圖標顯示在 GUI 中,右鍵單擊該圖標,彈出上下文菜單,其中包含選項:在資源管理器中顯示文件。 單擊該選項,然后打開一個資源管理器窗口,其中選擇了特定文件。 很多編輯器都有這樣的功能:在文件夾中顯示或在資源管理器中顯示

其實GUI是PyQt搭建的,我的第一個想法很簡單,直接打開一個子進程,通過命令行:

explorer /select, a_full_path_name

該行為確實是我所需要的,但是當再次單擊“在文件夾中顯示”時,將打開一個新的資源管理器窗口,甚至舊的資源管理器窗口也存在! 一個頑皮的男孩一口氣點擊“在文件夾中顯示”幾十次怎么樣? 所以我只需要一扇窗戶,如果有舊窗戶,就把它抬到前面。

命令start /D a_path . 可能會讓頑皮的男孩失望(運行幾次,只有一個窗口。)但是,沒有突出顯示所選文件的選項,因此也讓我失望...

如上所述,許多編輯器都有這樣的“在文件夾中顯示”功能,但令我驚訝的是, PyCharm “在資源管理器中顯示”將通過多次單擊同一文件打開多個窗口,還有CodeBlocks “打開包含文件夾”,但是程序員的記事本“打開包含文件夾”將始終只打開同一個文件中的一個文件夾。(老實說,我的電腦中只有 3 個編輯器,Windows 記事本除外 :)


我的問題:
上面提到的功能可以通過windows cmd來實現嗎?
如果不能,是否有 python 方法來實現?

其實我在stackoverflow里找了幾個相關的問題, 比如,但是我的問題沒有解決,有沒有人搭我一下?

最后,一些好人引導我找到了答案。
它來自https://github.com/exaile/exaile/blob/master/xl/common.py#L350

在 py3+

import ctypes

ctypes.windll.ole32.CoInitialize(None)
upath = r"C:\Windows"
pidl = ctypes.windll.shell32.ILCreateFromPathW(upath)
ctypes.windll.shell32.SHOpenFolderAndSelectItems(pidl, 0, None, 0)
ctypes.windll.shell32.ILFree(pidl)
ctypes.windll.ole32.CoUninitialize()

在 py2+

只需給出一個 unicode 路徑。
注意: ILCreateFromPathW (Unicode) 和ILCreateFromPathA (ANSI)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM