我正在使用C#編程創建文件夾,並且需要將該文件夾的默認視圖設置爲「縮略圖」。以編程方式在C中更改資源管理器視圖#
回答
我知道操縱此設置的唯一方法是通過pInvoke,但看起來好像沒有消息將視圖設置爲縮略圖。 Here是針對WinXP的代碼片段。
相關注冊表項列在這裏: http://support.microsoft.com/kb/812003
然而,「記住每個文件夾的視圖設置」需要才能被選擇在知識庫文章的更改生效。看起來程序在沒有特定用戶提示的情況下改變這種做法會是'不良行爲'。
更新:對於desktop.ini,我從來沒有多少運氣使用它;然而,這個網站似乎列出幾個CLSID的,可能是值得探討: http://www.xs4all.nl/~hwiegman/desktopini.html
具體的[ExtShellFolderViews]部分。我給了它一個旋轉,但沒有任何運氣。
假設你這樣做自己使用ListView
,您可以在View
屬性設置爲LargeIcon
或者如果這還不夠(你提到縮略圖)你應該設置OwnerDraw
爲true的項目,自己繪製他們。
我懷疑「LargeIcon」與「縮略圖」相同。 – 2009-10-27 18:44:21
呼叫IFolderView ::與FVM_THUMBSTRIP
SetCurrentViewMode不知道哪個瀏覽器窗口,你應該從查詢雖然IFolderView。在用戶桌面上可能會有多個瀏覽器窗口,如果您是來自較低的完整性級別,那麼在較高完整性級別下運行的瀏覽器窗口會拒絕您訪問。
創建文件夾後,我在資源管理器窗口中打開它,所以如果它是一個永久性更改,這可能是一種方式。意思是,在用戶關閉文件夾並返回之後,它仍然處於縮略圖視圖(假設他們具有「記住每個文件夾的視圖設置」設置爲true)。我在VB中找到了一個示例(http://www.vbforums.com/showthread.php?t=409476),但需要將其轉換爲C#。 – pdavis 2009-10-27 19:35:37
在啓動進程後,ShellExecute不會爲您提供控制。您可以編寫一個BHO來檢查父進程是否是您的應用程序,並且當前的exe文件是explorer.exe。如果兩者都爲真,則可以通過進程間通信方法從應用程序獲取命令來執行,如更改DocumentComplete事件處理程序中的視圖模式。 http://blog.joycode.com/jiangsheng/archive/2004/09/17/33756.aspx是從IShellBrowser獲取IFolderView的方法。 – 2009-10-27 22:39:15
在BHO中,您將從IServiceProvider(http://www.codeproject.com/KB/shell/AutomateShellWindow.aspx)獲得IShellBrowser接口。 – 2009-10-27 22:40:30
根據這一post你可以做一個參考shdocvw.dll中查詢當前IServiceProvider
。然後得到theIShellBrowser
- >IShellView
- >IFolderView
。當您有IFolderView
時,您可以獲取/設置文件夾的當前查看模式。
- 1. 以編程方式更改Windows資源管理器的外觀?
- 2. 以編程方式更改資源getString()
- 3. 以編程方式控制資源管理器窗口
- 4. 以編程方式定製eclipse項目資源管理器
- 5. 編程方式編輯未使用資源管理器中列
- 6. 以編程方式更改圖像源
- 7. 以編程方式更改視圖
- 8. C#以編程方式創建資源
- 9. 如何以編程方式更改程序包資源管理器中的選擇內容
- 10. 文件資源管理器 - 以編程方式更改文件/文件夾關聯圖標
- 11. 在兩個資源文件之間以編程方式更改
- 12. 以編程方式更改字符串資源在android
- 13. 在Objective-C iOS 5中以編程方式更改資源用於Retina Display
- 14. 在drupal中以編程方式更改管理主題
- 15. 如何以編程方式刷新Visual Studio解決方案資源管理器?
- 16. 在視圖出現後以編程方式更改視圖
- 17. 如何進行「更改資源管理器」中RTC源控制視圖工作
- 18. 以編程方式在子視圖的控制器中更改子視圖
- 19. Eclipse:以編程方式添加到項目資源管理器樹查看器
- 20. 在項目資源管理器中以編程方式選擇/展開文件夾資源
- 21. 是否可以使用powershell來更改文件資源管理器視圖?
- 22. VS代碼 - 文件資源管理器/資源管理器更改案例
- 23. 以編程方式更新的SD卡文件未在Windows資源管理器中更新
- 24. 如何在解決方案資源管理器中以編程方式更新/刷新字形?
- 25. 在資源管理器中更改默認視圖。 Windows 8 /註冊表/ VBS
- 26. 在Windows資源管理器列表視圖中更改文件名顏色。
- 27. 以編程方式Android更改資源限定符
- 28. Android更改顏色資源價值以編程方式
- 29. winapi如何以編程方式更改Windows資源語言
- 30. 以編程方式更改資源(int/strings/styles/etc)的值
我認爲行爲是好的,因爲應用程序正在創建文件夾 - 有點像JavaScript可以關閉它已經打開的窗口。 – 2009-10-27 18:55:42
我正在尋找一些註冊表鍵來改變,但我沒有/沒有看到如何將註冊表連接到該文件夾。你是正確的,我不想覆蓋用戶的「記住每個文件夾的視圖設置」。是否可以使用desktop.ini文件? – pdavis 2009-10-27 19:17:24
我添加了關於desktop.ini的信息,但是我沒有使用該路由。另一個需要注意的是,WinXP/2k的註冊表設置僅限於400個文件夾。 Vista/2k8/Win7似乎是可配置的,但如果打開足夠的文件夾並查看設置存儲它似乎仍然可能最終失去您的首選樣式。 – opello 2009-10-27 23:54:27