Page 1 sur 1

fixer des raccourcis

Publié : lun. 09/avr./2007 2:33
par meganet
Salut, je cherche un moyen de fixer des raccourcis que je pourrais exécuté où que je sois dans Windows et pas seulement dans la fenêtre de mon soft.
Par exemples je veux que quand je fais : insert+espace, un message s’affiche que je sois dans Firefox, dans Word, dans l’explorateur, ETC…
J'ai vue des trucs sur les hooks de Windows, mais comment les utiliser en purebasic?
Merci d'avance!

Publié : lun. 09/avr./2007 7:35
par Jacobus
Te prends pas la tête, fais une appli avec tes raccourcis et rend la invisible, tournant en arrière plan.

J'ai déjà essayé

Publié : lun. 09/avr./2007 16:18
par meganet
Salut, j'ai déjà essayé de faire ça, mais ça ne marche pas.
Voilà mon code:

Code : Tout sélectionner

If OpenWindow(0, 0, 0, 800, 600, "test", #PB_Window_Invisible)
WindowID = WindowID(0)

If CreateMenu(0, WindowID)
MenuTitle("&fichier")
MenuItem(0, "test")
EndIf

AddKeyboardShortcut(0, #PB_Shortcut_Control|#PB_Shortcut_Insert, 0)

Repeat

Select WaitWindowEvent()

Case #PB_Event_Menu

Select EventMenu()

Case 0
MessageRequester("OK", "Le raccourcis marche!", 0)

EndSelect

EndSelect

Until quit = 1

EndIf
End
Quand je fait ctrl+insert, rien ne se passe.

Publié : lun. 09/avr./2007 17:49
par Jacobus
Désolé mais il semble qu'on ne puisse pas utiliser les raccourcis d'une fenêtre cachée ou minimisée. J'ai fais quelques tests qui n'ont rien donné. D'un autre côté ça se comprend aussi, ça deviendrait vite le foutoir si chaque fenêtre invisible avait ses raccourcis fonctionnels.

Bon et bien tu peux te casser la tête alors :lol:

Publié : lun. 09/avr./2007 18:28
par Backup
Jacobus a écrit :Désolé mais il semble qu'on ne puisse pas utiliser les raccourcis d'une fenêtre cachée ou minimisée. J'ai fais quelques tests qui n'ont rien donné. D'un autre côté ça se comprend aussi, ça deviendrait vite le foutoir si chaque fenêtre invisible avait ses raccourcis fonctionnels.

Bon et bien tu peux te casser la tête alors :lol:
attends ! attends! :D

il me semble qu'une apli Purebasic peut savoir si elle a le Focus non ?

dans ce cas il suffirai de faire un ALT-TAB pour sélectionner sa fenêtre "invisible" ou en arrière plan, pour la faire passer devant en étant bien visible .. :D c'est une idée comme une autre non ? :lol:

lol marche pas

Publié : lun. 09/avr./2007 18:32
par meganet
Salut, déjà éssayer.
Non je suis bien obligé de me casser la tête!
Donc si quelqu'un pourrais me dire comment marchent les hooks de Windows ça serai toujours kool!
Merci!

Publié : lun. 09/avr./2007 18:50
par Jacobus
L'idée de Dobro est quand même intéressante et peut-être qu'ajouter cette possibilité à PureBasic serait une fonction bien utile, pouvoir ouvrir une fenêtre par un raccourci, ça serait cool.

sinon meganet, un petit code pour te créer un popupmenu lanceur d'applications depuis le systray. Tu peux ainsi y mettre tout ce que tu veux. Bon c'est vrai que ça n'a rien à voir mais si ça peux t'aider pour une appli de lancement rapide.

Code : Tout sélectionner

#PROG = "Meganet Window"
Procedure ExeLance(nomfenetre$) ; verif de l'etat de la fenêtre
 F=FindWindow_(0, nomfenetre$) 
  If F<>0 
   ProcedureReturn 1 ; retourne 1 si détecté 
  Else 
   ProcedureReturn 0 ; retourne 0 si non détecté 
  EndIf 
EndProcedure 

Result=ExeLance(#PROG) 
 If Result=1 
     Handle=FindWindow_(#Null, #PROG) 
      ShowWindow_(Handle,#SW_HIDE)  
      ShowWindow_(Handle,#SW_MINIMIZE) 
      ShowWindow_(Handle,#SW_RESTORE)     
     End 
 EndIf

FlagWin = #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_TitleBar|#PB_Window_ScreenCentered
If OpenWindow(0, 0, 0, 800, 600, #PROG, FlagWin );#PB_Window_Invisible) 
WindowID = WindowID(0) 

 If CreatePopupMenu(0)
    MenuItem(0, "Restaurer fenêtre principale") 
    MenuItem(1, "Démarrer Word") 
    MenuItem(2, "Mon compte bancaire")
    MenuItem(3, "A propos de "+#PROG)
    MenuBar()
    MenuItem(4, "Quitter "+#PROG)
 EndIf 
 
 If CreateMenu(1, WindowID) 
   MenuTitle("&fichier") 
   MenuItem(10, "MessageRequester") 
   MenuItem(11, "Quitter "+#PROG)
 EndIf 
 
 AddKeyboardShortcut(0, #PB_Shortcut_Control|#PB_Shortcut_Insert, 10) 
 AddKeyboardShortcut(0, #PB_Shortcut_Control|#PB_Shortcut_C, 11)
 
EndIf 

SystrayIcon = LoadImage(0, "ICONES\meganet.ico");<---- TON ICONE
 AddSysTrayIcon(0, WindowID, SystrayIcon) 
 SysTrayIconToolTip (0, #PROG)
       
ShowWindow_(WindowID(0),#SW_HIDE) ; on minimise la fenêtre en la cachant
MinimizeWindow=#True
Quit.l=#False 
 
Repeat 
Event = WaitWindowEvent() 
 Select Event 
 
   Case #PB_Event_SysTray 
      If EventType()=#PB_EventType_RightClick ; clic droit pour le popupmenu
          DisplayPopupMenu(0, WindowID(0)) 
      EndIf 
      If EventType()=#PB_EventType_LeftClick  ;  clic gauche sur l'icône pour restaurer la fenêtre
          ShowWindow_(WindowID(0),#SW_MINIMIZE) 
           Delay(250) 
          ShowWindow_(WindowID(0),#SW_RESTORE) 
          MinimizeWindow=#False 
      EndIf
 
   Case #PB_Event_Menu   
    Select EventMenu() 
      
      Case 0 ; restaure la fenêtre suivant son état
         ShowWindow_(WindowID(0),#SW_MINIMIZE) 
          Delay(250) 
           ShowWindow_(WindowID(0),#SW_RESTORE) 
            MinimizeWindow=#False 
      
      Case 1 : MessageRequester("WORD", "Démarrer le traitement de texte", 0)
      
      Case 2 : MessageRequester("Ma Banque", "Ouvrir mon compte", 0)
      
      Case 3 : MessageRequester(#PROG, "Version Beta 1", 0)
      
      Case 4 : Quit = #True
      
      Case 10 : MessageRequester("OK", "Le raccourci marche!", 0)        
      
      Case 11 : Quit = #True ; ferme et quitte le prog
    
    EndSelect   
 EndSelect 
  
If Event = #PB_Event_CloseWindow And MinimizeWindow=#False ; clic sur la croix cache la fenêtre mais ne quitte pas le prog
    ShowWindow_(WindowID(0),#SW_HIDE)
    MinimizeWindow=#True 
EndIf 

Until Quit = #True
 RemoveSysTrayIcon(0) ; supprime l'icône du systray
End 

Publié : lun. 09/avr./2007 19:42
par Dr. Dri
faut chercher du côté des global shorcuts qui ne sont pas attachés à une fenêtre en particulier

Dri

Publié : lun. 09/avr./2007 21:18
par minirop
pour utiliser les hook, sous Win32 c'est la fonction GetASync**** (quelquechose)
je cherches et j'édit

edit : GetASyncKeyState(param)
ou "param" est la touche en question (par exemple "échap" est VK_ESCAPE)

edit2 : hj'avais mis au "GetASyncKeyState" lieu de VK_ESCAPE

Merci vai essayer

Publié : mar. 10/avr./2007 7:19
par meganet
Salut, merci je m'envais essayer ça tout de suite.

Publié : mar. 10/avr./2007 17:28
par nico
J'utilise aussi cette méthode, je met un GetASyncKeyState(...) dans un thread et ça marche pas mal.