/// <summary> /// 指定したファイルからショートカットを読み込みます。 /// </summary> /// <param name="linkFile">ショートカットを読み込むファイル</param> /// <param name="hWnd">このコードを呼び出したオーナーのウィンドウハンドル</param> /// <param name="resolveFlags">ショートカット情報の解決に関する動作を表すフラグ</param> /// <param name="timeOutMilliseconds">SLR_NO_UIを指定したときのタイムアウト値(ミリ秒)</param> /// <exception cref="FileNotFoundException">ファイルが見つかりません。</exception> /// <exception cref="COMException">IPersistFileインターフェイスを取得できませんでした。</exception> public void Load(string linkFile, IntPtr hWnd, ShellLinkResolveFlags resolveFlags, int timeOutMilliseconds) { if (!File.Exists(linkFile)) { throw new FileNotFoundException("ファイルが見つかりません。", linkFile); } // IPersistFileインターフェイスを取得 IPersistFile persistFile = GetIPersistFile(); if (persistFile == null) { throw new COMException("IPersistFileインターフェイスを取得できませんでした。"); } // 読み込み persistFile.Load(linkFile, 0x00000000); // フラグを処理 uint flags = (uint)resolveFlags; if ((resolveFlags & ShellLinkResolveFlags.SLR_NO_UI) == ShellLinkResolveFlags.SLR_NO_UI) { flags |= (uint)(timeOutMilliseconds << 16); } // ショートカットに関する情報を読み込む if (isUnicodeEnvironment) { shellLinkW.Resolve(hWnd, flags); } else { shellLinkA.Resolve(hWnd, flags); } // カレントファイルを指定 currentFile = linkFile; }
/// <summary> /// 指定したファイルからショートカットを読み込みます。 /// </summary> /// <param name="linkFile">ショートカットを読み込むファイル</param> /// <param name="hWnd">このコードを呼び出したオーナーのウィンドウハンドル</param> /// <param name="resolveFlags">ショートカット情報の解決に関する動作を表すフラグ</param> /// <param name="timeOut">SLR_NO_UIを指定したときのタイムアウト値(ミリ秒)</param> /// <exception cref="FileNotFoundException">ファイルが見つかりません。</exception> /// <exception cref="COMException">IPersistFileインターフェイスを取得できませんでした。</exception> public void Load(string linkFile, IntPtr hWnd, ShellLinkResolveFlags resolveFlags, TimeSpan timeOut) { Load(linkFile, hWnd, resolveFlags, (int)timeOut.TotalMilliseconds); }
/// <summary> /// 指定したファイルからショートカットを読み込みます。 /// </summary> /// <param name="linkFile">ショートカットを読み込むファイル</param> /// <param name="hWnd">このコードを呼び出したオーナーのウィンドウハンドル</param> /// <param name="resolveFlags">ショートカット情報の解決に関する動作を表すフラグ</param> /// <exception cref="FileNotFoundException">ファイルが見つかりません。</exception> /// <exception cref="COMException">IPersistFileインターフェイスを取得できませんでした。</exception> public void Load(string linkFile, IntPtr hWnd, ShellLinkResolveFlags resolveFlags) { Load(linkFile, hWnd, resolveFlags, 1); }
/// <summary> /// 指定したファイルからショートカットを読み込みます。 /// </summary> /// <param name="linkFile">ショートカットを読み込むファイル</param> /// <param name="hWnd">このコードを呼び出したオーナーのウィンドウハンドル</param> /// <param name="resolveFlags">ショートカット情報の解決に関する動作を表すフラグ</param> /// <param name="timeOutMilliseconds">SLR_NO_UIを指定したときのタイムアウト値(ミリ秒)</param> /// <exception cref="FileNotFoundException">ファイルが見つかりません。</exception> /// <exception cref="COMException">IPersistFileインターフェイスを取得できませんでした。</exception> public void Load(string linkFile, IntPtr hWnd, ShellLinkResolveFlags resolveFlags, int timeOutMilliseconds) { if (!File.Exists(linkFile)) throw new FileNotFoundException("ファイルが見つかりません。", linkFile); // IPersistFileインターフェイスを取得 IPersistFile persistFile = GetIPersistFile(); if (persistFile == null) throw new COMException("IPersistFileインターフェイスを取得できませんでした。"); // 読み込み persistFile.Load(linkFile, 0x00000000); // フラグを処理 uint flags = (uint)resolveFlags; if ((resolveFlags & ShellLinkResolveFlags.SLR_NO_UI) == ShellLinkResolveFlags.SLR_NO_UI) { flags |= (uint)(timeOutMilliseconds << 16); } // ショートカットに関する情報を読み込む if (isUnicodeEnvironment) { shellLinkW.Resolve(hWnd, flags); } else { shellLinkA.Resolve(hWnd, flags); } // カレントファイルを指定 currentFile = linkFile; }