fixer des raccourcis

Programmation d'applications complexes
meganet
Messages : 317
Inscription : jeu. 20/janv./2005 22:00

fixer des raccourcis

Message 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!
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message par Jacobus »

Te prends pas la tête, fais une appli avec tes raccourcis et rend la invisible, tournant en arrière plan.
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
meganet
Messages : 317
Inscription : jeu. 20/janv./2005 22:00

J'ai déjà essayé

Message 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.
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message 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:
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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:
meganet
Messages : 317
Inscription : jeu. 20/janv./2005 22:00

lol marche pas

Message 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!
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message 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 
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

faut chercher du côté des global shorcuts qui ne sont pas attachés à une fenêtre en particulier

Dri
minirop
Messages : 321
Inscription : mer. 02/août/2006 21:06

Message 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
Dernière modification par minirop le mar. 10/avr./2007 12:38, modifié 1 fois.
meganet
Messages : 317
Inscription : jeu. 20/janv./2005 22:00

Merci vai essayer

Message par meganet »

Salut, merci je m'envais essayer ça tout de suite.
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

J'utilise aussi cette méthode, je met un GetASyncKeyState(...) dans un thread et ça marche pas mal.
Répondre