Tag: windows shell

尝试为我的屏幕保护程序显示配置窗口的问题(来自以高强制完整性级别运行的GUI应用程序)

我有一个带有自己的屏幕保护程序的旧项目。 该项目的GUI应用程序有一个“配置屏幕保护程序”选项,它应该显示我的屏幕保护程序配置窗口(通常从控制面板 – >显示 – >个性化 – >屏幕保护程序 – >设置。) 要显示配置窗口,需要使用/c参数调用屏幕保护程序进程,如此处所述 。 屏幕保护程序本身放在系统目录中,即”C:\Windows\System32″ 。 因此,要从我的(32位)GUI应用程序模拟这个,我执行以下操作: //Error checks are omitted for brevity BOOL bResult = FALSE; TCHAR buffSysFldr[MAX_PATH]; buffSysFldr[0] = 0; ::GetSystemDirectory(buffSysFldr, SIZEOF(buffSysFldr)); //Make the path, which basically becomes: // “C:\Windows\System32\mysvr.scr” /c TCHAR buff[MAX_PATH]; buff[0] = 0; ::StringCbPrintf(buff, sizeof(buff), L”\”%s\\mysvr.scr\” /c”, buffSysFldr); STARTUPINFO si = {0}; […]

如何告诉Windows资源管理器刷新其图标?

一旦我的安装程序完成了我的应用程序的exe的新版本的安装,我想告诉Explorer使用新exe的图标作为其快捷方式。 但是,我无法弄清楚如何做到这一点。 从在线阅读,看起来问题是系统图像列表正在缓存旧版本的图标。 我尝试使用SHCNE_UPDATEIMAGE参数调用SHChangeNotify 。 我试过调用SHUpdateImage 。 我甚至尝试过广告WM_SETTINGCHANGE的大锤方法 。 似乎没什么用。 我完全有可能做错事。 任何帮助,将不胜感激。 警告:非常难看的测试代码如下。 #if 1 // First attempt: using shell functions wchar_t icon_path[MAX_PATH]; int icon_index; UINT icon_flags; IShellFolder *desktop_folder; IShellFolder *sub_folder; IExtractIcon *extract_icon; LPITEMIDLIST pidl; SHGetDesktopFolder(&desktop_folder); wchar_t *folder_path = L”C:\\Documents and Settings\\All Users\\Start Menu\\Programs\\MyCompany\\”; desktop_folder->ParseDisplayName(NULL, NULL, folder_path, NULL, &pidl, NULL); desktop_folder->BindToObject(pidl, NULL, IID_IShellFolder, (void**) &sub_folder); […]