Verstecken, wiederherstellen?

DeathlyGothSoul

Grünschnabel
Hallo,

ich wollte mir ein Programm machen (was ich auch habe *lol*) was ich allerdings mit einem bestimmten Tastendruck KOMPLETT verstecken kann (d.h. aus der Taskleiste raus, sowie weg vom bildschirm) und mit einem anderen Tastendruck wieder komplett herstellen kann.

Wie geht das? Oder ist das garnicht machbar?

Gruß,
DeathlyGothSoul
 
die eigenschaft "ShowInTaskbar = false" die eigenschaft KeyPrewiew = true und im Form_keyDown ereignis dann
if Keycode = vbKeyF1 then
me.Hide
end if
zum beispiel

gruss bb
 
Hi zusammen,

pack mal einen Timer auf Deine Form. Lasse den Namen auf Timer1 stehen, und setze das Intervall auf 500. Dann kannst Du unten stehenden Code in Dein Projekt übernehmen.

Der Effekt sollte sein, dass die Form beim drücken der ESC-Taste verschwindet, und beim Drücken der linken Windowsmenütaste wieder erscheint. Verschwinden wird die Form allerdings nur, wenn Sie den Fokus hat. Wenn dies nicht der Fall ist, must Du nur das Timer Event anpassen.

Ich hab mal bewußt die Variante mit dem Timer gewählt, da Du dann keinen Keyboard Hook implementieren mußt

Gruß
Das Orakel

Code:
Private Const VK_LWIN                   As Long = &H5B

Private Declare Function GetAsyncKeyState Lib "user32" ( _
    ByVal vKey As Long) As Integer

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = 27 Then
        Me.Hide
    End If
End Sub

Private Sub Timer1_Timer()
    If GetAsyncKeyState(VK_LWIN) <> 0 Then
        Me.Show
    End If
End Sub
 
OK ich habe es mit dem zweiten Code probiert. natürlich.

Aber wie kann ich das auf eine andere Taste (bsp.: SHIFT) verlegen? Habs probiert..
If KeyCode = 16 Then
blub

Funktioniert nur leider nicht :(
 
Zuletzt bearbeitet:
Es funktioniert eigentlich schon mit der Shift-Taste....

Schau mal nach, ob du wirklich das Ereignis Form_KeyDown und nicht Form_KeyPress oder Form_Change benutzt hast.

Falls es wirklich nicht bei dir funktionieren sollte, dann hast du scheinbar ein anderes Problem....

Zudem, wenn du noch andere Steuerelemente auf deiner Form hast, musst du bei der Form noch die Eigenschaft KeyPreview auf True setzen, wie auch brainbyte schon anmerkte.

mfG,
MAN
 
Steht auf True "KeyPreview" ;)

Hmm also es eigentlich alles auch mit ESC und mit der Windowstaste nur mit ALLEN anderen Tasten net (A-Z, 0-9, SHIFT usw)

Hmmm woran kann das liegen?

Lg,
DeathlyGothSoul
 
Üblicherweise ist in jedem Satz mindestens ein Verb....ich versteh den Satz nicht. Geht es mit ESC und den Buchstaben-Tasten nun oder nicht?
 
Code:
Private Const VK_LWIN                   As Long = &H5B

Private Declare Function GetAsyncKeyState Lib "user32" ( _
    ByVal vKey As Long) As Integer

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = 27 Then
        Me.Hide
    End If
End Sub

Private Sub Timer1_Timer()
    If GetAsyncKeyState(VK_LWIN) <> 0 Then
        Me.Show
    End If
End Sub

so funktionierts!
Allerdings möchte ich anstatt die Windowsmenütaste z.B. die Alt Gr oder Shift Taste.
Diese funktionieren aber nicht, obwohl ich vorher die richtige Zahl (die ich mit "MsgBox KeyCode" hergeholt hab) eingetragen hab, nicht!
 
Bist du sicher, dass du dir den richtigen Keycode anzeigen lässt? Probier's mal so:
Code:
If KeyCode = vbKeyShift Then...
oder
Code:
If KeyCode = vbKeyMenu Then...
 
Code:
Private Const VK_LWIN As Long = &H5B
Private Declare Function GetAsyncKeyState Lib "user32" ( _
    ByVal vKey As Long) As Integer
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = 27 Then
        Me.Hide
    End If
End Sub
Private Sub Timer1_Timer()
    'If GetAsyncKeyState(VK_LWIN) <> 0 Then
    If KeyCode = vbKeyShift Then
        Me.Show
    End If
End Sub

so sieht mein Code aus.
Ich habe "If GetAsyncKeyState(VK_LWIN) <> 0 Then" jetzt mal auskommentiert. Das ist ja die Windowsmenütaste und mit der Funktionierts. Mit "vbKeyShift" und "vbKeyMenu" gehts nicht.
Auch nicht außerhalb des Timers!
Der Timer steht auf 500...

Ne Info am Rande: Bin Anfänger ;) Habe zwar ausreichend Grundkenntnisse denke ich

Lg,
DeathlyGothSoul
 
Zurück