簡體   English   中英

如何獲得“用..打開”功能的Windows命令行?

[英]How to get command line of windows “open with ..” function?

我之前曾問過一個有關如何使Windows“以..打開”應用程序列表的問題。 這是該問題的鏈接

我們可以使用SHAssocEnumHandlers接口來獲取具有特定文件擴展名的文件關聯,例如.png

然后使用IAssocHandler並可以檢索與文件類型( .png )關聯的可執行文件的完整路徑和文件名。 例如: ['Paint': 'C:\\\\Windows\\\\system32\\\\mspaint.exe', ...]

但是我想獲得使用給定圖像執行mspaint.exe的命令行。 像這樣〜 "%systemroot%\\system32\\mspaint.exe" "%1"

是否有另一個msdn api可以幫助我們獲取“ open with ..”命令? 我認為應該有,因為Windows XP已經具有此功能。

使用AssocQueryString(..., ASSOCSTR_COMMAND, ...);

例:

TCHAR commandline[1024];
DWORD size = ARRAYSIZE(commandline);
AssocQueryString(0, ASSOCSTR_COMMAND, _T(".txt"), 0, commandline, &size);

SHOpenWithDialog函數。

鏈接到MSDN上的SHOpenWithDialog

但是,您不能使用它來檢索選定的程序。 您只能使用它來調用“打開方式”行為並最終打開文件(如果設置了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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM