Clique impossible hors de la fenêtre

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Dorian
Messages : 489
Inscription : mar. 15/mars/2005 15:33

Clique impossible hors de la fenêtre

Message par Dorian »

Bonjour

J'avais trouvé sur ce forum je crois un code qui permettais de garder une fenêtre (ou ...requester) au premier plan en empêchant les cliques hors de la fenêtre et les combinaison du style ALT + TAB ou encore ALT + F4 ou CTRL + ALT + SUPPR.

Mais j'ai pas réussi à le retrouvé et à disparu de mon pc.

Es-ce que quelqu'un pourrait me donner ce code ou un autre faisant la même chose svp ?
CameleonTH
Messages : 333
Inscription : sam. 25/juin/2005 11:18
Localisation : Laon (02)
Contact :

Message par CameleonTH »

Pour le CTRL + ALT + SUPPR tu peut toujour utiliser la librairie PBOSL (pas sur du nom) et killer taskmgr.exe.
Moi je fais comme sa.
AWEAR
Messages : 264
Inscription : ven. 28/oct./2005 8:20
Localisation : Mayotte ( 976 ), Océan Indien, France

Message par AWEAR »

Si j'ai bien compris ce que tu veux, ce code devrait aller :wink:, à toi de l'adapter :

Code : Tout sélectionner

OpenWindow(0, 0, 0, 500, 500, #PB_Window_SystemMenu, "au")
OpenWindow(1, 0, 0, 200, 200, #PB_Window_WindowCentered, "test", WindowID(0))
CreateGadgetList(WindowID())
ButtonGadget(0, 50, 50, 50, 20, "test")
OpenLibrary(0, "user32.dll")
Repeat
bruit.b = #False
z = CallFunction(0, "GetKeyState", 1)
While CallFunction(0, "GetKeyState", 1) <> 1 And CallFunction(0, "GetKeyState", 1) <> 0 And WindowMouseX() = -1 And WindowMouseY() = - 1
If bruit = #False
CallFunction(0, "MessageBeep", 5)
bruit = #True
EndIf
WindowEvent()
Delay(1)
Wend
Until WaitWindowEvent() = #PB_Event_Gadget And EventGadgetID() = 0
CloseWindow(1)
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
La vie est une rose dont il faut accepter les épines, mais la mienne est fannée, arrosée par le goût de mes larmes. (Soprano)
Dorian
Messages : 489
Inscription : mar. 15/mars/2005 15:33

Message par Dorian »

CameleonTH a écrit :Pour le CTRL + ALT + SUPPR tu peut toujour utiliser la librairie PBOSL (pas sur du nom) et killer taskmgr.exe.
Moi je fais comme sa.
C'est déjà un bon début ^^.

@ AWEAR : désolé mais c'est pas sa :oops:

En fait je cherche à faire que l'on ne puisse pas clique hors de ma fenetre ou que ces clique ne soit pas pris en compte et que tout les truc susceptibe de fermer ou cacher ma fenetre par le clavier soit impossible.

mais je trouve tjr pas ce fichu code ^^.
CameleonTH
Messages : 333
Inscription : sam. 25/juin/2005 11:18
Localisation : Laon (02)
Contact :

Message par CameleonTH »

Sinon pour eviter que l'on clique hors de ta fenetre tu n'a qu'a mettre ta fenetre en pleine ecran et en borderless.
Ou sinon tu peut toujour vérifier la postition de la souris et si elle est hosr de la fenetre sa la replace sur la fenetre.
Anonyme

Message par Anonyme »

Pour la souris, tu peut toujours tester sa position à l'interieur de la fenetre, si elle sort, tu la remplace dans la fenetre.
Pour les touches, regarde du coté des api (j'me rappelle plus trop où)
fait un tour sur codes-sources.

@+
AWEAR
Messages : 264
Inscription : ven. 28/oct./2005 8:20
Localisation : Mayotte ( 976 ), Océan Indien, France

Message par AWEAR »

Bon alors ça cette fois ça devrait aller, impossible de désactiver la fenêtre tant que tu cliques pas sur le bouton. Pas visible dans le Gestionnaire de Tâches, visible avec Alt + Tab, mais ne peut normalement pas perdre le focus :

Code : Tout sélectionner

OpenLibrary(0, "user32.dll")
Procedure.s WindowsEnu()
 Static Flag,hWnd
 
  Repeat
    If Flag=0
      hWnd = CallFunction(0, "FindWindowA", 0, 0 )
      Flag=1
    Else
      hWnd = CallFunction(0, "GetWindow", hWnd, 2)
    EndIf
    
    If hWnd <> 0
      If CallFunction(0, "GetWindowLongA", hWnd, -16) & $10000000 = $10000000; pour lister que les fenêtres visibles
        If CallFunction(0, "GetWindowLongA", hWnd, -20) & 256 <> 256 ; pour lister que les fenêtres qui ne sont pas des ToolWindow ou barre d'outils
          retour.s = Space(256)
          CallFunction(0, "GetWindowTextA", hWnd, retour, 256)
          If retour<>"" : Break : EndIf
        EndIf
      EndIf
    Else
      Flag=0 
    EndIf
  Until hWnd=0
  ProcedureReturn retour  
EndProcedure

Procedure GetHandl(WindowsName.s)
 retour= CallFunction(0, "FindWindowA", 0, WindowsName)
 ProcedureReturn retour
EndProcedure

Procedure Tim()
CallFunction(0, "SetForegroundWindow", WindowID())
EndProcedure

Procedure Time(TimerId,Delay,ProcedureAdress)
  CallFunction(0, "SetTimer", WindowID(),TimerId,Delay,ProcedureAdress)
EndProcedure

Procedure TimeKill(TimerId)
  CallFunction(0, "KillTimer", WindowID(),TimerId)
EndProcedure
OpenWindow(1, 0, 0, 0, 0, #PB_Window_Invisible, "", CallFunction(0, "GetDesktopWindow"))
OpenWindow(0, 0, 0, 500, 500, #PB_Window_ScreenCentered, "test", WindowID(1))
CreateGadgetList(WindowID())
ButtonGadget(0, 0, 0, 50, 20, "Ok")

Procedure MakeRequester(WindowId, State)
State =  1 - State
If state = 0
Time(0, 1, @tim())
Else
TimeKill(0)
EndIf
x.s = WindowsEnu()
While x
If GetHandl(x) <> WindowId
CallFunction(0, "EnableWindow", GetHandle(x), State)
EndIf
x = WindowsEnu()
Wend
EndProcedure
MakeRequester(WindowID(), #True)
Repeat
Until WaitWindowEvent() = #PB_Event_Gadget And EventGadgetID() = 0
MakeRequester(WindowID(), #False)
S'il y a besoin d'expliquation ( et bien sur que c'est ca que tu cherches :lol: ), demande et j'essayerais de répondre
La vie est une rose dont il faut accepter les épines, mais la mienne est fannée, arrosée par le goût de mes larmes. (Soprano)
Répondre