vb.net - skjul/vis programvindue

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg bruger Visual Basic 2008


for eksempel har jeg kørende notepad.exe, kan jeg skjule notesblokvindue, og så hvis jeg har brug for det til at vise det igen?


tak.

Bedste reference



  • Ring til Process.GetProcessesByName() forbi "notepad".

  • Læs derefter MainWindowHandle fra den returnerede proces.

  • P/Invoke ShowWindow() forbi SW\_HIDE eller SW\_SHOW for at skjule/vise vinduet.



P/Invoke signaturen er: [15] [16] [17] [18]


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


ShowWindow() emnet viser de numeriske værdier for SW\_* flag. [19]





Takket være @Alex K for at foreslå som en kommentar brugen af ​​ShowWindowAsync() i stedet for ShowWindow(). [20]


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


Fra dokumentationen:



  Denne funktion indlægger et showvindue
  begivenhed til meddelelseskøen af
  givet vindue. En ansøgning kan bruge
  denne funktion for at undgå at blive
  nonresponsive, mens du venter på a
  nonresponsive ansøgning til slut
  behandler et show-vindue begivenhed.