ソフトウェア開発 Win32プログラミング

インターネット ショートカットの作成

戻る


インターネット ショートカット ファイル(URLファイル;拡張子URL)を作成する方法を以下に示す。

#include <windows.h>
#include <shlobj.h>
#include <intshcut.h>

#pragma comment(lib, "ole32.lib")
#pragma comment(lib, "shell32.lib")
#pragma comment(lib, "uuid.lib")

// CreateInternetShortcut - インターネットショートカットを作成する関数。
BOOL CreateInternetShortcut(
    LPCTSTR pszUrlFileName, 
    LPCTSTR pszURL)
{
    IPersistFile*   ppf;
    IUniformResourceLocator* purl;
    HRESULT hres;
#ifndef UNICODE
    WCHAR   wsz[MAX_PATH];
#endif

    hres = CoInitialize(NULL);
    if(SUCCEEDED(hres))
    {
        hres = CoCreateInstance(CLSID_InternetShortcut, NULL, 
            CLSCTX_INPROC_SERVER, IID_IUniformResourceLocator, 
            (LPVOID*)&purl);
        if(SUCCEEDED(hres))
        {
            purl->SetURL(pszURL, 0);

            hres = purl->QueryInterface(IID_IPersistFile, (LPVOID*)&ppf);
            if(SUCCEEDED(hres))
            {
#ifdef UNICODE
                hres = ppf->Save(pszUrlFileName, TRUE);
#else
                MultiByteToWideChar(CP_ACP, 0, pszUrlFileName, -1, wsz, 
                                    MAX_PATH);
                hres = ppf->Save(wsz, TRUE);
#endif
                ppf->Release();
            }
            purl->Release();
        }
        CoUninitialize();
    }
    SetLastError(hres);

    return SUCCEEDED(hres);
}

#ifdef UNITTEST
INT WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, INT)
{
    return CreateInternetShortcut(
        "C:\\Yahoo.URL", 
        "http://www.yahoo.co.jp");
}
#endif

仮引数のpszUrlFileNameには、フルパスを指定しなければならないことに注意。

ソース: inetsc.zip


戻る

©片山博文MZ
katayama.hirofumi.mz@gmail.com

inserted by FC2 system