Comment connaitre les fichier en cours d'execution
Comment connaitre les fichier en cours d'execution
Bonjour,
Voilà comment lister chaque fichier en cours d'execution sous windows.
Par exemple si je veux demarrer la calculatrice de windows et qu'elle est dejà en route, j'aimerai que mon programme le sache pour ne pas lancer une deuxieme fois la calculatrice
donc je voudrais savoir si quelqu'un a un truc pour moi, si on peut lister tous ceux qui est en route et pouvoir leviter de demarrer deux fois le meme programme.
Voilà merci d'avance pour votre aide. je debute mais j'avance bien, j'ai su me debrouiller pour un tas de truc et là c'est le premier poste que je lance parceque je bloque vraiment.
Voilà comment lister chaque fichier en cours d'execution sous windows.
Par exemple si je veux demarrer la calculatrice de windows et qu'elle est dejà en route, j'aimerai que mon programme le sache pour ne pas lancer une deuxieme fois la calculatrice
donc je voudrais savoir si quelqu'un a un truc pour moi, si on peut lister tous ceux qui est en route et pouvoir leviter de demarrer deux fois le meme programme.
Voilà merci d'avance pour votre aide. je debute mais j'avance bien, j'ai su me debrouiller pour un tas de truc et là c'est le premier poste que je lance parceque je bloque vraiment.
Avec l'esperance de creer un trés bon module pour les echecs.
Re: Comment connaitre les fichier en cours d'execution
Tu as deux méthodes, la première si le programme recherché est fenêtré et que tu connais le nom de la fenêtre :
Ou la deuxième, si il n'est pas fenêtré, tu passes par les processus :
(Un super exemple de Fr34k)
Procedure ListWindows() ; Retourne le nombre de fenêtres actuellement active
Global listwins
If listwins=0 : NewList wind.s() : listwins=1 : Else : ClearList (wind()) : Endif
hWnd.l = FindWindow_( 0, 0 )
While hWnd <> 0
If GetWindowLong_(Hwnd, #GWL_STYLE ) & #WS_VISIBLE = #WS_VISIBLE ; pour lister que les fenêtres visibles
If GetWindowLong_(Hwnd, #GWL_EXSTYLE ) & #WS_EX_TOOLWINDOW <> #WS_EX_TOOLWINDOW ; pour lister que les fenêtres qui ne sont pas des ToolWindow ou barre d'outils
txt.s = Space (256)
GetWindowText_(hwnd, txt, 256)
If txt <> ""
AddElement (wind()) : wind()=txt
Endif
Endif
Endif
hWnd = GetWindow_(hWnd, #GW_HWNDNEXT )
Wend
ProcedureReturn CountList (wind())
EndProcedure
Procedure.s SelectWindows(Number) ; Retourne le titre de la fenêtre sélectionnée (Number doit être compris entre 0 et ListWindows()-1)
If listwins=1
If CountList (wind())>0
If number=< CountList (wind())-1
SelectElement (wind(),number)
ProcedureReturn wind()
Endif
Endif
Endif
EndProcedure
Ou la deuxième, si il n'est pas fenêtré, tu passes par les processus :
(Un super exemple de Fr34k)
; English forum: http://purebasic.myforums.net/viewtopic ... highlight=
; Author: Hi-Toro
; Date: 30. November 2003
; Should work on all Windows version from Win95 till WinXP.
; For a Win2000/WinXP only version look for ListRunningProcesses_withHierrachy.pb
; -----------------------------------------------------------------------------
; Constants required by process functions, etc...
; -----------------------------------------------------------------------------
#TH32CS_SNAPHEAPLIST = $1
#TH32CS_SNAPPROCESS = $2
#TH32CS_SNAPTHREAD = $4
#TH32CS_SNAPMODULE = $8
#TH32CS_SNAPALL = #TH32CS_SNAPHEAPLIST | #TH32CS_SNAPPROCESS | #TH32CS_SNAPTHREAD | #TH32CS_SNAPMODULE
#TH32CS_INHERIT = $80000000
#INVALID_HANDLE_VALUE = -1
#MAX_PATH = 260
#PROCESS32LIB = 9999
Structure PROCESSENTRY32
dwSize.l
cntUsage.l
th32ProcessID.l
*th32 Default HeapID.l
th32ModuleID.l
cntThreads.l
th32ParentProcessID.l
pcPriClassBase.l
dwFlags.l
szExeFile.b [ #MAX_PATH]
End Structure
; -----------------------------------------------------------------------------
; GLOBAL PROCESS LIST! Used to retrieve information after getting process list...
; -----------------------------------------------------------------------------
NewList Process32.PROCESSENTRY32 ()
; This function sorts processes into TreeGadget list, so that child processes branch off from parents...
Procedure CompareProcs (gadget, currentid, currentname$)
Debug " Comparing " + currentname$ + " [ " + Str (currentid) + " ] "
ResetList (Process32 ())
While NextElement (Process32 ())
; Skip if checking against 'currentid', ie. same process...
If Process32 ()\th32ProcessID <> currentid
; Check currentid against this one...
againstid = Process32 ()\th32ProcessID
againstparent = Process32 ()\th32ParentProcessID
; If 'currentid' is parent of this process...
If currentid = againstparent
OpenTreeGadgetNode (gadget)
proc$ = PeekS (@Process32 ()\szExeFile)
Debug " --------> " + proc$ + " [ " + Str (Process32 ()\th32ProcessID) + " ] " + " / " + " [ " + Str (Process32 ()\th32ParentProcessID) + " ] "
AddGadgetItem (gadget, -1, PeekS (@Process32 ()\szExeFile))
current = ListIndex (Process32 ())
CompareProcs (gadget, againstid, proc$)
SelectElement (Process32 (), current)
DeleteElement (Process32 ())
CloseTreeGadgetNode (gadget)
Endif
Endif
Wend
EndProcedure
; Add processes to Process32 () list...
If OpenLibrary ( #PROCESS32LIB , " kernel32.dll ")
snap = CallFunction ( #PROCESS32LIB , " CreateToolhelp32Snapshot ", #TH32CS_SNAPPROCESS , 0)
If snap
DefType.PROCESSENTRY32 Proc32
Proc32\dwSize = SizeOf (PROCESSENTRY32)
If CallFunction ( #PROCESS32LIB , " Process32First ", snap, @Proc32)
AddElement (Process32 ())
CopyMemory (@Proc32, @Process32 (), SizeOf (PROCESSENTRY32))
While CallFunction ( #PROCESS32LIB , " Process32Next ", snap, @Proc32)
AddElement (Process32 ())
CopyMemory (@Proc32, @Process32 (), SizeOf (PROCESSENTRY32))
Wend
Endif
CloseHandle_ (snap)
Endif
CloseLibrary ( #PROCESS32LIB )
Endif
; Window hook, used to resize/redraw TreeGadget when window is resized...
Procedure WinHook (WindowID, Message, wParam, lParam)
If Message = #WM_PAINT
ResizeGadget (0, 0, 0, WindowWidth (), WindowHeight ())
RedrawWindow_ (GadgetID (0), #Null , #Null , #RDW_INVALIDATE )
Endif
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
; GUI...
OpenWindow (0, 320, 200, 320, 400, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget , " Process list... ")
CreateGadgetList (WindowID ())
TreeGadget (0, 0, 0, WindowWidth (), WindowHeight ())
SetWindowCallback (@WinHook ())
OpenTreeGadgetNode (0)
; Add processes to TreeGadget...
ResetList (Process32 ())
While NextElement (Process32 ())
AddGadgetItem (0, -1, PeekS (@Process32 ()\szExeFile))
current = ListIndex (Process32 ())
CompareProcs (0, Process32 ()\th32ProcessID, PeekS (@Process32 ()\szExeFile))
SelectElement (Process32 (), current)
Wend
Repeat
Until WaitWindowEvent () = #PB_Event_CloseWindow
End
Ca c'est la version XP, chez moi, elle fonctionne.Kasp9arov a écrit :Aprés plusieur test ce code me retourne une retourne une erreur, aprés recherche j'ai trouvé qu'il fonctionne qu'avec windows 98 et non xp,
en attente de reaction.
Code : Tout sélectionner
; English forum: http://purebasic.myforums.net/viewtopic.php?t=8086&highlight=
; Author: Hi-Toro (updated for PB3.93 by Andre)
; Date: 29. October 2003
; OS: Windows
; Demo: No
; Should run correctly on WinXP, Win2000/2003 - will not work correctly on Win98 and older...
; Look for ListRunningProcesses_withHierrachy_W9x.pb to get a version for Win95 and newer.
; -----------------------------------------------------------------------------
; Shows list of running processes and their hierarchy...
; -----------------------------------------------------------------------------
; james @ hi - toro . com
; -----------------------------------------------------------------------------
; -----------------------------------------------------------------------------
; Constants required by process functions, etc...
; -----------------------------------------------------------------------------
#TH32CS_SNAPHEAPLIST = $1
#TH32CS_SNAPPROCESS = $2
#TH32CS_SNAPTHREAD = $4
#TH32CS_SNAPMODULE = $8
#TH32CS_SNAPALL = #TH32CS_SNAPHEAPLIST | #TH32CS_SNAPPROCESS | #TH32CS_SNAPTHREAD | #TH32CS_SNAPMODULE
#TH32CS_INHERIT = $80000000
#INVALID_HANDLE_VALUE = -1
#MAX_PATH = 260
#PROCESS32LIB = 9999
Structure PROCESSENTRY32
dwSize.l
cntUsage.l
th32ProcessID.l
*th32DefaultHeapID.l
th32ModuleID.l
cntThreads.l
th32ParentProcessID.l
pcPriClassBase.l
dwFlags.l
szExeFile.b [#MAX_PATH]
EndStructure
; -----------------------------------------------------------------------------
; GLOBAL PROCESS LIST! Used to retrieve information after getting process list...
; -----------------------------------------------------------------------------
NewList Proc32.PROCESSENTRY32 ()
; -----------------------------------------------------------------------------
; kernel32.dll open/close...
; -----------------------------------------------------------------------------
Procedure InitProcess32 ()
ProcedureReturn OpenLibrary (#PROCESS32LIB, "kernel32.dll")
EndProcedure
Procedure CloseProcess32 ()
ProcedureReturn CloseLibrary (#PROCESS32LIB)
EndProcedure
; -----------------------------------------------------------------------------
; Get/free snapshot of process list...
; -----------------------------------------------------------------------------
Procedure CreateProcessList ()
ClearList (Proc32 ())
ProcedureReturn CallFunction (#PROCESS32LIB, "CreateToolhelp32Snapshot", #TH32CS_SNAPPROCESS, 0)
EndProcedure
Procedure FreeProcessList (snapshot)
; Free process list (.PROCESSENTRY32 structures)...
ClearList (Proc32 ())
; Close snapshot handle...
ProcedureReturn CloseHandle_ (snapshot)
EndProcedure
; -----------------------------------------------------------------------------
; Iterate processes...
; -----------------------------------------------------------------------------
Procedure GetFirstProcess (snapshot)
; Allocate a new .PROCESSENTRY32 structure and fill in SizeOf (structure)...
AddElement (Proc32 ())
Proc32 ()\dwSize = SizeOf (PROCESSENTRY32)
; Call Process32First with snapshot handle and pointer to structure...
If CallFunction (#PROCESS32LIB, "Process32First", snapshot, @Proc32 ())
ProcedureReturn #True
Else
; Free the structure if function call failed...
DeleteElement (Proc32 ())
ProcedureReturn #False
EndIf
EndProcedure
Procedure GetNextProcess (snapshot)
; Allocate a new .PROCESSENTRY32 structure and fill in SizeOf (structure)...
AddElement (Proc32 ())
Proc32 ()\dwSize = SizeOf (PROCESSENTRY32)
; Call Process32Next with snapshot handle and pointer to structure...
If CallFunction (#PROCESS32LIB, "Process32Next", snapshot, @Proc32 ())
ProcedureReturn #True
Else
; Free the structure if function call failed...
DeleteElement (Proc32 ())
ProcedureReturn #False
EndIf
EndProcedure
; -----------------------------------------------------------------------------
; Another PROCESSENTRY32 list for destructive operations on process list...
; -----------------------------------------------------------------------------
NewList Proc32Copy.PROCESSENTRY32 ()
; Copy Proc32 () into Proc32Copy ()...
Procedure CopyProcessList ()
ResetList (Proc32 ())
While NextElement (Proc32 ())
AddElement (Proc32Copy ())
CopyMemory (@Proc32 (), @Proc32Copy (), SizeOf (PROCESSENTRY32))
Wend
EndProcedure
; Free Proc32Copy () list when done with it...
Procedure FreeProcessListCopy ()
ClearList (Proc32Copy ())
EndProcedure
; By the wonders of trial and error, we have this (this recursively adds
; processes to supplied TreeGadget)... don't ask me to explain this (see
; 'trial and error' comment... ;)
Procedure AddTreeProcesses (gadget, currentid) ; currentid = Proc32Copy ()\th32ProcessID
; Iterate through copy of Proc32 () -- call CopyProcessList () to get this...
ResetList (Proc32Copy ())
While NextElement (Proc32Copy ())
; Skip if checking against 'currentid', ie. same process...
If Proc32Copy ()\th32ProcessID <> currentid
; Check currentid against this one...
againstid = Proc32Copy ()\th32ProcessID
againstparent = Proc32Copy ()\th32ParentProcessID
; If 'currentid' is parent of this process...
If currentid = againstparent
; We have a child process. Open a new node in the TreeGadget...
OpenTreeGadgetNode (gadget)
; Note: next line uses GetFilePart () as the Win9x \szExeFile contains full path (WinNT has filename only)!
AddGadgetItem (gadget, -1, GetFilePart (PeekS (@Proc32Copy ()\szExeFile)))
; Store current position in Proc32Copy () list...
current = ListIndex (Proc32Copy ())
; Recursive function call to iterate against all other processes (ow, head hurts)...
AddTreeProcesses (gadget, againstid)
; Go back to stored position in list...
SelectElement (Proc32Copy (), current)
; Delete element so we don't process it again...
DeleteElement (Proc32Copy ())
; OK, close the new TreeGadget node...
CloseTreeGadgetNode (gadget)
EndIf
EndIf
Wend
EndProcedure
; Window callback procedure (resizes TreeGadget on window resize)...
Procedure WindowCallback (WindowID, message, wParam, lParam)
Select message
Case #WM_SIZE
ResizeGadget (0, 0, 0, WindowWidth (), WindowHeight ())
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
; Create basic window and gadget list...
OpenWindow (0, 0, 0, 320, 300, #PB_Window_SystemMenu | #PB_Window_MaximizeGadget | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget | #PB_Window_ScreenCentered, "List of running processes...")
CreateGadgetList (WindowID ())
; Create TreeGadget...
TreeGadget (0, 0, 0, WindowWidth (), WindowHeight ())
; Create root node in TreeGadget...
OpenTreeGadgetNode (0)
; Start window callback procedure...
SetWindowCallback (@WindowCallback ())
; About to add list of processes to TreeGadget...
; -----------------------------------------------------------------------------
; Initialise process list stuff (really just opening kernel32.dll!)...
; -----------------------------------------------------------------------------
If InitProcess32 ()
; -------------------------------------------------------------------------
; Get a snapshot of all running processes...
; -------------------------------------------------------------------------
snapshot = CreateProcessList ()
If snapshot
; ---------------------------------------------------------------------
; Get list of processes (generates the Proc32 () list)...
; ---------------------------------------------------------------------
If GetFirstProcess (snapshot)
Repeat
result = GetNextProcess (snapshot)
Until result = #False
EndIf
; ---------------------------------------------------------------------
; Copy Proc32 () as Proc32Copy (), so we can do nasty things to data...
; ---------------------------------------------------------------------
; Note that in this particular example, we don't need to operate on Proc32 ()
; after creating the list, but I'm making a copy because you need to delete elements
; when adding to the TreeGadget so that you don't repeatedly compare against
; previously elements already added. If we needed to operate on the Proc32 ()
; list later, this way would mean it's still available...
CopyProcessList ()
; ---------------------------------------------------------------------
; Iterate through Proc32Copy () list, and act on process data here...
; ---------------------------------------------------------------------
ResetList (Proc32Copy ())
While NextElement (Proc32Copy ())
; Add new item to root node...
AddGadgetItem (0, -1, GetFilePart (PeekS (@Proc32Copy ()\szExeFile)))
; Store current position in Proc32Copy () list...
current = ListIndex (Proc32Copy ())
; Iterate through the Proc32Copy () list (recursive function)...
AddTreeProcesses (0, Proc32Copy ()\th32ProcessID)
; Go back to where we were in the list...
SelectElement (Proc32Copy (), current)
Wend
; ---------------------------------------------------------------------
; Free copy of process list...
; ---------------------------------------------------------------------
FreeProcessListCopy ()
; ---------------------------------------------------------------------
; Free snapshot/list of processes...
; ---------------------------------------------------------------------
FreeProcessList (snapshot)
EndIf
; -------------------------------------------------------------------------
; Close kernel32.dll...
; -------------------------------------------------------------------------
CloseProcess32 ()
EndIf
; -----------------------------------------------------------------------------
; Event loop...
; -----------------------------------------------------------------------------
Repeat
Until WaitWindowEvent () = #PB_Event_CloseWindow
End
Code : Tout sélectionner
; English forum: http://purebasic.myforums.net/viewtopic.php?t=8086&highlight=
; Author: Hi-Toro (updated for PB3.93 by Andre)
; Date: 30. November 2003
; OS: Windows
; Demo: No
; Should work on all Windows version from Win95 till WinXP.
; For a Win2000/WinXP only version look for ListRunningProcesses_withHierrachy.pb
; -----------------------------------------------------------------------------
; Constants required by process functions, etc...
; -----------------------------------------------------------------------------
#TH32CS_SNAPHEAPLIST = $1
#TH32CS_SNAPPROCESS = $2
#TH32CS_SNAPTHREAD = $4
#TH32CS_SNAPMODULE = $8
#TH32CS_SNAPALL = #TH32CS_SNAPHEAPLIST | #TH32CS_SNAPPROCESS | #TH32CS_SNAPTHREAD | #TH32CS_SNAPMODULE
#TH32CS_INHERIT = $80000000
#INVALID_HANDLE_VALUE = -1
#MAX_PATH = 260
#PROCESS32LIB = 9999
; Structure PROCESSENTRY32
; dwSize.l
; cntUsage.l
; th32ProcessID.l
; *th32DefaultHeapID.l
; th32ModuleID.l
; cntThreads.l
; th32ParentProcessID.l
; pcPriClassBase.l
; dwFlags.l
; szExeFile.b [#MAX_PATH]
; EndStructure
; -----------------------------------------------------------------------------
; GLOBAL PROCESS LIST! Used to retrieve information after getting process list...
; -----------------------------------------------------------------------------
NewList Process32.PROCESSENTRY32 ()
; This function sorts processes into TreeGadget list, so that child processes branch off from parents...
Procedure CompareProcs (gadget, currentid, currentname$)
Debug "Comparing " + currentname$ + " [" + Str (currentid) + "]"
ResetList (Process32 ())
While NextElement (Process32 ())
; Skip if checking against 'currentid', ie. same process...
If Process32 ()\th32ProcessID <> currentid
; Check currentid against this one...
againstid = Process32 ()\th32ProcessID
againstparent = Process32 ()\th32ParentProcessID
; If 'currentid' is parent of this process...
If currentid = againstparent
OpenTreeGadgetNode (gadget)
proc$ = PeekS (@Process32 ()\szExeFile)
Debug "--------> " + proc$ + " [" + Str (Process32 ()\th32ProcessID) + "]" + " / " + " [" + Str (Process32 ()\th32ParentProcessID) + "]"
AddGadgetItem (gadget, -1, PeekS (@Process32 ()\szExeFile))
current = ListIndex (Process32 ())
CompareProcs (gadget, againstid, proc$)
SelectElement (Process32 (), current)
DeleteElement (Process32 ())
CloseTreeGadgetNode (gadget)
EndIf
EndIf
Wend
EndProcedure
; Add processes to Process32 () list...
If OpenLibrary (#PROCESS32LIB, "kernel32.dll")
snap = CallFunction (#PROCESS32LIB, "CreateToolhelp32Snapshot", #TH32CS_SNAPPROCESS, 0)
If snap
DefType.PROCESSENTRY32 Proc32
Proc32\dwSize = SizeOf (PROCESSENTRY32)
If CallFunction (#PROCESS32LIB, "Process32First", snap, @Proc32)
AddElement (Process32 ())
CopyMemory (@Proc32, @Process32 (), SizeOf (PROCESSENTRY32))
While CallFunction (#PROCESS32LIB, "Process32Next", snap, @Proc32)
AddElement (Process32 ())
CopyMemory (@Proc32, @Process32 (), SizeOf (PROCESSENTRY32))
Wend
EndIf
CloseHandle_ (snap)
EndIf
CloseLibrary (#PROCESS32LIB)
EndIf
; Window hook, used to resize/redraw TreeGadget when window is resized...
Procedure WinHook (WindowID, Message, wParam, lParam)
If Message = #WM_PAINT
ResizeGadget (0, 0, 0, WindowWidth (), WindowHeight ())
RedrawWindow_ (GadgetID (0), #NULL, #NULL, #RDW_INVALIDATE)
EndIf
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
; GUI...
OpenWindow (0, 320, 200, 320, 400, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget, "Process list...")
CreateGadgetList (WindowID ())
TreeGadget (0, 0, 0, WindowWidth (), WindowHeight ())
SetWindowCallback (@WinHook ())
OpenTreeGadgetNode (0)
; Add processes to TreeGadget...
ResetList (Process32 ())
While NextElement (Process32 ())
AddGadgetItem (0, -1, PeekS (@Process32 ()\szExeFile))
current = ListIndex (Process32 ())
CompareProcs (0, Process32 ()\th32ProcessID, PeekS (@Process32 ()\szExeFile))
SelectElement (Process32 (), current)
Wend
Repeat
Until WaitWindowEvent () = #PB_Event_CloseWindow
End
Je te propose un code unique pour les windows 9x et NT
http://purebasic.hmt-forum.com/viewtopic.php?t=3828
Dri
http://purebasic.hmt-forum.com/viewtopic.php?t=3828
Dri

T'as raison, Dri.Dr. Dri a écrit :Je te propose un code unique pour les windows 9x et NT
http://purebasic.hmt-forum.com/viewtopic.php?t=3828
Dri
En plus, ça fait moins d'une semaine que tu as posté ce code, j'aurais dû y penser !
Surtout qu'en plus, je l'ai essayé plusieurs fois

Ca a au moins le mérite de démontrer qu'il suffit de regarder un peu dans le forum avant de poser une question !.
Bien souvent, les réponses y ont déjà été postées.

Voilà pourquoi j'ai hesiter avant de poster car je savais qu'il y aurai des reflexion,
je suis nouveau inscrit sur ceux forum mais je le parcours depuis un certain temp et rare sont les poste ou il n'y a pas de critique en vers ceux qui pose une question.
le gros de la documentation sur le purebasic et en anglais, on est pas tous anglais faut pas cracher sur ceux qui cherche a employé ceux langage car sa permet son essort.
Je tente de l'apprendre a fond car il tourne aussi sous linux et a beaucoup d'avantage,
a force on retournera sous les langages compliqué mais avec une communauté active et respectueuse si des personne continue a casser du debutant.
je suis sous linux depuis longtemp en pariculier debian il n'aurait jamais pu aller aussi vite si il passer leur temp a se tirer dessus. Voilà a l'avenir je m'abstiendrait de poser une question mais je te remercie quand meme CHRIS.
je suis nouveau inscrit sur ceux forum mais je le parcours depuis un certain temp et rare sont les poste ou il n'y a pas de critique en vers ceux qui pose une question.
le gros de la documentation sur le purebasic et en anglais, on est pas tous anglais faut pas cracher sur ceux qui cherche a employé ceux langage car sa permet son essort.
Je tente de l'apprendre a fond car il tourne aussi sous linux et a beaucoup d'avantage,
a force on retournera sous les langages compliqué mais avec une communauté active et respectueuse si des personne continue a casser du debutant.
je suis sous linux depuis longtemp en pariculier debian il n'aurait jamais pu aller aussi vite si il passer leur temp a se tirer dessus. Voilà a l'avenir je m'abstiendrait de poser une question mais je te remercie quand meme CHRIS.
Avec l'esperance de creer un trés bon module pour les echecs.
oui cela existe surement , mais dans tout les cas ce sont des critiques constructives, et souvent les nouveaux oublient le bouton "rechercher" !Kasp9arov a écrit :Voilà pourquoi j'ai hesiter avant de poster car je savais qu'il y aurai des reflexion,
je suis nouveau inscrit sur ceux forum mais je le parcours depuis un certain temp et rare sont les poste ou il n'y a pas de critique en vers ceux qui pose une question.

lorsque tu dit "rare sont les poste ou il n'y a pas de critique en vers ceux qui pose une question " , je trouve que tu exagere , sur le forum du Dark basic , je te l'accorde , mais ici, je te met au defi de me faire une liste de lien corroborant tes dires ", sans remonter jusqu'a 3 ans en arriere bien sur .....
heu! , j'allucine ou la doc française existe !???Kasp9arov a écrit : le gros de la documentation sur le purebasic et en anglais, on est pas tous anglais faut pas cracher sur ceux qui cherche a employé ceux langage car sa permet son essort.

Kasp9arov a écrit : Je tente de l'apprendre a fond car il tourne aussi sous linux et a beaucoup d'avantage,
a force on retournera sous les langages compliqué mais avec une communauté active et respectueuse si des personne continue a casser du debutant.
cela n'a jamais ete le cas ici ! sauf , si le debutant est un provocateur, ou un imbecile qui ne tiens pas compte des remarques contructives des intervenants de ce forum !
Kasp9arov a écrit : je suis sous linux depuis longtemp en pariculier debian il n'aurait jamais pu aller aussi vite si il passer leur temp a se tirer dessus. Voilà a l'avenir je m'abstiendrait de poser une question mais je te remercie quand meme CHRIS.
encore une fois tu nous fait passer (tous dans le meme sac) pour des bourrains qui cassons du debutant a tour de bras , c'est une curieuse façon de remercier ceux qui ont repondu a ta question !
d'autre part avant de critiquer faut effectivement "connaitre" les intervenants de ce forum , pour la plupart ont se cotoie depuis plusieurs années , et beaucoup de "nouveaux" ont été parfaitement integré
gadjet35,Ar-S,Dare2,scaraber,bluegrace,CameleonTH ,jerexgrz,tonton
Cpl.Bator,flaith,Morsula,bebou007,Frenchy Pilou,bernard13
juste pour citer les plus" intervenant" des plus recents inscrits
et pour parler de bernard13 , qui aurai bien plus de raison de se plaindre du fait que nous l'avons bien "baché" que toi , il en est pas mort et il en a quand meme surement tiré quelque chose de positif , la preuve il est toujour parmis nous !! (et je te parle pas de Garzul

donc voila , bien sur tu peux citer "Remy Vincent"
mais la cela releve plus de la psychiatrie que d'un mauvaise acceuil de notre part !
je ne pense pas que tu aies reellement suivi ce forum comme tu le pretends , car sinon tu ne pourrai pas dire ça ! .....
voila c'est mon avis !

Ton avis Dobro je le respecte mais le sens de ceux que j'ai ecrit n'est pas a l'encontre de tous ceux qui sont sur le forum, d'ailleur je remercie quand on m'apporte de l'aide, j'ai viser une personne en particulier.
Puis oui je suis le forum depuis un certain temp, et oui je maintient que sur beaucoup de poste les reflexions ne font pas progresser.
Si on avertit la personne une ou deux fois et qu'elle persiste là je comprend la reaction, mais si on casse une personne qui passe des nuit a programmer et qui ne pense pas forcemment a utiliser comme tu dit le bouton rechercher alors c'est pas normal en tous ça ecoeur.
Enfin maintenant je suppose que je serait mal vu de ta part dobro j'en suis désolé mais je maintient ceux que j'ai dit plus haut.
Puis oui je suis le forum depuis un certain temp, et oui je maintient que sur beaucoup de poste les reflexions ne font pas progresser.
Si on avertit la personne une ou deux fois et qu'elle persiste là je comprend la reaction, mais si on casse une personne qui passe des nuit a programmer et qui ne pense pas forcemment a utiliser comme tu dit le bouton rechercher alors c'est pas normal en tous ça ecoeur.
Enfin maintenant je suppose que je serait mal vu de ta part dobro j'en suis désolé mais je maintient ceux que j'ai dit plus haut.
Avec l'esperance de creer un trés bon module pour les echecs.
en fait j'ai beau relire ce topic , je vois pas ou quelqu'un t'a "agressé "Enfin maintenant je suppose que je serait mal vu de ta part dobro

Dri t'a donné un lien suplementaire ,
Chris a parlé pour lui meme , lorsqu'il dit, qu'il n'a pas pensé a utiliser le bouton recherché
Gillou a fait ce qu'il a put pour te rendre service malgres mon "colorer"
qui lui a mis des battons dans les roues ...

franchement je vois pas !

quand a la citation ci-dessus ,
encore une fois tu pres-suppose que je vais penser d'une certaine façon
comme tu pres-suppose que l'on casse du debutant !

si tu connaissai le forum depuis longtemps, tu saurais que si
j'ai quelqu'un dans le nez , il n'y a pas d'ambiguitée ! , je suis direct Cash ! ..
or je ne t'ai rien dit d'agressif non ? .....

voila , je te conseil d'aller chercher un croissant , un bon café , de te reposer un peu

et reviens nous voir , apres , je suis sur que tu trouvera un changement !
