Page 1 sur 1

Code source qui fait râler PB

Publié : ven. 13/janv./2006 19:25
par mangatome
Ca vient de chez moi ou bien?

Code : Tout sélectionner

; Auteur : Le Soldat Inconnu
; Version de PB : 3.9
; 
; Explication du programme :
; Lier une fenêtre au bureau. Ainsi, quand on réduit les applications, cette fenêtre reste visible.
; Uniquement pour Win 2000 et XP

; Création de la fenêtre liée au bureau
OpenWindow(0, 0, 0, 100, 100, #PB_Window_BorderLess | #PB_Window_ScreenCentered, "Liée au bureau", GetShellWindow_())
; Il suffit de mettre en parent la fenêtre qui représente le bureau
; La fonction GetShellWindow_() permet de récupérer le handle du bureau

; Création de la GadgetList
CreateGadgetList(WindowID())

ButtonGadget(0, 0, 0, 100, 100, "Quitter")

Repeat
  Event = WaitWindowEvent()
  
  If Event = #PB_Event_Gadget
    Select EventGadgetID()
      Case 0 ; Appui sur le bouton quitter
        Event = #PB_EventCloseWindow
    EndSelect
  EndIf
  
Until Event = #PB_EventCloseWindow
Image

Publié : ven. 13/janv./2006 19:32
par Chris
Essaye de récupérer le handle comme ça:

Code : Tout sélectionner

If OpenLibrary(0, "user32.dll")
  *ShellWindow = IsFunction(0,"GetShellWindow")
  If *ShellWindow
    hShellWindow = CallFunctionFast(*ShellWindow)
  EndIf
  CloseLibrary(0)
EndIf

Publié : ven. 13/janv./2006 19:41
par Gillou
Chez moi aussi, ça plante :roll:

Avec ce qu'il y a dessous normalement c'est bon :D


Procedure GetShellWindow()
sysdir$ = Space (255) : GetSystemDirectory_ ( @sysdir$, 255) : If Right (sysdir$, 1) <> "\" : sysdir$ + "\" : EndIf
lib = OpenLibrary ( #PB_Any , sysdir$+ "user32.dll" )
If lib
res = CallFunction (lib, "GetShellWindow" )
CloseLibrary (lib)
EndIf
ProcedureReturn res
EndProcedure

; Auteur : Le Soldat Inconnu
; Version de PB : 3.9
;
; Explication du programme :
; Lier une fenêtre au bureau. Ainsi, quand on réduit les applications, cette fenêtre reste visible.
; Uniquement pour Win 2000 et XP

; Création de la fenêtre liée au bureau
OpenWindow (0, 0, 0, 100, 100, #PB_Window_BorderLess | #PB_Window_ScreenCentered , "Liée au bureau" , GetShellWindow())
; Il suffit de mettre en parent la fenêtre qui représente le bureau
; La fonction GetShellWindow_() permet de récupérer le handle du bureau

; Création de la GadgetList
CreateGadgetList ( WindowID ())

ButtonGadget (0, 0, 0, 100, 100, "Quitter" )

Repeat
Event = WaitWindowEvent ()

If Event = #PB_Event_Gadget
Select EventGadgetID ()
Case 0 ; Appui sur le bouton quitter
Event = #PB_EventCloseWindow
EndSelect
EndIf

Until Event = #PB_EventCloseWindow

Publié : ven. 13/janv./2006 19:44
par Chris
C'est exactement ce que j'ai déjà mis! :?

Publié : ven. 13/janv./2006 19:46
par Gillou
je sais mais lorsque j'ai posté il n'y avait pas de message. J'ai pas actualisé :)

Publié : ven. 13/janv./2006 20:06
par Anonyme2
le fichier user32.lib n'est peut-être pas complet, le code de LSI est peut-être une partie d'un de ses codes ou il déclarait l'ouverture de la dll

A confirmer

Publié : ven. 13/janv./2006 23:19
par Le Soldat Inconnu
Pour faire ça, j'ai changé de principe, je te conseille d'utiliser ceci :

Code : Tout sélectionner

OpenWindow(0, 0, 0, 100, 100, #PB_Window_BorderLess | #PB_Window_ScreenCentered, "Lier au bureau") 

SetParent_(WindowID(), FindWindow_(0, "Program Manager"))

CreateGadgetList(WindowID()) 

ButtonGadget(0, 0, 0, 100, 100, "Quitter")

Repeat 
  Event = WaitWindowEvent() 
  
  If Event = #PB_Event_Gadget 
    Select EventGadgetID() 
      Case 0 
        Event = #PB_EventCloseWindow 
    EndSelect 
  EndIf 
  
Until Event = #PB_EventCloseWindow

Publié : dim. 19/févr./2006 19:05
par mangatome
ok ça marche, merci bien :)