C# 透過したフォームを最背面にしたいのだが…
お世話になります。
C#でデスクトップアクセサリを作ろうとして躓きました。
フォームのTransparencyKeyをフォームのBackColorに設定して、
BorderStyleをNoneにし、マスコットキャラ的なところまでを
作るには完成しました。
その後、常に最背面に表示させたくて、ネットのサンプルを見て、
下記のように追加しました。
public class Form1 : System.Windows.Forms.Form
{
// FindWindow 関数
[DllImport("USER32.DLL", CharSet = CharSet.Auto)]
private static extern System.IntPtr FindWindow(
string lpClassName,
string lpWindowName
);
// SetParent 関数
[DllImport("USER32.DLL", CharSet = CharSet.Auto)]
private static extern System.IntPtr SetParent(
System.IntPtr hWndChild,
System.IntPtr hWndNewParent
);
private void button1_Click(object sender, System.EventArgs e)
{
// Program Manager のハンドルを取得する
System.IntPtr hProgramManagerHandle = FindWindow(null, "Program Manager");
// 正しく取得できた場合は、Program Manager を親ウィンドウに設定する
if (!hProgramManagerHandle.Equals(System.IntPtr.Zero))
{
SetParent(this.Handle, hProgramManagerHandle);
}
}
}
このコードを実行したところ、最背面に表示するどころか、フォーム自体が完全に
非表示になってしまいます。おまけにタスクバーにも表示されなくなるため、手動で
閉じることもできなくなります。
フォームを透過させてしまうと、最背面に指定することはできなるなるのでしょうか。
もし、実現する方法があれば、教えていただけないでしょうか。
よろしくお願いいたします。