目次

C#

マイクロソフトの統合開発環境Visual StudioによるC#アプリケーション開発についての技術的備忘メモです。

Windows32 API

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);
   :

2行目
Windows.Win32.PInvokeに生成された定義が存在します。
3行目~4行目
Windows32 APIの型が定義されています。
8行目、10行目、13行目
PInvokeWindows32 APIを使います。
インテリセンスが使用できます。

目次