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. |