0


IShellLinkおよびIPersistFIleインターフェイスを使用して新しいショートカットリンクファイルを作成しようとしました。IPersistFIle :: save()を呼び出してlnkファイルの保存を終了した後、save関数が戻った直後にlnkの作成に使用したicoファイルを削除したいと思います。しかし、問題は、lnkファイルが、私が使用したアイコンではなく、空白のページに表示されることです。
保存後にdeletefile()を呼び出さないと、lnkファイルは正しいように見えます。
私の質問は、lnkファイルを保存した後、いつアイコンファイルを削除できるかということです。
PS:ファイルを削除する前に2秒間スリープしようとしましたが、lnkも正しく見えます。
私のコードの一部は次のとおりです。

    hRes = pShellLink->QueryInterface(IID_IPersistFile,(LPVOID*)&pPerFile);

    if (SUCCEEDED(hRes))
    {
        WCHAR wszLinkFile[MAX_PATH + 1] = {0};
    #ifdef _UNICODE
        StringCchCopy(wszLinkFile, sizeof(wszLinkFile) / sizeof(wszLinkFile[0]), lpszLinkFilePath);
    #else
        MultiByteToWideChar(CP_ACP, 0, lpszLinkFilePath, -1, wszLinkFile, MAX_PATH);
    #endif

        hRes = pPerFile->Save(wszLinkFile, TRUE);
        pPerFile->Release();
    }
    pShellLink->Release(); 

    ::CoUninitialize();

    DeleteFile(lpszIconPath);
4

1 に答える 1

2

十分なコードを投稿していませんが、メソッド名はIShellLink :: SetIconLocation()です。

位置

アイコンを削除すると、その場所は無効になります。

ボイラープレートは、実行可能ファイルに埋め込まれているアイコンをリソースとして使用するためのものです。ただし、別の.icoファイルを使用する場合は、それを有効に保つ必要があります。

于 2012-09-05T02:16:08.633 に答える