如何获取窗口的命令行"打开方式.."功能?
How to get command line of windows "open with .." function?
我之前问过一个问题,关于如何让窗口"用..打开"应用程序列表。这是这个问题的链接。
我们可以使用SHAssocEnumHandlers
接口来获得具有特定文件扩展名的文件关联,例如.png
然后使用IAssocHandler,可以检索与文件类型(.png
)相关联的可执行文件的完整路径和文件名。例如:['Paint': 'C:\Windows\system32\mspaint.exe', ...]
但我想获得使用给定图像执行mspaint.exe的命令行。像这样~"%systemroot%system32mspaint.exe" "%1"
有没有其他msdnapi可以帮助我们获得"openwith.."命令?我认为它应该有,因为windows XP已经有了这个功能。
使用AssocQueryString(..., ASSOCSTR_COMMAND, ...);
示例:
TCHAR commandline[1024];
DWORD size = ARRAYSIZE(commandline);
AssocQueryString(0, ASSOCSTR_COMMAND, _T(".txt"), 0, commandline, &size);
有SHOpenWithDialog
函数。
MSDN 上SHOpenWithDialog的链接
但是,您不能使用它来检索所选程序。您只能使用它来调用"Open With"行为,并最终打开文件(如果设置了OAIF_EXEC
)。如果这就是你感兴趣的全部,那么试试:
#include <windows.h>
#include <Shlobj.h>
#pragma comment(lib, "Shell32.lib")
int main()
{
OPENASINFO info = { 0 };
info.pcszFile = L"C:\Temp\SomeFile.png";
info.pcszClass = NULL;
info.oaifInFlags = OAIF_ALLOW_REGISTRATION | OAIF_EXEC;
SHOpenWithDialog(NULL, &info);
return 0;
}
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 多态性和功能结合
- 如何在c++中为模板函数实例创建快捷方式
- 带内存和隔离功能的SQLite
- 在CMakeLists.txt的安装功能中使用.cmake文件有什么用
- 在c代码之间共享数据的最佳方式
- 类模板的成员功能的定义在单独的TU中完全专业化
- c++ Visual Studio 2015 快捷方式,用于从选择代码中生成功能
- 确定范围是访问虚拟功能的合法方式吗?
- 如何在现有 c++ 代码中以功能方式实现遥测
- 优雅地尝试以特定的方式执行各种功能
- 如何以有效的方式使用boost mpi广播功能
- C ,以并行和协作的方式运行两个功能
- 如何获取窗口的命令行"打开方式.."功能?
- 如何以编程方式启用/禁用Windows功能
- C++ ⎼ 两个相似的功能,但执行方式却大不相同
- SetupDi API:以编程方式控制设备管理器功能
- Windows 8.1使用SHBrowseForFolder功能无法展开快捷方式
- 如何以非内联方式定义模板覆盖的功能
- Qt:在QThread中实现睡眠功能的最佳方式是什么