Một chút nhiều khả năng ở đây:
Nếu bạn muốn mở - ví dụ - các tập tin theo mặc định với Notepad ++ (nếu được cài đặt), bạn có thể quét cho nó là chìa khóa registry nếu nó tồn tại và nó ở đâu, (Thông thường HKLM\SOFTWARE\Wow6432Node\Notepad++
[thử nghiệm Win7]) sau đó đi theo con đường đó và mở nó.
std::wstring file = L"C:\\Outfile.txt";
if (NotepadPlusPlusExists()) //Open with Notepad++ or use an other program... (maybe your own ?)
{
std::wstring wsNPPPath = GetNotepadPlusPlusPath();
ShellExecuteW(HWND, L"open", wsNPPPath.c_str(), file.c_str(), NULL, SW_NORMAL);
}
else //Open with default associated program <---
ShellExecuteW(HWND, NULL, file.c_str(), NULL, NULL, SW_NORMAL);
Nếu bạn muốn người dùng để có thể thay đổi chương trình mặc định hoặc chọn một chương trình anh/cô ấy muốn sử dụng, bạn có thể mở "Open with" hộp thoại.
//std::wstring StringArgsW(const wchar_t *format, ...);
std::wstring wsCmdOpenWith = StringArgsW(L"C:\\Windows\\system32\\shell32.dll,OpenAs_RunDLL \"%s\"", file.c_str());
ShellExecuteW(HWND, L"open", L"C:\\Windows\\system32\\rundll32.exe", wsCmdOpenWith.c_str(), NULL, SW_NORMAL);
Bạn cũng có thể mở tệp trong trình khám phá.
std::wstring wsCmdExplorer = StringArgsW(L"/select,\"%s\"", file.c_str());
ShellExecuteW(HWND, L"open", L"explorer.exe", wsCmdExplorer.c_str(), NULL, SW_NORMAL);
Nếu bạn đã làm việc đó, câu hỏi là gì? –