Raccourci clavier pour faire rapparaitre une fenetre
4 réponses
Sendell
Bonjour
devant réaliser un programme qui doit fonctionner discretement, je
souhaiterai ameliorer la solution de la reduction dans le systray: que le
programme n'apparaisse ni dans la barre des taches ni dans le systray (seul
le gestionnaire des taches pouvant donc permettre de fermer le programme de
force). Le probleme n'est pas de le cacher mais de le faire apparaitre:
Existe-t-il un moyen de faire que lorsque mon programme est lancé et caché
(et n'a donc pas le focus), une combinaison de touche (raccourci clavier
divers) permette de montrer la fenetre de mon programme ??
Je pense au logiciel SetiCommander par exemple, qui peut etre totalement
dissimulé et apparaitre avec la combinaison de touches "Control Alt Shift S"
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Zoury
Salut Sendell!
Il faudrait enregistrer ton programme en tant que Service (sur NT, win2K, XP) ce qui est impossible à faire en VB (du moins de manière fiable). Ensuite ton service devra implémenter un hook clavier sur le système en entier ce qui, encore une fois, n'est pas possible à faire en VB.
Alors soit tu convertis ton code en C++... soit tu laisses tomber cette ammélioration. :O/
Merci de poster les réponses au groupe afin d'en faire profiter à tous
Salut Sendell!
Il faudrait enregistrer ton programme en tant que Service (sur NT, win2K,
XP) ce qui est impossible à faire en VB (du moins de manière fiable).
Ensuite ton service devra implémenter un hook clavier sur le système en
entier ce qui, encore une fois, n'est pas possible à faire en VB.
Alors soit tu convertis ton code en C++... soit tu laisses tomber cette
ammélioration. :O/
Il faudrait enregistrer ton programme en tant que Service (sur NT, win2K, XP) ce qui est impossible à faire en VB (du moins de manière fiable). Ensuite ton service devra implémenter un hook clavier sur le système en entier ce qui, encore une fois, n'est pas possible à faire en VB.
Alors soit tu convertis ton code en C++... soit tu laisses tomber cette ammélioration. :O/
Merci de poster les réponses au groupe afin d'en faire profiter à tous
François Picalausa
"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de news:
Salut Sendell!
Il faudrait enregistrer ton programme en tant que Service (sur NT, win2K, XP) ce qui est impossible à faire en VB (du moins de manière fiable). Ensuite ton service devra implémenter un hook clavier sur le système en entier ce qui, encore une fois, n'est pas possible à faire en VB.
Alors soit tu convertis ton code en C++... soit tu laisses tomber cette ammélioration. :O/
Bonjour/soir,
Ce serait peut-être faisable en utilisant n ActyiveX Exe qui pourrait réveiller l'application en lui envoyant un événement et en plaçant sur le bureau un raccourci vers cet activeX Exe ave un raccourci clavier au choix...
Sinon, plus facile et probablement plus approprié: WM_SETHOTKEY: http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/userinput/keyboardinput/keyboardinputreference/keyboardinputmessages/wm_sethotkey.asp
Autre possibilité encore (et encore plus appropriée, il me semble): RegisterHotKey http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/userinput/keyboardinput/keyboardinputreference/keyboardinputfunctions/registerhotkey.asp
Voici un exemple montrant l'usage de la dernière technique: (SubclassIt.SubClassing est un composant de sous classement) Option Explicit
'Form1 ' Visible = False
Private WithEvents Subclasser As SubclassIt.SubClassing Private Declare Function RegisterHotKey Lib "user32" (ByVal hWnd As Long, ByVal id As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long
Private Sub Form_Load() Set Subclasser = New SubclassIt.SubClassing Subclasser.SubClass Me.hWnd Me.Visible = False
If RegisterHotKey(Me.hWnd, 10, MOD_CONTROL Or MOD_SHIFT, vbKeyE) = 0 Then MsgBox "Fonctionne pas :-(" Me.Visible = True End If End Sub
Private Sub Form_Unload(Cancel As Integer) Subclasser.UnSubclassAll End Sub
Private Sub Subclasser_Message(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long, SetNewValue As Boolean, NewValue As Long) Select Case Msg Case WM_HOTKEY 'on peut déterminer la touche pressée en fonction de lParam Me.Show End Select End Sub
"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de
news:e9AZbBsuDHA.3468@TK2MSFTNGP11.phx.gbl
Salut Sendell!
Il faudrait enregistrer ton programme en tant que Service (sur NT,
win2K, XP) ce qui est impossible à faire en VB (du moins de manière
fiable). Ensuite ton service devra implémenter un hook clavier sur le
système en entier ce qui, encore une fois, n'est pas possible à faire
en VB.
Alors soit tu convertis ton code en C++... soit tu laisses tomber
cette ammélioration. :O/
Bonjour/soir,
Ce serait peut-être faisable en utilisant n ActyiveX Exe qui pourrait
réveiller l'application en lui envoyant un événement et en plaçant sur le
bureau un raccourci vers cet activeX Exe ave un raccourci clavier au
choix...
Sinon, plus facile et probablement plus approprié: WM_SETHOTKEY:
http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/userinput/keyboardinput/keyboardinputreference/keyboardinputmessages/wm_sethotkey.asp
Autre possibilité encore (et encore plus appropriée, il me semble):
RegisterHotKey
http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/userinput/keyboardinput/keyboardinputreference/keyboardinputfunctions/registerhotkey.asp
Voici un exemple montrant l'usage de la dernière technique:
(SubclassIt.SubClassing est un composant de sous classement)
Option Explicit
'Form1
' Visible = False
Private WithEvents Subclasser As SubclassIt.SubClassing
Private Declare Function RegisterHotKey Lib "user32" (ByVal hWnd As Long,
ByVal id As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long
Private Sub Form_Load()
Set Subclasser = New SubclassIt.SubClassing
Subclasser.SubClass Me.hWnd
Me.Visible = False
If RegisterHotKey(Me.hWnd, 10, MOD_CONTROL Or MOD_SHIFT, vbKeyE) = 0
Then
MsgBox "Fonctionne pas :-("
Me.Visible = True
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
Subclasser.UnSubclassAll
End Sub
Private Sub Subclasser_Message(ByVal hWnd As Long, ByVal Msg As Long, ByVal
wParam As Long, ByVal lParam As Long, SetNewValue As Boolean, NewValue As
Long)
Select Case Msg
Case WM_HOTKEY
'on peut déterminer la touche pressée en fonction de lParam
Me.Show
End Select
End Sub
"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de news:
Salut Sendell!
Il faudrait enregistrer ton programme en tant que Service (sur NT, win2K, XP) ce qui est impossible à faire en VB (du moins de manière fiable). Ensuite ton service devra implémenter un hook clavier sur le système en entier ce qui, encore une fois, n'est pas possible à faire en VB.
Alors soit tu convertis ton code en C++... soit tu laisses tomber cette ammélioration. :O/
Bonjour/soir,
Ce serait peut-être faisable en utilisant n ActyiveX Exe qui pourrait réveiller l'application en lui envoyant un événement et en plaçant sur le bureau un raccourci vers cet activeX Exe ave un raccourci clavier au choix...
Sinon, plus facile et probablement plus approprié: WM_SETHOTKEY: http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/userinput/keyboardinput/keyboardinputreference/keyboardinputmessages/wm_sethotkey.asp
Autre possibilité encore (et encore plus appropriée, il me semble): RegisterHotKey http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/userinput/keyboardinput/keyboardinputreference/keyboardinputfunctions/registerhotkey.asp
Voici un exemple montrant l'usage de la dernière technique: (SubclassIt.SubClassing est un composant de sous classement) Option Explicit
'Form1 ' Visible = False
Private WithEvents Subclasser As SubclassIt.SubClassing Private Declare Function RegisterHotKey Lib "user32" (ByVal hWnd As Long, ByVal id As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long
Private Sub Form_Load() Set Subclasser = New SubclassIt.SubClassing Subclasser.SubClass Me.hWnd Me.Visible = False
If RegisterHotKey(Me.hWnd, 10, MOD_CONTROL Or MOD_SHIFT, vbKeyE) = 0 Then MsgBox "Fonctionne pas :-(" Me.Visible = True End If End Sub
Private Sub Form_Unload(Cancel As Integer) Subclasser.UnSubclassAll End Sub
Private Sub Subclasser_Message(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long, SetNewValue As Boolean, NewValue As Long) Select Case Msg Case WM_HOTKEY 'on peut déterminer la touche pressée en fonction de lParam Me.Show End Select End Sub
Merci de poster les réponses au groupe afin d'en faire profiter à tous
Sendell
Merci
"François Picalausa" a écrit dans le message de news:
"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de news: > Salut Sendell! > > Il faudrait enregistrer ton programme en tant que Service (sur NT, > win2K, XP) ce qui est impossible à faire en VB (du moins de manière > fiable). Ensuite ton service devra implémenter un hook clavier sur le > système en entier ce qui, encore une fois, n'est pas possible à faire > en VB. > > Alors soit tu convertis ton code en C++... soit tu laisses tomber > cette ammélioration. :O/
Bonjour/soir,
Ce serait peut-être faisable en utilisant n ActyiveX Exe qui pourrait réveiller l'application en lui envoyant un événement et en plaçant sur le bureau un raccourci vers cet activeX Exe ave un raccourci clavier au choix...
Sinon, plus facile et probablement plus approprié: WM_SETHOTKEY:
Voici un exemple montrant l'usage de la dernière technique: (SubclassIt.SubClassing est un composant de sous classement) Option Explicit
'Form1 ' Visible = False
Private WithEvents Subclasser As SubclassIt.SubClassing Private Declare Function RegisterHotKey Lib "user32" (ByVal hWnd As Long, ByVal id As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long
Private Sub Form_Load() Set Subclasser = New SubclassIt.SubClassing Subclasser.SubClass Me.hWnd Me.Visible = False
If RegisterHotKey(Me.hWnd, 10, MOD_CONTROL Or MOD_SHIFT, vbKeyE) = 0 Then MsgBox "Fonctionne pas :-(" Me.Visible = True End If End Sub
Private Sub Form_Unload(Cancel As Integer) Subclasser.UnSubclassAll End Sub
Private Sub Subclasser_Message(ByVal hWnd As Long, ByVal Msg As Long,
ByVal
wParam As Long, ByVal lParam As Long, SetNewValue As Boolean, NewValue As Long) Select Case Msg Case WM_HOTKEY 'on peut déterminer la touche pressée en fonction de lParam Me.Show End Select End Sub
"François Picalausa" <fpicalausa@chez.com> a écrit dans le message de
news:OGczjswuDHA.620@TK2MSFTNGP10.phx.gbl...
"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de
news:e9AZbBsuDHA.3468@TK2MSFTNGP11.phx.gbl
> Salut Sendell!
>
> Il faudrait enregistrer ton programme en tant que Service (sur NT,
> win2K, XP) ce qui est impossible à faire en VB (du moins de manière
> fiable). Ensuite ton service devra implémenter un hook clavier sur le
> système en entier ce qui, encore une fois, n'est pas possible à faire
> en VB.
>
> Alors soit tu convertis ton code en C++... soit tu laisses tomber
> cette ammélioration. :O/
Bonjour/soir,
Ce serait peut-être faisable en utilisant n ActyiveX Exe qui pourrait
réveiller l'application en lui envoyant un événement et en plaçant sur le
bureau un raccourci vers cet activeX Exe ave un raccourci clavier au
choix...
Sinon, plus facile et probablement plus approprié: WM_SETHOTKEY:
Voici un exemple montrant l'usage de la dernière technique:
(SubclassIt.SubClassing est un composant de sous classement)
Option Explicit
'Form1
' Visible = False
Private WithEvents Subclasser As SubclassIt.SubClassing
Private Declare Function RegisterHotKey Lib "user32" (ByVal hWnd As Long,
ByVal id As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long
Private Sub Form_Load()
Set Subclasser = New SubclassIt.SubClassing
Subclasser.SubClass Me.hWnd
Me.Visible = False
If RegisterHotKey(Me.hWnd, 10, MOD_CONTROL Or MOD_SHIFT, vbKeyE) = 0
Then
MsgBox "Fonctionne pas :-("
Me.Visible = True
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
Subclasser.UnSubclassAll
End Sub
Private Sub Subclasser_Message(ByVal hWnd As Long, ByVal Msg As Long,
ByVal
wParam As Long, ByVal lParam As Long, SetNewValue As Boolean, NewValue As
Long)
Select Case Msg
Case WM_HOTKEY
'on peut déterminer la touche pressée en fonction de lParam
Me.Show
End Select
End Sub
"François Picalausa" a écrit dans le message de news:
"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de news: > Salut Sendell! > > Il faudrait enregistrer ton programme en tant que Service (sur NT, > win2K, XP) ce qui est impossible à faire en VB (du moins de manière > fiable). Ensuite ton service devra implémenter un hook clavier sur le > système en entier ce qui, encore une fois, n'est pas possible à faire > en VB. > > Alors soit tu convertis ton code en C++... soit tu laisses tomber > cette ammélioration. :O/
Bonjour/soir,
Ce serait peut-être faisable en utilisant n ActyiveX Exe qui pourrait réveiller l'application en lui envoyant un événement et en plaçant sur le bureau un raccourci vers cet activeX Exe ave un raccourci clavier au choix...
Sinon, plus facile et probablement plus approprié: WM_SETHOTKEY:
Voici un exemple montrant l'usage de la dernière technique: (SubclassIt.SubClassing est un composant de sous classement) Option Explicit
'Form1 ' Visible = False
Private WithEvents Subclasser As SubclassIt.SubClassing Private Declare Function RegisterHotKey Lib "user32" (ByVal hWnd As Long, ByVal id As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long
Private Sub Form_Load() Set Subclasser = New SubclassIt.SubClassing Subclasser.SubClass Me.hWnd Me.Visible = False
If RegisterHotKey(Me.hWnd, 10, MOD_CONTROL Or MOD_SHIFT, vbKeyE) = 0 Then MsgBox "Fonctionne pas :-(" Me.Visible = True End If End Sub
Private Sub Form_Unload(Cancel As Integer) Subclasser.UnSubclassAll End Sub
Private Sub Subclasser_Message(ByVal hWnd As Long, ByVal Msg As Long,
ByVal
wParam As Long, ByVal lParam As Long, SetNewValue As Boolean, NewValue As Long) Select Case Msg Case WM_HOTKEY 'on peut déterminer la touche pressée en fonction de lParam Me.Show End Select End Sub