IShellLink::SetArguments
-
Das Auslesen von IShellLinks (Windows Shortcuts) klappt. Aber beim Editieren der Argumente via IShellLink::SetArguments passiert nichts.
std::wstring link(L"C:\\Users\\test\\Desktop\\test.lnk"); SetArguments(link, L"hello");
Folgenden Code verwende ich zum Editieren der Argumentliste:
void SetArguments(const std::wstring& path, const std::wstring& arguments) { IShellLink* shell_link; IPersistFile* persistent_file; if (SUCCEEDED(CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, reinterpret_cast<LPVOID*>(&shell_link)))) { if (SUCCEEDED(shell_link->QueryInterface(IID_IPersistFile, reinterpret_cast<void**>(&persistent_file)))) { if (SUCCEEDED(persistent_file->Load(path.c_str(), STGM_READ))) { if (SUCCEEDED(shell_link->SetArguments(arguments.c_str()))) { // OK } } persistent_file->Release(); } shell_link->Release(); } }
Alles wurde zuvor mit CoInitialize(NULL) initialisiert. Der Testlink existiert bereits.
-
In IPersistFile gibt es nicht nur Load, sondern auch Save.
-
Vielen dank!!!