Есть окно другого процесса, оно свернуто.
Я хочу показать его, например, щелкнуть мышью по его значку на панели задач.
Я использую список функций CancelMinimized ниже.
может показывать окно, но всегда показывать его как состояние «восстановления».Если состояние окна максимизируется до минимизации, то использование функции CancelMinimized не может получить максимизированное состояние. Как отобразить окно, например, щелкнуть мышью его значок на панели задач?
public static bool CancelMinimized(int hwnd)
{
Api.WindowPlacement wp = new Api.WindowPlacement();
bool isok = false;
if (Api.GetWindowPlacement(hwnd, ref wp))
{
wp.showCmd = Api.ShowCmdEnum.SHOWNORMAL;//yes,had tried SHOW,RESORE..., had no effect
isok = Api.SetWindowPlacement(hwnd, ref wp);
}
return isok;
}
public class Api {
[DllImport("user32.dll", EntryPoint = "GetWindowPlacement")]
public static extern bool GetWindowPlacement(int hwnd,ref WindowPlacement lpwndpl);
[DllImport("user32.dll", EntryPoint = "SetWindowPlacement")]
public static extern bool SetWindowPlacement(int hwnd, ref WindowPlacement lpwndpl);
public struct WindowPlacement
{
public int length;
public uint flags;
public ShowCmdEnum showCmd;
public Point ptMinPosition;
public Point ptMaxPosition;
public Rect rcNormalPosition;
}
public struct Rect
{
public int left;
public int top;
public int right;
public int bottom;
}
public enum ShowCmdEnum
{
HIDE = 0,
SHOWNORMAL = 1,
NORMAL = 1,
SHOWMINIMIZED = 2,
SHOWMAXIMIZED = 3,
MAXIMIZE = 3,
SHOWNOACTIVATE = 4,
SHOW = 5,
MINIMIZE = 6,
SHOWMINNOACTIVE = 7,
SHOWNA = 8,
RESTORE = 9,
SHOWDEFAULT = 10,
FORCEMINIMIZE = 11,
}
public struct Point
{
public int x;
public int y;
public Point(int px, int py)
{
x = px;
y = py;
}
}
}