[R] Fichier utilisé, impossible de le supprimer

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Flop
Niveau 3
Niveau 3
Messages : 48
Enregistré le : lun. 20 oct. 2008 16:48
Status : Hors ligne

[R] Fichier utilisé, impossible de le supprimer

#1

Message par Flop »

bonjour à tous, dans mon script

je télécharge un fichier png, je l'affiche dans une seconde gui, et quand je quitte la seconde gui, impossible de supprimer le fichier, si j'essaye avec windows, il me dit fichier en cours d'utilisation, alors que de mon script, a ce moment la j'en ai plus besoin et surtout je veux le supprimer. comment faire pour outrepasser ce problème.

Merci d'avance
Modifié en dernier par Flop le mer. 26 nov. 2008 23:13, modifié 1 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11796
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Fichier utilisé, impossible de le supprimer

#2

Message par Tlem »

2 solutions :

1 - Téléchargez l'image dans le TempDir et ne vous en occupé pas (elle sera supprimée après un nettoyage du PC)

2 - Avant de quitter votre 2ieme GUI, attribuez une image vide à votre contrôle puis essayez de supprimer l'image.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Flop
Niveau 3
Niveau 3
Messages : 48
Enregistré le : lun. 20 oct. 2008 16:48
Status : Hors ligne

Re: [..] Fichier utilisé, impossible de le supprimer

#3

Message par Flop »

je n'y arrive pas, voici le code qui creer ma deuxieme GUI, l'image qu'il faudrait supprimer est covers_existante.png

Tant que je n'ai pas quitter mon prog, windows refuse de supprimer l'image

j'ai essayer de la faire télécharger dans @tempdir, mais ca ne change rien

Code : Tout sélectionner

Func GUIReplace($where, $lang)
    
    $filesize = InetGetSize("http://mon site/" & $lang & "/" & $where)
    ; téléchargement de la covers existante

    
    InetGet("http://mon site/" & $lang & "/" & $where, @ScriptDir & "\covers_existante.png", 1, 1)
    ProgressOn("MeeUploadNiceCovers", "Téléchargement de la covers", "1%")
    
    While @InetGetActive
        $percent = Int((@InetGetBytesRead / $filesize) * 100)
        ProgressSet($percent, $percent & " %")
        Sleep(100)
    WEnd
    
    ProgressOff()
    
    _GDIPlus_Startup()
    
    $image_covers_1 = _GDIPlus_ImageLoadFromFile($fileup)
    $image_covers_2 = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\covers_existante.png")


    $GUI_covers = GUICreate("Remplacement des covers", 600, 390, -1, -1, $WS_POPUPWINDOW)
    ;GUICtrlCreatePic("", 10, 10, 280, 280)
    GUISetState(@SW_SHOW, $GUI_covers)
    ;-------------------------------------------------------------------
    $quitter_covers = GUICtrlCreateButton("QUITTER", 320, 350, 260)
    GUICtrlSetFont(-1, 8, 800, 0, "Arial Black")

    $remplacer_covers = GUICtrlCreateButton("REMPLACER", 18, 350, 260)
    GUICtrlSetFont(-1, 8, 800, 0, "Arial Black")
    
    GUIRegisterMsg($WM_PAINT, "_ReDraw")

    $graphics_covers_1 = _GDIPlus_GraphicsCreateFromHWND($GUI_covers)
    _GDIPlus_GraphicsDrawImageRect($graphics_covers_1, $image_covers_1, 10, 10, 280, 330)

    $graphics_covers_2 = _GDIPlus_GraphicsCreateFromHWND($GUI_covers)
    _GDIPlus_GraphicsDrawImageRect($graphics_covers_2, $image_covers_2, 310, 10, 280, 330)
    
    Sleep(3000)
    
    While 1

        $msg2 = GUIGetMsg($GUI_covers)

        Select
            Case $msg2 = $GUI_EVENT_CLOSE
                GUIDelete($GUI_covers)          IL FAUDRAIS PAR EXEMPLE SUPPRIMER L'IMAGE '(@ScriptDir & "\covers_existante.png")' ICI
                ExitLoop
        EndSelect

        Select
            Case $msg2 = $remplacer_covers
                GUIDelete($GUI_covers)
                $nom_covers_remplacee = $titre[$n2]
                If $lang = "FR" Then
                    UploadFR($where)
                    _Maj_covers()
                    
                    ExitLoop
                Else
                    UploadUS($where)
                    _Maj_covers()
                    ExitLoop
                EndIf
        EndSelect
        
        Select
            Case $msg2 = $quitter_covers
                GUIDelete($GUI_covers)
                ExitLoop
        EndSelect
        
    WEnd
EndFunc   ;==>GUIReplace
 
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] Fichier utilisé, impossible de le supprimer

#4

Message par timmalos »

L'utilisation de _GDIplus impose de fermer tout ce qu'on ouvre, sous peine que le programme plante, ce qui n'est pas le cas ici mais vous nje pouvez pas fermer le programme.

Parcourez l'aide à l'aide de F1, et cherchez les _gdiplus_graphicdispose et pen_dispose et fermez toutes vos variables grâce à ses fonctions. Ensuite vous pourrez supprimer l'image :)
Je n'ai pas trop le temps d'analyser votre script, mais essayer d'analyser un exemple donné avec _gdiplus et vous verrez qu'il faut fermer tous les controles, et ceci en manière generale, c'est une bonne habitude a prendre, et ici si on ne le fait pas, ca cloche :)
Flop
Niveau 3
Niveau 3
Messages : 48
Enregistré le : lun. 20 oct. 2008 16:48
Status : Hors ligne

Re: [..] Fichier utilisé, impossible de le supprimer

#5

Message par Flop »

merci bcq, j'ai résolu mon problème en suivant l'aide.. merci encore
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] Fichier utilisé, impossible de le supprimer

#6

Message par timmalos »

N'oublie pas de modifier ton titre en [R]
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11796
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Fichier utilisé, impossible de le supprimer

#7

Message par Tlem »

Flop a écrit :j'ai essayer de la faire télécharger dans @tempdir, mais ca ne change rien
Je n'ai pas dit que ça résoudrait votre problème, mais seulement que vous n'auriez pas besoin de vous occupé de l'image car elle serait effacée lors d'un nettoyage du PC.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Répondre