Externen Prozess Verstecken und wieder Anzeigen

27/01/2009 - 21:19 von sgross | Report spam
Hallo zusammen,

ich habe folgendes Problem: Ich Möchte ein externes Programm ausblenden und
wieder einblenden können!

Das Ausblenden klappt wunderbar mit diesem vorgehen und mit Hilfe der
Win32-API:

Imports System.Runtime.InteropServices
Public Class Form1

<DllImport("user32.dll")> _
Public Shared Function ShowWindow(ByVal hWnd As IntPtr, ByVal nCmdShow
As Integer) As Long
End Function

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim pe As Process() = Process.GetProcessesByName("notepad")
For Each p As Process In pe
Dim res As Long = ShowWindow(p.MainWindowHandle, vbHide)
Next
End Sub

End Class

Soweit sogut, aber wie kann ich wie in diesem Fall notepad, wieder anzeigen
lassen? Denn MainWindow steht dann ja nicht mehr zur Verfügung! Der Prozess
làuft ja weiter!

Gibt es eine Möglichkeit diesen ausgeblendeten Prozess wieder sichtbar zu
machen?

Oder muss ich das Programm anders verstecken um es wieder sichtbar zu
machen?

Das wichtigste ist hierbei dass es nicht mehr in der Taskleiste erscheint!

Für einen Tipp wàre ich sehr dankbar!

MfG, Sebastian Gross
 

Lesen sie die antworten

#1 Harald M. Genauck
27/01/2009 - 22:35 | Warnen spam
Hallo Sebastian,

ich habe folgendes Problem: Ich Möchte ein externes Programm
ausblenden und wieder einblenden können!

Das Ausblenden klappt wunderbar mit diesem vorgehen und mit Hilfe der
Win32-API:

Imports System.Runtime.InteropServices
Public Class Form1

<DllImport("user32.dll")> _
Public Shared Function ShowWindow(ByVal hWnd As IntPtr, ByVal
nCmdShow As Integer) As Long
End Function

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles Button1.Click
Dim pe As Process() = Process.GetProcessesByName("notepad")
For Each p As Process In pe
Dim res As Long = ShowWindow(p.MainWindowHandle, vbHide)
Next
End Sub

End Class

Soweit sogut, aber wie kann ich wie in diesem Fall notepad, wieder
anzeigen lassen? Denn MainWindow steht dann ja nicht mehr zur
Verfügung! Der Prozess làuft ja weiter!

Gibt es eine Möglichkeit diesen ausgeblendeten Prozess wieder
sichtbar zu machen?



Du blendest ja nicht den Prozess aus, sondern nur dessen Fenster, d.h.
Du machst es nur unsichtbar. Es ist aber nach wie vor vorhanden.

Entweder gehst Du erneut die Prozessliste durch und rufst ShowWindow
mit dem MainWindowHandle auf, aber mit nun mit dem Show-Parameter.

Oder Du merkst Dir die von MainWindowHandle gelieferten Handles in
einer Liste (Array, List, Collection ...) und gehst diese Liste durch,
um diese Fenster anhand der in der Liste abgelegten Handles wieder mit
ShowWindows sichtbar zu machen.


Viele Grüße

Harald M. Genauck

"VISUAL STUDIO one" - http://www.visualstudio1.de (Chefredakteur)
"ABOUT Visual Basic" - http://www.aboutvb.de (Herausgeber)

Ähnliche fragen