[VC2010] 「ファイルのプロパティ」ダイアログを開く方法
◆概要
この資料は、アイコンを右クリックしたときに出るメニュー中の[プロパティ(R)]で表示される、「ファイルのプロパティ」ダイアログを呼び出す方法を説明しています。
ファイルのプロパティダイアログを表示するには、ShellExecuteEx APIを使います。
まず、usingディレクティブにAPIを使用できるように次の記述を追加します。
using System.Runtime.InteropServices;
次に、以下の構造体とAPIの宣言、定数の宣言を行います。
// APIで使用する構造体 [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] private struct SHELLEXECUTEINFO { public int cbSize; public uint fMask; public IntPtr hwnd; public string lpVerb; public string lpFile; public string lpParameters; public string lpDirectory; public int nShow; public IntPtr hInstApp; public int lpIDList; public string lpClass; public IntPtr hkeyClass; public int dwHotKey; public IntPtr hIcon; public IntPtr hProcess; } // Windows API [DllImport("shell32", CharSet=CharSet.Auto)] extern static int ShellExecuteEx(ref SHELLEXECUTEINFO lpExecInfo); // APIで使用する定数 private const int SEE_MASK_INVOKELIST = 0xC;
最後に使用したいところで、以下のように記述します。このとき、lpFileにプロパティを表示したいファイル名をフルパスで指定します。
次の例では、ボタンをクリックしたとき、CドライブのWindowsフォルダにある、Notopad.exeのプロパティが表示されます。
private void button1_Click(object sender, EventArgs e) { SHELLEXECUTEINFO seInfo = new SHELLEXECUTEINFO(); seInfo.cbSize = Marshal.SizeOf(seInfo); seInfo.fMask = SEE_MASK_INVOKELIST; seInfo.lpVerb = "properties"; seInfo.lpFile = @"C:\Windows\NOTEPAD.EXE"; ShellExecuteEx(ref seInfo); }
実行結果
▼ページトップへ