2014-09-04 425 views
1

我有Windows应用程序,我需要最大化窗口/窗体。使用发送/ postmessage最大化窗体User32.dll

我试图

public const int WM_NCLBUTTONDOWN = 0xA1; 
    public const int HT_CAPTION = 0x2; 
    SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0); 

and 

    int WM_SIZE = 0x0005; 
    int SIZE_MAXIMIZED = 2; 
    SendMessage(Main, WM_SIZE, SIZE_MAXIMIZED, 0); 

没有什么是不能正常工作。

任何人都可以告诉我什么是正确的扫描吗?

回答

2

如文档中所述,WM_SIZE是一个通知,在窗口大小发生变化时发送到窗口。发送到窗口不会改变窗口的大小。您的发送WM_NCLBUTTONDOWN似乎是试图在标题栏中点击一下。这是行不通的,至少不是你做到这一点。

使用ShowWindowAsync传递您希望最大化的窗口句柄,以及SW_MAXIMIZE

+0

hhmmm .....我这样做函数[DllImport( “user32.dll中”) 公共静态外部布尔ShowWindowAsync(INT的HWND,INT SW_MAXIMIZE ); ShowWindowAsync(Main,2);它不起作用 – 2014-09-04 12:44:38

+0

也许窗户把手是错的,你为什么选择通过2?你认为2是什么意思?这并不意味着最大化。我认为我链接的文档非常清晰。另外,“没有工作”从来没有任何用处。除了你之外,没有人知道这意味着什么。 – 2014-09-04 13:06:31

+0

搜寻 “隐藏”{$ = 0} “正常”{$ = 1} “ShowMinimized”{$ = 2} “最大化”{$ = 3} “ShowNoActivate”{$ = 4} “查看“{$ = 5} ”最小化“{$ WinStateInt = 6} ”ShowMinNoActive“{$ WinStateInt = 7} ”ShowNA“{$ WinStateInt = 8} ”恢复“{9} ”ShowDefault“{10} “ForceMinimize”{11} 默认{$ = 1} – 2014-09-04 13:07:15

0

最大化是SYSCOMMAND,试试这个:

 int WM_SYSCOMMAND = 0x112; 
     int SC_MAXIMIZE = 0xf030; 
     SendMessage(handle, WM_SYSCOMMAND, SC_MAXIMIZE, IntPtr.Zero);