http://www.pinvoke.netの定義を使用してこれを試してください:
WINDOWPLACEMENT placement;
if (GetWindowPlacement(hWnd, out placement))
{
if ((GetWindowLong(hWnd, GWL_EXSTYLE) & WS_EX_TOOLWINDOW) == 0)
{
var l = GetWindowLong(hWnd, GWL_STYLE);
SetWindowLong(hWnd, GWL_STYLE, (l | WS_MAXIMIZE) & (~WS_MINIMIZE));
var maxPos = placement.MaxPosition;
SetWindowPos(hWnd, IntPtr.Zero, maxPos.X, maxPos.Y, 0, 0, SetWindowPosFlags.AsynchronousWindowPosition | SetWindowPosFlags.DoNotActivate | SetWindowPosFlags.FrameChanged | SetWindowPosFlags.IgnoreResize | SetWindowPosFlags.IgnoreZOrder);
}
}
コツは、SetWindowLong でウィンドウの状態を変更し、SetWindowPosFlags.FrameChanged で再描画することです。あなたの場合、SetWindowPosFlags.DoNotActivate を使用します。