轻松显示“任务栏和「开始」菜单属性”对话框






1.89/5 (8投票s)
本文展示了从 VC++ 运行控制面板小程序的方法,即使这些小程序没有 cpl 扩展文件。
背景
在某个新闻组中,有人询问如何在 VC++ 中显示“任务栏和开始菜单属性”对话框。我将在这里展示从 VC++ 运行多个不同控制面板小程序的方法。
从“运行”框运行
从“运行”框运行小程序很简单,只需输入“control desk.cpl”并按“确定”。它将显示桌面属性对话框。
从 VC++ 运行
从您的代码运行小程序也很简单。
ShellExecute( this->m_hWnd, NULL, "desk.cpl", NULL, NULL, 0);
那么问题是什么?
显示“任务栏和开始菜单属性”小程序的问题在于,您找不到显示此对话框的“cpl”文件。
解决方案
为了寻求帮助,我搜索了 MSDN,它说“您可以使用任何脚本语言显示此对话框”。但是 VC++ 呢?以下是如何使用 IDispatch
方法显示此对话框的方法。
CString ss = ("TrayProperties");
BSTR szMember = ss.AllocSysString();
DISPID dispid;
COleDispatchDriver disp;
disp.CreateDispatch("Shell.Application");
disp.m_lpDispatch->GetIDsOfNames(IID_NULL,&szMember,1,LOCALE_USER_DEFAULT,&dispid);
disp.InvokeHelper(dispid, DISPATCH_METHOD, NULL,NULL,NULL);
SysFreeString( szMember);
切记初始化和取消初始化 COM。