【C#】フォームを最背面(最後面)にしたいとき

怪しい常駐ソフト
DELPHIで書いていたんだけど,どうも調子悪い...

ってことで,C#で書き直してみたり...

いや,ものの10分で,コア部分が出来たり(爆
便利な世の中やなぁ~

ただ,フォームを最背面(最後面)にする方法が全くわからず...

Form.SendToBack()メソッドを飛ばせば
なんとなく,背面に行きそうだったけど,なんか,イマイチオーラが出てて

あれこれ調べていったら
何のことは無い
フォームをディスクトップの子として,ぶら下げればいいらしい
ソースは,こんな感じ?





[System.Runtime.InteropServices.DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);

private void Form1_Load(object sender, EventArgs e)
{

  IntPtr tmpdesktop = FindWindow(null, "Program Manager");
  if(tmpdesktop != null) {
    SetParent(this.Handle, tmpdesktop);
  }
}
手元の技術試験アプリ,期待通り,最背面に移動してくれています

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください