マイクロソフトの統合開発環境Visual StudioによるC#アプリケーション開発についての技術的備忘メモです。
C#でWindows32 APIを使用する場合
[DllImport("user32.dll")]
private static extern bool SetForegroundWindow(IntPtr hWnd);
のような定義が必要になります。
複数のプロジェクトでWindows32 APIを使用する場合、定義をライブラリ化したMicrosoft公式NuGetパッケージMicrosoft.Windows.CsWin32を使うことができます。
使い方は
1.Windows32 APIを使用するプロジェクトにMicrosoft.Windows.CsWin32をインストールします。
2.プロジェクトのルートにNativeMethods.txtを作成します。
3.NativeMethods.txtにプロジェクトで使用するWindows32 APIの関数名を1行ずつ記述します。
SetForegroundWindow IsIconic ShowWindow
4.バックグラウンドで定義が生成されます。
5.使用するC#では
:
using Windows.Win32;
using Windows.Win32.Foundation;
using Windows.Win32.UI.WindowsAndMessaging;
:
IntPtr hwnd = process.MainWindowHandle;
// 最小化されていたら元に戻します
if (PInvoke.IsIconic((HWND)hwnd))
{
PInvoke.ShowWindow((HWND)hwnd, SHOW_WINDOW_CMD.SW_RESTORE);
}
// ウィンドウを前面に表示します
PInvoke.SetForegroundWindow((HWND)hwnd);
: