隐藏/显示程序窗口

Joh*_*ohn 0 vb.net windows

我正在使用 Visual Basic 2008

例如,我已经运行notepad.exe,我可以隐藏记事本窗口,然后如果我需要它再次显示它?

谢谢.

Dav*_*nan 5

的P/Invoke签名是:

<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Private Shared Function ShowWindow(ByVal hwnd As IntPtr, ByVal nCmdShow As Integer) As Boolean
End Function
Run Code Online (Sandbox Code Playgroud)

ShowWindow()主题列出了SW_*标志的数值.


感谢@Alex K建议作为评论使用ShowWindowAsync()而不是ShowWindow().

<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Private Shared Function ShowWindowAsync(ByVal hwnd As IntPtr, ByVal nCmdShow As Integer) As Boolean
End Function
Run Code Online (Sandbox Code Playgroud)

从文档:

此函数将show-window事件发布到给定窗口的消息队列.应用程序可以使用此功能来避免在等待无响应的应用程序完成处理显示窗口事件时变得无响应.

  • 最好使用`ShowWindowAsync`作为其面向由diff线程拥有的Windows,并且如果目标挂起/无响应则不会阻止.(相同的原型) (2认同)