VB-Homepage Tipp 207

einen Task (Programm) aus- bzw. einblenden

Einen Task (also ein Programm) auszublenden, dies ist immer dann von Vorteil, wenn man sich zBsp. innerhalb seines Programms der Funktionalität eines anderen Programms bedient und dies möglichst nicht sichtbar sein soll.
Aber auch der Einsatz als "Cheftaste" ist denkbar. Oder, oder, oder - Sie werden's schon wissen.

Das gute an diesem Tipp, Sie benötigen nicht das Handle des betreffenden Fensters, es reicht der Klarname im Programmkopf. (MS-DOS-Eingabeaufforderung). alles andere erledigt das Programm für Sie.

Na schon etwas interessiert ? Dann los.

1. Wir benötigen ein neues Projekt mit einer Form und dazu einen Commandbutton (Command1) / Command1.Caption = "Programmtask ausblenden"

2. Unter Allgemein/Deklarationen fügen Sie folgenden Code ein.
Option Explicit
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal aint As Integer) As Integer
Private Declare Function GetWindow Lib "user32" (ByVal hWnd As Long, ByVal wCmd As Integer) As Integer
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As Any, ByVal lpWindowName As Any) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
Const SW_HIDE = 0
Const SW_SHOW = 5

Private Function FindWindowPartial(ByVal TitlePart As String) As Long
Dim hWndTmp As Long
Dim nRet As Integer
Dim TitleTmp As String
Const GW_HWNDNEXT = 2
TitlePart = UCase$(TitlePart)
hWndTmp = FindWindow(0&, 0&)
Do Until hWndTmp = 0
TitleTmp = VBA.Space$(256)
nRet = GetWindowText(hWndTmp, TitleTmp, Len(TitleTmp))
If nRet Then
TitleTmp = UCase(VBA.Left$(TitleTmp, nRet))
If InStr(TitleTmp, TitlePart) Then
FindWindowPartial = hWndTmp
Exit Do
End If
End If
hWndTmp = GetWindow(hWndTmp, GW_HWNDNEXT)
Loop
End Function

Private Sub ShowVB(ProName As String)
Dim CurhWnd As Long
Dim i As Integer
CurhWnd = FindWindowPartial(ProName)
i = ShowWindow(CurhWnd, SW_SHOW)
CurhWnd = FindWindowPartial("CONJURE.MAK")
i = ShowWindow(CurhWnd, SW_SHOW)
End Sub

Private Sub HideVB(ProName As String)
Dim CurhWnd As Long
Dim i As Integer
CurhWnd = FindWindowPartial(ProName)
i = ShowWindow(CurhWnd, SW_HIDE)
CurhWnd = FindWindowPartial("CONJURE.MAK")
i = ShowWindow(CurhWnd, SW_HIDE)
End Sub
Durch das Einfügen entstehen die Prozeduren
FindWindowPartial
ShowVB
HideVB

3. Als nächsten fügen Sie in die Click Aktion des Buttons folgendes ein.
If Command1.Caption = "Programmtask ausblenden" Then
   HideVB "MS-DOS-Eingabeaufforderung"
   Command1.Caption = "Programmtask einblenden"
Else
   ShowVB "MS-DOS-Eingabeaufforderung"
   Command1.Caption = "Programmtask ausblenden"
   Show
End If

4. Zur Sicherheit können sie in die Unload Aktion der Form abermals die ShowVB
Anweisung einfügen.
ShowVB "MS-DOS-Eingabeaufforderung"

5. Öffnen Sie nun eine DOS-Box und starten Ihr Programm zum Testen mit F5.
Sehen Sie, Sie sehen nichts mehr.


Tipp-Download

Quelle :

Zurück zur Übersichtsseite