[英]How to programmatically get current directory of a Windows command line or Windows explorer?
[英]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
函數。
但是,您不能使用它來檢索選定的程序。 您只能使用它來調用“打開方式”行為並最終打開文件(如果設置了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.