[API Windows] Lire la valeur d'une barre de progression ?

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
venom
Messages : 3128
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: [API Windows] Lire la valeur d'une barre de progression

Message par venom »

je ne sais pas résoudre le problème que tu rencontre, mais ton code est sympa et avance bien :)






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: [API Windows] Lire la valeur d'une barre de progression

Message par Backup »

.................
Dernière modification par Backup le ven. 30/sept./2011 19:52, modifié 1 fois.
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: [API Windows] Lire la valeur d'une barre de progression

Message par graph100 »

c'est pas plus simple de mettre une sticky window sur la barre, de la faire suivre la position de la fenetre, et de dessiner dessus ?
en tout cas ça fonctionnerais sur tout les windows et ca ne scintillerais pas ^^
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: [API Windows] Lire la valeur d'une barre de progression

Message par Backup »

graph100 a écrit :c'est pas plus simple de mettre une sticky window sur la barre, de la faire suivre la position de la fenetre, et de dessiner dessus ?
en tout cas ça fonctionnerais sur tout les windows et ca ne scintillerais pas ^^
ha ? plus simple que de redimensionner en verticale la barre de progression ? :roll:
il suffit que cette barre soit plus haute que l'icone .. ya pas plus simple ! :wink:
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: [API Windows] Lire la valeur d'une barre de progression

Message par Backup »

en fait il existe une autre methode
Le soldat inconnu l'a fait pour son prg Chenille

(une petite chenille se promène sur le bord des fenetres)

une petite recherche sur le forum s'impose :)
kelebrindae
Messages : 579
Inscription : ven. 11/mai/2007 15:21

Re: [API Windows] Lire la valeur d'une barre de progression

Message par kelebrindae »

@Dobro:
Oui, redimensionner, c'est une idée. :lol:
...Mais ça ne marche pas avec les barres de progression des autres applis (genre "copie dans l'explorateur").
Pour la chenille, ça m'intéresse beaucoup; je vais chercher!


@graph100:
J'ai essayé d'appliquer ce principe dans le code ci-dessous, mais je dois mal m'y prendre car ça clignote pas mal... Saurais-tu comment résoudre le problème ?

Code : Tout sélectionner

#PBM_GETRANGE = #WM_USER + 7
#PBM_GETSTEP = $040D ; Vista

#ICONSIZEX = 32
#ICONSIZEY = 32
#ICONNBFRAMES = 6 ; nombre de frames dans l'animation du curseur de progression

Structure addedWin_struct
  hParentWnd.l
  hProgressWnd.l
  hAddedWnd.l
EndStructure
Global NewList addedWin.addedWin_struct()


EnableExplicit
Global numimage.i,hBitmap.i,hBrush.i,hIcon.i,iconStep.f

Procedure redrawProgressBar(hParentWnd.l,hwnd.l)
  Protected rc.RECT,rcinv.RECT
  Protected chaine.s
  Protected lo.l,hi.l,valeur.l
  Protected posX.f
  Protected wndInfo.WINDOWINFO, refx.i, refy.i
  Protected hDC.l,x.i,y.i
  Protected iconX.i,iconY.i
  Protected found.b

  GetWindowInfo_(hParentWnd,wndInfo)
  refX = wndInfo\rcClient\left
  refY = wndInfo\rcClient\top
  
  ; récupérer les coordonnées de la barre
  GetWindowRect_(hwnd,@rc) 
  valeur = SendMessage_(hwnd,#PBM_DELTAPOS,0,0)
  
  chaine=Space(255)
;   GetWindowText_(hParentWnd,@chaine,255)
;   Debug "   Progress bar trouvée : "
;   Debug "      Fenêtre : " + chaine
;   Debug "      Position: " + Str(rc\left)+","+Str(rc\top)
;   Debug "      Taille  : " + Str(rc\right - rc\left)+","+Str(rc\bottom - rc\top)
;   Debug "      Valeur  : " + Str(valeur)
  
  
  ; Valeurs minimum/maximum de la barre (ce n'est pas forcément 0 / 100)
  lo =  SendMessage_(hwnd,#PBM_GETRANGE,#True,0)
  hi =  SendMessage_(hwnd,#PBM_GETRANGE,#False,0)

  ; Calcul de la limite entre "fait" et "reste à faire"
  posX = ((valeur - lo) / (hi - lo)) ; Pourcentage de progression
  posX * (rc\right - rc\left) ; Avancement dans la barre (en pixels)
    
; Est-ce que l'on redessine déjà cette barre ?
  ForEach addedWin()
    If addedWin()\hProgressWnd = hwnd
      found = #True
      Break
    EndIf
  Next addedWin()
 
  ; Si ce n'est pas le cas, on le fait
  If found = #False
    AddElement(addedWin())
    addedWin()\hParentWnd = hParentWnd
    addedWin()\hProgressWnd = hwnd
    addedWin()\hAddedWnd = CreateWindowEx_(0,"static","",#WS_CHILD|#WS_VISIBLE|#WS_CLIPCHILDREN,0,0,#ICONSIZEX,#ICONSIZEY,addedWin()\hParentWnd,0,GetModuleHandle_(0),0) 
  EndIf

  
  ; On récupère le DC de la fenêtre parente.
  hDC = GetDC_( hParentWnd ) 
  
  ; On remplit la zone "faite" avec l'image chargée au démarrage du programme
  SetRect_( @rcinv, (rc\left - refx),(rc\top - refy)+1,(rc\left - refx) + Int(posX), (rc\top - refy) + (rc\bottom - rc\top) - 2)
  FillRect_(hDC, @rcinv, hBrush)
  
  ; On remplit la zone "reste à faire" avec du blanc
  Rectangle_(hDC,(rc\left - refx) + Int(posX) + 1, (rc\top - refy) + 1,rc\right - refx - 1,rc\bottom - refy - 1)
 
  ; Et on relâche le contexte
  ReleaseDC_(hParentWnd,hDC)
  
  ; On centre le curseur animé sur la progression
  iconX = (rc\left - refx) + Int(posX) - 10
  If iconX < rc\left - refx
    iconX = rc\left - refx
  ElseIf iconX > rc\right - refx - #ICONSIZEX + 1
    iconX = rc\right - refx - #ICONSIZEX + 1
  EndIf
  iconY = (rc\top - refy) + ((rc\bottom - rc\top) - #ICONSIZEY) / 2 - 1
  
  ; Puis on bouge la fenêtre "static" au bon endroit et on dessine le cruseur dedans
  SetWindowPos_(addedWin()\hAddedWnd,addedWin()\hProgressWnd,iconX,iconY,32,32,#SWP_NOSIZE)  
  hDC = GetDC_( addedWin()\hAddedWnd)
  DrawIconEx_(hDC,0,0,hIcon,0,0,Int(iconStep),0,#DI_NORMAL)
  ReleaseDC_(addedWin()\hAddedWnd,hDC)
  RedrawWindow_(addedWin()\hAddedWnd,0,0, #RDW_INVALIDATE)
  
  
EndProcedure

; Enumère les fenêtres filles
Procedure.l EnumChildWindowProc(hwnd.l, hParentWnd.l)
  Protected classe.s
  
  ; Tester si on se trouve sur une progress bar
  If GetParent_(hWnd) = hParentWnd
    classe=Space(100)
    GetClassName_(hwnd, @classe, 100)

    If classe = "msctls_progress32"
      ; Si oui, on la redessine
      redrawProgressBar(hParentWnd,hwnd)
    EndIf
    
    ProcedureReturn 1
  EndIf
  
EndProcedure


; Parcourt toutes les fenêtre visibles
Procedure listWindows()
  Protected hwnd.l

  hWnd = FindWindow_( 0, 0 )
 
  While hWnd <> 0
    If GetWindowLong_(hWnd, #GWL_STYLE) & #WS_VISIBLE = #WS_VISIBLE
      If GetWindowLong_(hWnd, #GWL_EXSTYLE) & #WS_EX_TOOLWINDOW <> #WS_EX_TOOLWINDOW

          EnumChildWindows_(hWnd, @EnumChildWindowProc(),hWnd)

      EndIf
    EndIf
    hWnd = GetWindow_(hWnd, #GW_HWNDNEXT)
  Wend
 
EndProcedure

;- ************* Main *************
; Créer une fenêtre avec une barre de progression, pour le test
DisableExplicit
OpenWindow(0,0,0,320,200,"test progress bar");,#PB_Window_Invisible|#PB_Window_NoGadgets)


numimage = CatchImage(#PB_Any,?progressPattern)
hBitmap = ImageID(numImage)
hBrush = CreatePatternBrush_(hBitmap)

; Est-ce possible de le charger à partir de la DataSection plutôt qu'à partir d'un fichier ?
iconname.s = "dog.ani"
hIcon = LoadImage_(0,@iconname,#IMAGE_ICON,0,0,#LR_LOADFROMFILE)

; Dessiner une barre de progression aux caractéristiques aléatoires
RandomSeed(ElapsedMilliseconds())
minvalue.i = Random(50)
maxvalue.i = minvalue + 50 + Random(200)
ProgressBarGadget(1,30,60,150 + Random(150),16,minvalue,maxvalue)

targetPos.i = maxvalue
currentPos.f = 20
  
Repeat
  While WindowEvent()
    Delay(2)
  Wend
  
  ; je fais bouger la progress bar
  If Int(currentPos) = targetPos
    targetPos = minvalue + Random(maxvalue - minvalue)
  Else
    If currentPos < targetPos
      currentPos + 0.1
    Else
      currentPos - 0.1
    EndIf
    
  EndIf
  SetGadgetState(1,Int(currentPos))
  
  ; Et là, je pars à sa recherche dans les fenêtres de Windows pour la trouver et la redessiner
  listWindows()
  
  ; On fait avancer l'animation d'un cran
  iconstep + 0.25
  If iconStep > #ICONNBFRAMES
    iconStep = 0
  EndIf
  
  ; Nettoyage de la liste des fenêtres ajoutées
  ForEach addedWin()
    If IsWindow_(addedWin()\hProgressWnd) = #False
      ; Pas forcément nécessaire (les fenêtre filles sont détruites avec la mère)
      If IsWindow_(addedWin()\hAddedWnd) = #True
        DestroyWindow_(addedWin()\hAddedWnd)
      EndIf
      DeleteElement(addedWin())
    EndIf
  Next addedWin()  
  
  Delay(25)
Until quit = 1

DestroyIcon_(hIcon)

DataSection
  progressPattern:
  IncludeBinary "dog.bmp"
EndDataSection
Les idées sont le souvenir de choses qui ne se sont pas encore produites.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: [API Windows] Lire la valeur d'une barre de progression

Message par Backup »

kelebrindae a écrit :@Dobro:
Oui, redimensionner, c'est une idée. :lol:
...Mais ça ne marche pas avec les barres de progression des autres applis (genre "copie dans l'explorateur").
c'est peut etre a toi d'adapter la taille du chien ... :wink:
(tout est relatif)
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: [API Windows] Lire la valeur d'une barre de progression

Message par graph100 »

bah en tout cas maintenant je vois le chien qui cours ^^, c'est mignon !
j'avais pas compris ce que tu voulais faire.
Je pensais que c'étais simplement une barre par dessus celle par défaut. Alors que là le chien bouge, alors il faut sans cesse redessiner :(
je parlais de la barre de progression, tu fais une fenetre que tu redimensionne, (carrée toute simple) avec l'image de ta barre dedans.

Pour le problème du scintillement, tu peux pas bloquer le dessin de la fenêtre pendant que tu la trafique ?
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
kelebrindae
Messages : 579
Inscription : ven. 11/mai/2007 15:21

Re: [API Windows] Lire la valeur d'une barre de progression

Message par kelebrindae »

@Dobro:
Exact, c'était une solution aussi.

@Graph100:
Si, peut-être, mais comme je ne connais pas du tout l'API Windows, je ne sais pas comment faire...

Voici la version "finale" que je vais placer discrètement dans le groupe de démarrage de mon collègue. :twisted:
J'ai un peu restructuré et nettoyé le code, et j'ai réussi à charger le curseur animé depuis les ressources plutôt que depuis un fichier externe (Merci au DrDri, dont j'ai emprunté le code).
=> une fois compilé, j'obtiens un EXE de 34,5 Ko, qui ne prend que 500 Ko de RAM environ, et qui ne consomme pas trop de CPU (j'ai testé avec trois copies de fichiers simultanées, donc trois barres de progression, et ça n'a jamais dépassé 1%...).

Voici les fichiers dont vous aurez besoin pour compiler:
http://keleb.free.fr/codecorner/downloa ... ic/dog.bmp
http://keleb.free.fr/codecorner/downloa ... ic/dog.ani

Vous devez aussi créer, dans le même répertoire que le source, un fichier .rc contenant la ligne:

Code : Tout sélectionner

dogani RCDATA "D:\\Programmation\\PureBasic\\projects\\Astuces\\dog.ani"
en indiquant bien le chemin complet du fichier dog.ani avec des doubles slashes.
Puis, dans PB, allez dans le menu "Compiler" > "Compiler Options", et dans l'onglet "Resources", ajoutez ce fichier .rc
=> ça permet d'inclure le curseur animé dans l'EXE, ce qui n'était a priori pas possible avec "includeBinary".
(une fois compilé, l'EXE est indépendant et n'a plus besoin de ces fichiers pour fonctionner, c'est plus discret...)

Pour ceux qui veulent tester sans s'embêter avec toutes ces manip', vous trouverez l'EXE ici:
http://keleb.free.fr/codecorner/downloa ... bmng32.exe

Et enfin, voilà le code:
[EDIT:] Correction du commentaire de la constante #TESTMODE (merci Dobro)

Code : Tout sélectionner

; But: Remplacer les barres de progression (toutes, pas seulement celles de ce programme)
;      par une petite animation rigolote
; Version: PB 4.51
; Date: 01 août 2011
; Auteur: Kelebrindae
; Note: Ne fonctionne qu'avec Windows XP 32bits, car seul le contrôle "msctls_progress32"
;       est géré.


;- Constantes, structures, globales
#PBM_GETRANGE = #WM_USER + 7

#ICONSIZEX = 32   ; Taille X du curseur de progression
#ICONSIZEY = 32   ; Taille Y du curseur de progression
#ICONNBFRAMES = 6 ; Nombre de frames dans l'animation du curseur de progression

#TESTMODE = #True ; Passez cette constante à #False pour que le programme fonctionne en "invisible"

; Liste des barres de progression redessinées
Structure progBar_struct
  hParentWnd.i
  hProgressWnd.i
  hAddedWnd.i
EndStructure
Global NewList progBar.progBar_struct()

EnableExplicit

Global numimage.i,hBitmap.i,hBrush.i,hIcon.i ; Image de fond pour la barre, handles pour l'API
Global iconStep.f ; phase de l'animation


;- ********* Procedures *********

; Chargement d'un icone depuis les ressources. Merci au Dr Dri pour cette technique !
Procedure.i loadIconFromResources(iconName.s)
  Protected ResourceID.i, iconData.i, iconSize.i
  
  ; Localiser les infos voulues dans les ressources et les charger
  ResourceID = FindResource_(GetModuleHandle_(0), @iconName, #RT_RCDATA)
  iconData   = LoadResource_(GetModuleHandle_(0), ResourceID)
  iconSize   = SizeofResource_(GetModuleHandle_(0), ResourceID)
  
  ; Créer l'icône à partir de ces infos et retourner le handle
  ProcedureReturn CreateIconFromResourceEx_(IconData, IconSize, #True, $00030000, 32, 32, #LR_DEFAULTCOLOR)
  
EndProcedure


; On redessine toutes les barres de progression répertoriées
; (ou plutôt, on dessine par-dessus)
Procedure redrawProgressBars()
  Protected wndInfo.WINDOWINFO, refx.i, refy.i
  Protected rc.RECT,rcinv.RECT
  Protected lo.i,hi.i,valeur.i
  Protected posX.f
  Protected hDC.i,iconX.i,iconY.i
  
  
  ; On fait avancer l'animation d'un cran
  iconstep + 0.25
  If iconStep > #ICONNBFRAMES
    iconStep = 0
  EndIf
  
  ; Pour toutes les barres de la liste:
  ForEach progBar()
    ; Si la barre n'existe plus, on la vire de la liste
    If IsWindow_(progBar()\hProgressWnd) = #False
      ; Pas forcément nécessaire (les fenêtre filles sont détruites avec la mère)
      If IsWindow_(progBar()\hAddedWnd) = #True
        DestroyWindow_(progBar()\hAddedWnd)
      EndIf
      DeleteElement(progBar())
      
      Break ; et on passe à la suivante
    EndIf
  
    ; Coordonnées de la fenêtre parente
    GetWindowInfo_(progBar()\hParentWnd,wndInfo)
    refX = wndInfo\rcClient\left
    refY = wndInfo\rcClient\top
    
    ; Coordonnées de la barre
    GetWindowRect_(progBar()\hProgressWnd,@rc) 
    
    ; Valeur actuelle de la progression
    valeur = SendMessage_(progBar()\hProgressWnd,#PBM_DELTAPOS,0,0)
  
    ; Valeurs minimum/maximum de la barre (ce n'est pas forcément 0 / 100)
    lo =  SendMessage_(progBar()\hProgressWnd,#PBM_GETRANGE,#True,0)
    hi =  SendMessage_(progBar()\hProgressWnd,#PBM_GETRANGE,#False,0)
  
    ; Calcul de la limite entre "fait" et "reste à faire"
    posX = ((valeur - lo) / (hi - lo)) ; Pourcentage de progression
    posX * (rc\right - rc\left) ; Avancement dans la barre (en pixels)
      
  
    ; On récupère le DC de la fenêtre parente.
    hDC = GetDC_( progBar()\hProgressWnd ) 
    
    ; On remplit la zone "faite" avec l'image chargée au démarrage du programme
    SetRect_( @rcinv, 0,1,Int(posX),(rc\bottom - rc\top))
    FillRect_(hDC, @rcinv, hBrush)
    
    ; On remplit la zone "reste à faire" avec du blanc
    Rectangle_(hDC,Int(posX) + 1,0,(rc\right - rc\left),(rc\bottom - rc\top))
   
    ; Et on relâche le contexte
    ReleaseDC_(progBar()\hProgressWnd,hDC)
      
    ; On centre le curseur animé sur la progression
    iconX = (rc\left - refx) + Int(posX) - 10
    If iconX < rc\left - refx
      iconX = rc\left - refx
    ElseIf iconX > rc\right - refx - #ICONSIZEX + 1
      iconX = rc\right - refx - #ICONSIZEX + 1
    EndIf
    iconY = (rc\top - refy) + ((rc\bottom - rc\top) - #ICONSIZEY) / 2 - 1
    
    ; Puis on bouge la fenêtre "static" au bon endroit et on dessine le cruseur dedans
    SetWindowPos_(progBar()\hAddedWnd,progBar()\hProgressWnd,iconX,iconY,32,32,#SWP_NOSIZE)  
    hDC = GetDC_( progBar()\hAddedWnd)
    DrawIconEx_(hDC,0,0,hIcon,0,0,Int(iconStep),0,#DI_NORMAL)
    ReleaseDC_(progBar()\hAddedWnd,hDC)
    RedrawWindow_(progBar()\hAddedWnd,0,0, #RDW_INVALIDATE)
    
  Next progBar()  

EndProcedure


; Enumère les fenêtres filles
Procedure.i enumChildWindowProc(hwnd.i, hParentWnd.i)
  Protected classe.s, found.b
  
  ; Tester si on se trouve sur une progress bar
  If GetParent_(hWnd) = hParentWnd
    classe=Space(100)
    GetClassName_(hwnd, @classe, 100)
    If classe = "msctls_progress32"

      ; Est-ce que l'on redessine déjà cette barre ?
      ForEach progBar()
        If progBar()\hProgressWnd = hwnd
          found = #True
          Break
        EndIf
      Next progBar()
     
      ; Si ce n'est pas le cas, on l'ajoute à la liste et on crée la fenêtre pour le curseur animé
      If found = #False
        AddElement(progBar())
        progBar()\hParentWnd = hParentWnd
        progBar()\hProgressWnd = hwnd
        progBar()\hAddedWnd = CreateWindowEx_(0,"static","",#WS_CHILD|#WS_VISIBLE|#WS_CLIPCHILDREN,0,0,#ICONSIZEX,#ICONSIZEY,progBar()\hParentWnd,0,GetModuleHandle_(0),0) 
      EndIf
  
    EndIf
    
    ProcedureReturn 1
  EndIf
  
EndProcedure

; Parcourt toutes les fenêtre visibles
Procedure findProgressBars()
  Protected hwnd.i

  hWnd = FindWindow_( 0, 0 )
 
  While hWnd <> 0
    If GetWindowLong_(hWnd, #GWL_STYLE) & #WS_VISIBLE = #WS_VISIBLE
      If GetWindowLong_(hWnd, #GWL_EXSTYLE) & #WS_EX_TOOLWINDOW <> #WS_EX_TOOLWINDOW

          EnumChildWindows_(hWnd, @EnumChildWindowProc(),hWnd)

      EndIf
    EndIf
    hWnd = GetWindow_(hWnd, #GW_HWNDNEXT)
  Wend
 
EndProcedure

;- ************* Main *************
; Créer une fenêtre avec une barre de progression, pour le test
DisableExplicit
CompilerIf #TESTMODE = #True
  OpenWindow(0,0,0,320,200,"Détournement des barres de progression")
CompilerElse
  OpenWindow(0,0,0,100,100,"",#PB_Window_Invisible)
CompilerEndIf

; Chargement de l'image qui sert de fond à la barre de progression
numimage = CatchImage(#PB_Any,?progressPattern)
hBitmap = ImageID(numImage)
hBrush = CreatePatternBrush_(hBitmap)
DeleteObject_(hBitmap)
FreeImage(numimage)

; Chargement du curseur animé
hIcon = loadIconFromResources("dogani")

; On aurait aussi pu charger l'icone depuis un fichier
; hIcon = LoadImage_(0,@"dog.ani",#IMAGE_ICON,0,0,#LR_LOADFROMFILE)

; Si on est en mode "Test", on dessine une barre de progression aux caractéristiques aléatoires
CompilerIf #TESTMODE = #True
  RandomSeed(ElapsedMilliseconds())
  minvalue.i = Random(50)
  maxvalue.i = minvalue + 50 + Random(200)
  ProgressBarGadget(1,30,20,150 + Random(150),13,minvalue,maxvalue)
  
  targetPos.i = maxvalue
  currentPos.f = minvalue
CompilerEndIf

; Boucle principale
Repeat
  While WindowEvent()
    Delay(2)
  Wend
  
  CompilerIf #TESTMODE = #True
    ; je fais bouger la progress bar
    If Int(currentPos) = targetPos
      targetPos = minvalue + Random(maxvalue - minvalue)
    Else
      If currentPos < targetPos
        currentPos + 0.1
      Else
        currentPos - 0.1
      EndIf
    EndIf
    SetGadgetState(1,Int(currentPos))
  CompilerEndIf 
  
  ; On parcourt les fenêtres de Windows pour trouver les barres de progression
  findProgressBars()
  
  ; S'il y en a, on les redessine
  If ListSize(progBar()) > 0
    redrawProgressBars()
  EndIf
  
  ; Laisser du temps, pour économiser le CPU
  Delay(20)
  
ForEver

DeleteObject_(hBrush)
DestroyIcon_(hIcon)

;- Datas
DataSection
  progressPattern:
  IncludeBinary "dog.bmp"
EndDataSection
Dernière modification par kelebrindae le mar. 02/août/2011 14:01, modifié 1 fois.
Les idées sont le souvenir de choses qui ne se sont pas encore produites.
Avatar de l’utilisateur
venom
Messages : 3128
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: [API Windows] Lire la valeur d'une barre de progression

Message par venom »

ça fonctionne bien chez moi, mise a part que le chien scintille a fond il apparait 1 seconde sur 2 et cela depuis tes 1er codes






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: [API Windows] Lire la valeur d'une barre de progression

Message par graph100 »

c'est une nouvelle espèce ;)

le fichier prend 1080ko de mémoire en exécution, mais ça ne fonctionne pas avec la fenêtre de copie window, pour tester j'ai lancer une fenêtre faite en purebasic avec une progressbar.

mais bon travail ;)
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
kelebrindae
Messages : 579
Inscription : ven. 11/mai/2007 15:21

Re: [API Windows] Lire la valeur d'une barre de progression

Message par kelebrindae »

@Venom:
Ouais, je sais, c'est pas très beau, mais je n'ai pas réussi à faire mieux... :(

@Graph100:
Merci, mais... 1080 Ko ? Ici, il ne prend que 508 Ko; bizarre. :?
Et si tu testes sur Win7 64bits, c'est "normal" que ça ne trouve pas les barres de progression: je ne surveille que les contrôles "msctls_progress32", qui sont utilisés par XP.
Les idées sont le souvenir de choses qui ne se sont pas encore produites.
Avatar de l’utilisateur
venom
Messages : 3128
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: [API Windows] Lire la valeur d'une barre de progression

Message par venom »

kelebrindae a écrit :@Graph100:
Merci, mais... 1080 Ko ? Ici, il ne prend que 508 Ko; bizarre. :?
Et si tu testes sur Win7 64bits, c'est "normal" que ça ne trouve pas les barres de progression: je ne surveille que les contrôles "msctls_progress32", qui sont utilisés par XP.
pourtant j'ai testé sous seven x64 avec winrar x64 cela fonctionne bien






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: [API Windows] Lire la valeur d'une barre de progression

Message par Backup »

je suppose que tu as voulu ecrire

#TESTMODE = #True ; Passez cette constante à #False pour que le programme fonctionne en "invisible"
au lieu de

#TESTMODE = #True ; Passez cette constante à #Truepour que le programme fonctionne en "invisible"
kelebrindae
Messages : 579
Inscription : ven. 11/mai/2007 15:21

Re: [API Windows] Lire la valeur d'une barre de progression

Message par kelebrindae »

Oui, tu as tout à fait raison (pas bien réveillé, moi...)
=> je corrige.
Les idées sont le souvenir de choses qui ne se sont pas encore produites.
Répondre