IShellLinkW
COM公式ドキュメント
シェルリンクを作成、変更、解決するメソッドを公開します。(Unicode)
解説(Remarks)
shobjidl_core.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI 版または Unicode 版を自動的に選択するエイリアスとして IShellLink を定義します。エンコーディング中立なエイリアスの使用を、エンコーディング中立でないコードと混在させると、不一致が生じてコンパイルエラーや実行時エラーの原因となる場合があります。詳細については、関数プロトタイプの規約 を参照してください。
メソッド 18
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
シェルリンクオブジェクトのターゲットのパスとファイル名を取得します。(Unicode)
| pszFile | LPWSTR | out | シェルリンクオブジェクトのターゲットのパスとファイル名を受け取るバッファのアドレスです。 |
| cch | INT | in | pszFile パラメーターが指すバッファのサイズ (文字数)。終端の null 文字を含みます。返すことができるパスの最大サイズは MAX_PATH です。このパラメーターは一般に ARRAYSIZE(pszFile) を呼び出して設定します。ARRAYSIZE マクロは Winnt.h で定義されています。 |
| pfd | WIN32_FIND_DATAW* | inout | シェルリンクオブジェクトのターゲットに関する情報を受け取る WIN32_FIND_DATA 構造体へのポインターです。このパラメーターが NULL の場合、追加情報は返されません。 |
| fFlags | DWORD | in | 取得するパス情報の種類を指定するフラグです。このパラメーターには、次の値の組み合わせを指定できます。 SLGP_SHORTPATH標準の短い (8.3 形式) ファイル名を取得します。 SLGP_UNCPRIORITYサポートされていません。使用しないでください。 SLGP_RAWPATH生 (raw) のパス名を取得します。生のパスは存在しない可能性があり、展開が必要な環境変数を含むことがあります。 SLGP_RELATIVEPRIORITYWindows Vista 以降。可能であれば、IShellLink::SetRelativePath の以前の呼び出しで設定されたパスを基準とした、ショートカットのターゲットの相対パスを取得します。 - fFlags.SLGP_RAWPATH生 (raw) のパス名を取得します。生のパスは存在しない可能性があり、展開が必要な環境変数を含むことがあります。 - fFlags.SLGP_RELATIVEPRIORITYWindows Vista 以降。可能であれば、IShellLink::SetRelativePath の以前の呼び出しで設定されたパスを基準とした、ショートカットのターゲットの相対パスを取得します。 - fFlags.SLGP_SHORTPATH標準の短い (8.3 形式) ファイル名を取得します。 - fFlags.SLGP_UNCPRIORITYサポートされていません。使用しないでください。 |
戻り値
型: HRESULT
操作が成功し、有効なパスが取得された場合は S_OK を返します。操作は成功したがパスが取得されなかった場合は S_FALSE を返し、pszFile は空になります。それ以外の場合は、標準の HRESULT エラー値のいずれかを返します。
シェルリンクオブジェクトのターゲットの項目識別子リストを取得します。(Unicode)
| ppidl | ITEMIDLIST** | out | このメソッドが返るとき、PIDL のアドレスが格納されます。 |
戻り値
型: HRESULT
操作が成功し、1 つ以上の有効な PIDL が取得された場合は S_OK を返します。操作は成功したが PIDL が取得されなかった場合は、ppidl を NULL に設定して S_FALSE を返します。それ以外の場合は、標準のエラー値を返します。
シェルリンクオブジェクトの項目識別子リスト (PIDL) へのポインターを設定します。(Unicode)
| pidl | ITEMIDLIST* | in | オブジェクトの完全修飾 PIDL です。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドは、コントロールパネルアプリケーション、プリンター、別のコンピューターなど、ファイルではないオブジェクトへのシェルリンクを設定する必要がある場合に役立ちます。
シェルリンクオブジェクトの説明文字列を取得します。(Unicode)
| pszName | LPWSTR | out | 説明文字列を受け取るバッファへのポインターです。 |
| cch | INT | in | pszName パラメーターが指すバッファにコピーする最大文字数です。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
Windows 2000 以降では、pszName に返される文字列の最大長は INFOTIPSIZE です。Windows 2000 より前のシステムでは、文字列のサイズは MAX_PATH に制限されます。
シェルリンクオブジェクトの説明を設定します。説明には、アプリケーションが定義する任意の文字列を指定できます。(Unicode)
| pszName | LPWSTR | in | 新しい説明文字列を含むバッファへのポインターです。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
Windows 2000 以降では、pszName で指定する文字列は INFOTIPSIZE 以下でなければなりません。Windows 2000 より前のシステムでは、文字列のサイズは MAX_PATH に制限されます。
シェルリンクオブジェクトの作業ディレクトリ名を取得します。(Unicode)
| pszDir | LPWSTR | out | 作業ディレクトリ名を受け取るバッファのアドレスです。 |
| cch | INT | in | pszDir パラメーターが指すバッファにコピーする最大文字数です。作業ディレクトリ名がこのパラメーターで指定した最大値より長い場合は切り詰められます。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
シェルリンクオブジェクトの作業ディレクトリ名を設定します。(Unicode)
| pszDir | LPWSTR | in | 新しい作業ディレクトリ名を含むバッファのアドレスです。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
作業ディレクトリは、ターゲットが作業ディレクトリを必要とする場合を除き、省略可能です。たとえば、別のディレクトリにあるテンプレートを使用する Microsoft Word 文書へのシェルリンクをアプリケーションが作成する場合、このメソッドを使用して作業ディレクトリを設定します。
シェルリンクオブジェクトに関連付けられたコマンドライン引数を取得します。(Unicode)
| pszArgs | LPWSTR | out | このメソッドが正常に返るときにコマンドライン引数を受け取るバッファへのポインターです。 |
| cch | INT | in | pszArgs パラメーターで指定されたバッファにコピーできる最大文字数です。Unicode 文字列の場合、文字列の最大長に制限はありません。ANSI 文字列の場合、返される文字列の最大長は Windows のバージョンによって異なり、Windows 2000 より前では MAX_PATH、Windows 2000 以降では INFOTIPSIZE (Commctrl.h で定義) です。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
Windows 7 以降では、このメソッドではなく IPropertyStore (PKEY_Link_Arguments 値を使用) を通じて引数文字列を取得することを推奨します。このメソッドは、指定されたバッファが十分な大きさでない場合に文字列を暗黙的に切り詰めることがあります。IPropertyStore は正しいサイズの文字列を割り当てます。
シェルリンクオブジェクトのコマンドライン引数を設定します。(Unicode)
| pszArgs | LPWSTR | in | 新しいコマンドライン引数を含むバッファへのポインターです。Unicode 文字列の場合、文字列の最大長に制限はありません。ANSI 文字列の場合、返される文字列の最大長は Windows のバージョンによって異なり、Windows 2000 より前では MAX_PATH、Windows 2000 以降では INFOTIPSIZE (Commctrl.h で定義) です。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドは、コンパイラーなど、特別なフラグを引数として受け取るアプリケーションへのリンクを作成する場合に役立ちます。
シェルリンクオブジェクトのキーボードショートカット (ホットキー) を取得します。(Unicode)
| pwHotkey | WORD* | out | キーボードショートカットのアドレスです。仮想キーコードが下位バイトに、修飾フラグが上位バイトに格納されます。修飾フラグには、次の値の組み合わせを指定できます。 HOTKEYF_ALTALT キー HOTKEYF_CONTROLCTRL キー HOTKEYF_EXT拡張キー HOTKEYF_SHIFTSHIFT キー - pwHotkey.HOTKEYF_ALTALT キー - pwHotkey.HOTKEYF_CONTROLCTRL キー - pwHotkey.HOTKEYF_EXT拡張キー - pwHotkey.HOTKEYF_SHIFTSHIFT キー |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
シェルリンクオブジェクトのキーボードショートカット (ホットキー) を設定します。(Unicode)
| wHotkey | WORD | in | 新しいキーボードショートカットです。仮想キーコードが下位バイトに、修飾フラグが上位バイトに格納されます。修飾フラグには、IShellLink::GetHotkey メソッドの説明で指定された値の組み合わせを指定できます。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
キーボードショートカットを設定すると、特定のキーの組み合わせを押すことでユーザーがオブジェクトをアクティブにできるようになります。
シェルリンクオブジェクトの表示コマンドを取得します。(Unicode)
| piShowCmd | SHOW_WINDOW_CMD* | out | コマンドへのポインターです。次のコマンドがサポートされています。 SW_SHOWNORMALウィンドウをアクティブにして表示します。ウィンドウが最小化または最大化されている場合、システムはそれを元のサイズと位置に復元します。アプリケーションは、ウィンドウを初めて表示するときにこのフラグを指定する必要があります。 SW_SHOWMAXIMIZEDウィンドウをアクティブにして、最大化されたウィンドウとして表示します。 SW_SHOWMINIMIZEDウィンドウをアクティブにして、最小化されたウィンドウとして表示します。 - piShowCmd.SW_SHOWMAXIMIZEDウィンドウをアクティブにして、最大化されたウィンドウとして表示します。 - piShowCmd.SW_SHOWMINIMIZEDウィンドウをアクティブにして、最小化されたウィンドウとして表示します。 - piShowCmd.SW_SHOWNORMALウィンドウをアクティブにして表示します。ウィンドウが最小化または最大化されている場合、システムはそれを元のサイズと位置に復元します。アプリケーションは、ウィンドウを初めて表示するときにこのフラグを指定する必要があります。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
表示コマンドは、対応するオブジェクトの初期表示状態を設定するために使用されます。これは ShowWindow で説明されている SW_xxx 値のいずれかです。
シェルリンクオブジェクトの表示コマンドを設定します。表示コマンドは、ウィンドウの初期表示状態を設定します。(Unicode)
| iShowCmd | SHOW_WINDOW_CMD | in | コマンドです。SetShowCmd は次の ShowWindow コマンドのいずれかを受け付けます。 SW_SHOWNORMALウィンドウをアクティブにして表示します。ウィンドウが最小化または最大化されている場合、システムはそれを元のサイズと位置に復元します。アプリケーションは、ウィンドウを初めて表示するときにこのフラグを指定する必要があります。 SW_SHOWMAXIMIZEDウィンドウをアクティブにして、最大化されたウィンドウとして表示します。 SW_SHOWMINNOACTIVEウィンドウを最小化状態で表示し、現在アクティブなウィンドウをアクティブなままにします。 - iShowCmd.SW_SHOWMAXIMIZEDウィンドウをアクティブにして、最大化されたウィンドウとして表示します。 - iShowCmd.SW_SHOWMINNOACTIVEウィンドウを最小化状態で表示し、現在アクティブなウィンドウをアクティブなままにします。 - iShowCmd.SW_SHOWNORMALウィンドウをアクティブにして表示します。ウィンドウが最小化または最大化されている場合、システムはそれを元のサイズと位置に復元します。アプリケーションは、ウィンドウを初めて表示するときにこのフラグを指定する必要があります。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
シェルリンクオブジェクトのアイコンの場所 (パスとインデックス) を取得します。(Unicode)
| pszIconPath | LPWSTR | out | アイコンを含むファイルのパスを受け取るバッファのアドレスです。 |
| cch | INT | in | pszIconPath パラメーターが指すバッファにコピーする最大文字数です。 |
| piIcon | INT* | out | アイコンのインデックスを受け取る値のアドレスです。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
シェルリンクオブジェクトのアイコンの場所 (パスとインデックス) を設定します。(Unicode)
| pszIconPath | LPWSTR | in | アイコンを含むファイルのパスを格納するバッファのアドレスです。 |
| iIcon | INT | in | アイコンのインデックスです。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
シェルリンクオブジェクトへの相対パスを設定します。(Unicode)
| pszPathRel | LPWSTR | in | ショートカットの解決を実行する際の基準となる、ショートカットファイルの完全修飾パスを含むバッファのアドレスです。フォルダー名ではなく、ファイル名である必要があります。 |
| dwReserved | DWORD | in | 予約済みです。このパラメーターには 0 を設定してください。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
クライアントは通常、リンクがそのターゲットと共に移動され、絶対パスが無効になる可能性がある場合に相対リンクを定義します。SetRelativePath メソッドを使用すると、ターゲットと相対パスの間の共通のパスプレフィックスに基づいて、リンク解決処理がターゲットを見つけるのを補助できます。解決処理を補助するため、クライアントはリンク作成処理の一環として相対パスを設定する必要があります。
例
次のシナリオを考えます。
- リンク c:\MyLink.lnk があります。
- リンクのターゲットは c:\MyDocs\MyFile.txt です。
- リンクと MyDocs\MyFile.txt を d:\ に移動したいとします。
::SetRelativePath("c:\MyLink.lnk", NULL);
ショートカットを解決する前に、新しい相対パスを設定すると、Resolve コードが新しい場所でファイルを見つけます。
::SetRelativePath("d:\MyLink.lnk", NULL);
シェルリンクのターゲットが移動または名前変更されていても、そのターゲットを見つけようと試みます。(Unicode)
| hwnd | HWND | in | シェルがダイアログボックスの親として使用するウィンドウへのハンドルです。シェルリンクの解決中にユーザーに追加情報の入力を求める必要がある場合、シェルはダイアログボックスを表示します。 |
| fFlags | DWORD | in | アクションフラグです。このパラメーターには、次の値の組み合わせを指定できます。 SLR_NO_UI (0x0001)0x0001。リンクを解決できない場合にダイアログボックスを表示しません。SLR_NO_UI が設定されている場合、fFlags の上位ワードに、リンクの解決に費やす最大時間を指定するタイムアウト値を設定できます。タイムアウト時間内にリンクを解決できない場合、関数は戻ります。上位ワードが 0 に設定されている場合、タイムアウト時間は既定値の 3,000 ミリ秒 (3 秒) に設定されます。値を指定するには、fFlags の上位ワードに希望するタイムアウト時間 (ミリ秒単位) を設定します。 SLR_ANY_MATCH (0x0002)0x0002。使用されません。 SLR_UPDATE (0x0004)0x0004。リンクオブジェクトが変更されている場合、そのパスと識別子リストを更新します。SLR_UPDATE が設定されている場合、リンクオブジェクトが変更されたかどうかを判定するために IPersistFile::IsDirty を呼び出す必要はありません。 SLR_NOUPDATE (0x0008)0x0008。リンク情報を更新しません。 SLR_NOSEARCH (0x0010)0x0010。検索ヒューリスティックを実行しません。 SLR_NOTRACK (0x0020)0x0020。分散リンク追跡を使用しません。 SLR_NOLINKINFO (0x0040)0x0040。分散リンク追跡を無効にします。既定では、分散リンク追跡はボリューム名に基づいて複数のデバイスにわたるリムーバブルメディアを追跡します。また、ドライブ文字が変更されたリモートファイルシステムを追跡するために UNC パスを使用します。SLR_NOLINKINFO を設定すると、両方の種類の追跡が無効になります。 SLR_INVOKE_MSI (0x0080)0x0080。Windows インストーラーを呼び出します。 SLR_NO_UI_WITH_MSG_PUMP (0x0101)0x0101。Windows XP 以降。 SLR_OFFER_DELETE_WITHOUT_FILE (0x0200)0x0200。Windows 7 以降。このメソッドがショートカットを解決できない場合、そのショートカットがファイルへのショートカットでなくても、ショートカットを削除するオプションを提供します。 SLR_KNOWNFOLDER (0x0400)0x0400。Windows 7 以降。ターゲットが既知のフォルダーであり、その既知のフォルダーがリダイレクトされた場合に、変更あり (dirty) として報告します。これは、元のターゲットパスがファイルシステムパスまたは ID リストであり、エイリアス化された既知のフォルダー ID リストでない場合にのみ機能します。 SLR_MACHINE_IN_LOCAL_TARGET (0x0800)0x0800。Windows 7 以降。ローカルコンピューターを指す UNC ターゲット内のコンピューター名を解決します。この値は SLDF_KEEP_LOCAL_IDLIST_FOR_UNC_TARGET と共に使用されます。 SLR_UPDATE_MACHINE_AND_SID (0x1000)0x1000。Windows 7 以降。必要に応じて、コンピューター GUID とユーザー SID を更新します。 - fFlags.SLR_ANY_MATCH (0x0002)0x0002。使用されません。 - fFlags.SLR_INVOKE_MSI (0x0080)0x0080。Windows インストーラーを呼び出します。 - fFlags.SLR_KNOWNFOLDER (0x0400)0x0400。Windows 7 以降。ターゲットが既知のフォルダーであり、その既知のフォルダーがリダイレクトされた場合に、変更あり (dirty) として報告します。これは、元のターゲットパスがファイルシステムパスまたは ID リストであり、エイリアス化された既知のフォルダー ID リストでない場合にのみ機能します。 - fFlags.SLR_MACHINE_IN_LOCAL_TARGET (0x0800)0x0800。Windows 7 以降。ローカルコンピューターを指す UNC ターゲット内のコンピューター名を解決します。この値は SLDF_KEEP_LOCAL_IDLIST_FOR_UNC_TARGET と共に使用されます。 - fFlags.SLR_NOLINKINFO (0x0040)0x0040。分散リンク追跡を無効にします。既定では、分散リンク追跡はボリューム名に基づいて複数のデバイスにわたるリムーバブルメディアを追跡します。また、ドライブ文字が変更されたリモートファイルシステムを追跡するために UNC パスを使用します。SLR_NOLINKINFO を設定すると、両方の種類の追跡が無効になります。 - fFlags.SLR_NOSEARCH (0x0010)0x0010。検索ヒューリスティックを実行しません。 - fFlags.SLR_NOTRACK (0x0020)0x0020。分散リンク追跡を使用しません。 - fFlags.SLR_NOUPDATE (0x0008)0x0008。リンク情報を更新しません。 - fFlags.SLR_NO_UI (0x0001)0x0001。リンクを解決できない場合にダイアログボックスを表示しません。SLR_NO_UI が設定されている場合、fFlags の上位ワードに、リンクの解決に費やす最大時間を指定するタイムアウト値を設定できます。タイムアウト時間内にリンクを解決できない場合、関数は戻ります。上位ワードが 0 に設定されている場合、タイムアウト時間は既定値の 3,000 ミリ秒 (3 秒) に設定されます。値を指定するには、fFlags の上位ワードに希望するタイムアウト時間 (ミリ秒単位) を設定します。 - fFlags.SLR_NO_UI_WITH_MSG_PUMP (0x0101)0x0101。Windows XP 以降。 - fFlags.SLR_OFFER_DELETE_WITHOUT_FILE (0x0200)0x0200。Windows 7 以降。このメソッドがショートカットを解決できない場合、そのショートカットがファイルへのショートカットでなくても、ショートカットを削除するオプションを提供します。 - fFlags.SLR_UPDATE (0x0004)0x0004。リンクオブジェクトが変更されている場合、そのパスと識別子リストを更新します。SLR_UPDATE が設定されている場合、リンクオブジェクトが変更されたかどうかを判定するために IPersistFile::IsDirty を呼び出す必要はありません。 - fFlags.SLR_UPDATE_MACHINE_AND_SID (0x1000)0x1000。Windows 7 以降。必要に応じて、コンピューター GUID とユーザー SID を更新します。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
リンクの作成後に、ターゲットの名前や場所が変更されることがあります。IShellLink::Resolve メソッドはまず、リンクに関連付けられたパスを取得します。オブジェクトがすでに存在しない場合や名前が変更されている場合、Resolve はそれを見つけようと試みます。成功し、かつ次の条件が満たされる場合、リンクオブジェクトの読み込み元のファイルは、リンクオブジェクトの新しい状態を反映するように更新されます。
- SLR_UPDATE フラグが設定されている。
- ターゲットが移動または名前変更されており、シェルリンクオブジェクトの内部状態が新しいターゲットを参照するように更新されている。
- シェルリンクオブジェクトが IPersistFile を通じてファイルから読み込まれた。
Resolve はターゲットオブジェクトを見つけるために 2 つの方法を持っています。1 つ目は分散リンク追跡サービスです。このサービスが利用可能な場合、NTFS バージョン 5.0 ボリューム上にあり、そのボリューム内の別の場所に移動されたオブジェクトを見つけることができます。また、他のコンピューター上のボリュームを含め、別の NTFS バージョン 5.0 ボリュームに移動されたオブジェクトも見つけることができます。このサービスの使用を抑制するには、SLR_NOTRACK フラグを設定します。
分散リンク追跡が利用できないか、リンクオブジェクトの検出に失敗した場合、Resolve は検索ヒューリスティックを使用して検出を試みます。まず、オブジェクトの最後に判明しているディレクトリ内で、名前は異なるが同じ属性とファイル作成時刻を持つオブジェクトを探します。次に、オブジェクトの最後に判明しているディレクトリの近辺にあるサブディレクトリを再帰的に検索します。同じ名前または作成時刻を持つオブジェクトを探します。最後に、Resolve はデスクトップおよびその他のローカルボリューム上で一致するオブジェクトを探します。検索ヒューリスティックの使用を抑制するには、SLR_NOSEARCH フラグを設定します。
両方の方法が失敗した場合、システムは場所の入力をユーザーに求めるダイアログボックスを表示します。このダイアログボックスを抑制するには、SLR_NO_UI フラグを設定します。
シェルリンクオブジェクトのターゲットのパスとファイル名を設定します。(Unicode)
| pszFile | LPWSTR | in | 新しいパスを含むバッファのアドレスです。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IShellLinkW "{000214F9-0000-0000-C000-000000000046}" #usecom global IShellLinkW IID_IShellLinkW "{00021401-0000-0000-C000-000000000046}" #comfunc global IShellLinkW_GetPath 3 var,int,var,int #comfunc global IShellLinkW_GetIDList 4 var #comfunc global IShellLinkW_SetIDList 5 var #comfunc global IShellLinkW_GetDescription 6 var,int #comfunc global IShellLinkW_SetDescription 7 wstr #comfunc global IShellLinkW_GetWorkingDirectory 8 var,int #comfunc global IShellLinkW_SetWorkingDirectory 9 wstr #comfunc global IShellLinkW_GetArguments 10 var,int #comfunc global IShellLinkW_SetArguments 11 wstr #comfunc global IShellLinkW_GetHotkey 12 var #comfunc global IShellLinkW_SetHotkey 13 int #comfunc global IShellLinkW_GetShowCmd 14 var #comfunc global IShellLinkW_SetShowCmd 15 int #comfunc global IShellLinkW_GetIconLocation 16 var,int,var #comfunc global IShellLinkW_SetIconLocation 17 wstr,int #comfunc global IShellLinkW_SetRelativePath 18 wstr,int #comfunc global IShellLinkW_Resolve 19 sptr,int #comfunc global IShellLinkW_SetPath 20 wstr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IShellLinkW "{000214F9-0000-0000-C000-000000000046}" #usecom global IShellLinkW IID_IShellLinkW "{00021401-0000-0000-C000-000000000046}" #comfunc global IShellLinkW_GetPath 3 sptr,int,sptr,int #comfunc global IShellLinkW_GetIDList 4 sptr #comfunc global IShellLinkW_SetIDList 5 sptr #comfunc global IShellLinkW_GetDescription 6 sptr,int #comfunc global IShellLinkW_SetDescription 7 wstr #comfunc global IShellLinkW_GetWorkingDirectory 8 sptr,int #comfunc global IShellLinkW_SetWorkingDirectory 9 wstr #comfunc global IShellLinkW_GetArguments 10 sptr,int #comfunc global IShellLinkW_SetArguments 11 wstr #comfunc global IShellLinkW_GetHotkey 12 sptr #comfunc global IShellLinkW_SetHotkey 13 int #comfunc global IShellLinkW_GetShowCmd 14 sptr #comfunc global IShellLinkW_SetShowCmd 15 int #comfunc global IShellLinkW_GetIconLocation 16 sptr,int,sptr #comfunc global IShellLinkW_SetIconLocation 17 wstr,int #comfunc global IShellLinkW_SetRelativePath 18 wstr,int #comfunc global IShellLinkW_Resolve 19 sptr,int #comfunc global IShellLinkW_SetPath 20 wstr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。