[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);
}
実行結果
▼ページトップへ