[英]Programatically Pin\UnPin the folder from quick access menu in windows 10
[英]SHChangeNotify in Windows 10 not updating Quick Access items
似乎在 Windows 中調用 SHChangeNotify 不會調用對快速訪問窗格中的項目(或在資源管理器左側找到的任何自定義命名空間文件夾)的更新。 似乎將左側的樹擴展到文件夾工作正常,以及右側主視圖中的任何內容。
我們正在從 ac# WPF 應用程序調用 SHChangeNotify,盡管 SHChangeNotify 似乎在資源管理器中調用了我們的 DLL 掛鈎,對於正確視圖中的任何內容都很好。 這最終將調用一個命名管道,該管道將鈎回我們的 c# 代碼以調用對文件或文件夾圖標的更新。
這就是我們從 c# 中調用的內容:
[DllImport("shell32.dll", CharSet = CharSet.Auto)]
private static extern void SHChangeNotify(
int wEventId,
uint uFlags,
IntPtr dwItem1,
IntPtr dwItem2);
var ptr = Marshal.StringToHGlobalUni(fullPath);
SHChangeNotify((int)SHCNE.SHCNE_UPDATEITEM, (int)(SHCNF.SHCNF_PATHW | SHCNF.SHCNF_FLUSHNOWAIT), ptr, IntPtr.Zero);
Marshal.FreeHGlobal(ptr);
快速訪問虛擬文件夾路徑(作為字符串)為shell:::{679f85cb-0220-4080-b29b-5540cc05aab6}
(此GUID名稱為CLSID_HomeFolder )。
因此,您可以通過調用以下命令來強制刷新此虛擬文件夾下的所有項目:
SHChangeNotify(SHCNE_UPDATEDIR, SHCNF_PATHW, L"shell:::{679f85cb-0220-4080-b29b-5540cc05aab6}", NULL);
如果只想刷新一組特定的子代,則只需獲取PIDL或這些項目的路徑,然后對每個子項調用SHChangeNotify(SHCNE_UPDATEITEM,...)。
是否可以在 autoit 上執行此操作?
SHChangeNotify(SHCNE_UPDATEDIR, SHCNF_PATHW, L"shell:::{679f85cb-0220-4080-b29b-5540cc05aab6}", NULL);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.