Page 1 sur 1

any idea

Publié : sam. 18/déc./2004 17:26
par hardy

Code : Tout sélectionner

;path.s=Space(255) 
;GetModuleFileName_(0,@path,255)

;While Right(path,1)<>"\"
;path=Left(path,Len(path)-1)
;Wend

;hWnd=Val(ProgramParameter())
;If SendMessage_(hWnd,673, 0, GetCurrentProcessId_())=0
;End
;EndIf

Dim actuel.s(100)
Structure PROCESSENTRY32 
    dwSize.l 
    cntUsage.l 
    th32ProcessID.l 
    th32DefaultHeapID.l 
    th32ModuleID.l 
    cntThreads.l 
    th32ParentProcessID.l 
    pcPriClassBase.l 
    dwFlags.l 
    szExeFile.b[260] 
EndStructure 


DefType.PROCESSENTRY32 Proc32 
Proc32\dwSize = SizeOf(PROCESSENTRY32) 
If OpenLibrary (0,"kernel32.dll")=0
  MessageRequester("Relance","Echec initialisation")
  End
Else
  Repeat
  nbactuel=0
    s=CallFunction(0,"CreateToolhelp32Snapshot",274,0)
    If s
         If CallFunction(0,"Process32First",s, @Proc32) 
            If Len(PeekS(@Proc32\szExeFile))>0 And Proc32\th32ProcessID>0
            nbactuel=nbactuel+1
            actuel(nbactuel)="&&"+PeekS(@Proc32\szExeFile)+"&&"+Str(Proc32\th32ProcessID)
            EndIf
            While CallFunction (0, "Process32Next", s, @Proc32)
            If Len(PeekS(@Proc32\szExeFile))>0 And Proc32\th32ProcessID>0
                nbactuel=nbactuel+1
                actuel(nbactuel)="&&"+PeekS (@Proc32\szExeFile)+"&&"+Str(Proc32\th32ProcessID)
            EndIf
            Wend
           EndIf
     EndIf 
     CloseHandle_(s)

SortArray(actuel(),2,1,nbactuel)

;If nbactuel=0
;RunProgram(path+"relance.exe",Str(hWnd),"")
;End
;EndIf

resultat.s=""
For k=1 To nbactuel
resultat=resultat+actuel(k)
Next k

;If SendMessage_(hWnd,674, @resultat, Len(resultat))=0
;  RunProgram(path+"relance.exe",Str(hWnd),"")
;End
;endif

Delay(50)

ForEver
EndIf

End
Un truc que j'utilise.
ouvrez le taskmanager et lancez ça : la mémoire utilisée augmente régulièrement, et au bout d'un moment l'appel à CreateToolhelp32Snapshot échoue.
:?: :?: :?:

Publié : sam. 18/déc./2004 17:34
par Chris
Il faut voir quoi?

Moi, j'ai bien la mémoire qui augmente, puis ça se stabilise.

Par contre, comment on voit que CreateToolhelp32Snapshot échoue :oops:

WinXP SP2 512 Mo

Publié : sam. 18/déc./2004 17:37
par hardy
lorsque la mémoire se stabilise, s passe à -1, et on n'obtient plus rien.

Publié : sam. 18/déc./2004 17:43
par Chris
Ah d'accord, effectivement, j'ai mis ça :
If s = -1 : MessageRequester("","Planté") : EndIf
après s=CallFunction(0,"CreateToolhelp32Snapshot",274,0), et au bout d'un moment, la boite apparait

Publié : mar. 21/déc./2004 14:44
par hardy
Alors, personne n'a une idée?

FRED !!!!!!!!

Publié : mar. 21/déc./2004 18:36
par hardy
Eh ben, remuez vos petites cellules grises, ou elles vont s'empâter.
Serait-ce un bug PB? (libération de mémoire)

Publié : mar. 21/déc./2004 18:57
par Anonyme2
Appelles GetLastError() pour déterminer pourquoi CreateToolhelp32Snapshot retourne INVALID_HANDLE_VALUE et dis nous tout

Publié : mar. 21/déc./2004 19:05
par hardy
31: A device attached to the system is not functioning. ERROR_GEN_FAILURE

Avec ça...

Publié : mar. 21/déc./2004 19:09
par Anonyme2
on est bien avancé ...

Publié : mer. 22/déc./2004 18:21
par Le Soldat Inconnu
je vais peut-être dire une co**erie mais il n'y aurait pas une sécurité de win qui empêche dans faire trop à la fois :roll: