使用 ShellExecute 打开文件属性遇到的问题

在尝试使用 ShellExecute 来打开文件属性对话框的时候,发现下面的调用总是失败,属性对话框不能打开,返回值是 SE_ERR_NOASSOC:

?
ShellExecute(hWnd, _T( "properties" ), szFile, NULL, NULL, SW_SHOWNORMAL);

百思不得其解,后来参考了一下AutoHotkey的代码转用 ShellExecuteEx,总算可以打开属性对话框了:

?
1
2
3
4
5
6
7
8
9
10
11
SHELLEXECUTEINFO sei = {0};
sei.cbSize  = sizeof (sei);
// SEE_MASK_INVOKEIDLIST is needed for the "properties" verb to work reliably.
sei.fMask   = SEE_MASK_NOCLOSEPROCESS | SEE_MASK_FLAG_NO_UI | SEE_MASK_INVOKEIDLIST;
sei.lpDirectory = NULL; // OK if NULL or blank; that will cause current dir to be used.
sei.nShow   = SW_SHOWNORMAL;
sei.lpVerb  = _T( "properties" );
sei.lpFile  = GetDocument()->GetPathName();
sei.lpParameters = NULL;
sei.hwnd    = GetSafeHwnd();
BOOL  bRet   = ShellExecuteEx(&sei);

ps.有几点要记录一下:
1、hwnd 指向的窗口如果是隐藏的时候会有一些副作用;
2、lpVerb必须是 "properties ","Properties"会失败。


转自:http://www.cnblogs.com/yonken/archive/2010/02/23/ShellExecute_Fail_To_Open_Properties_Dialog.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值