incomprehension avec les threads

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: incomprehension avec les threads

Message par dayvid »

Moi ça me fait la même chose avec mon programme de génération de code Data, même erreur
ça dois venir des libs a tous les coup !

Je ne peut pas activer la gestion des thread !
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: incomprehension avec les threads

Message par Le Soldat Inconnu »

@Golfy :

Je ne peux pas compiler ton programme
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Golfy
Messages : 423
Inscription : mer. 25/août/2004 15:14
Localisation : Grenoble
Contact :

Re: incomprehension avec les threads

Message par Golfy »

Le Soldat Inconnu a écrit :@Golfy :

Je ne peux pas compiler ton programme
En mode Thread, moi non-plus... :(
http://golfy.free.fr/Velbus/Velbus.zip

Je tombe sur une erreur POLINK '_PB_StringBasePosition' mais je ne sais pas où trouver l'origine :( :( :(
Purebasic 5.30 full sous Windows XP (x86) et Win7 (64 bits), Linux Debian. Orientation réseaux, domotique
http://golfy.olympe.in/Teo-Tea/
Golfy
Messages : 423
Inscription : mer. 25/août/2004 15:14
Localisation : Grenoble
Contact :

Re: incomprehension avec les threads

Message par Golfy »

Golfy a écrit :
Le Soldat Inconnu a écrit :@Golfy :

Je ne peux pas compiler ton programme
En mode Thread, moi non-plus... :(
http://golfy.free.fr/Velbus/Velbus.zip

Je tombe sur une erreur POLINK '_PB_StringBasePosition' mais je ne sais pas où trouver l'origine :( :( :(
J'ai trouvé la LIB qui me gêne : DroopyLib avec les fonctions sur les processus (SearchProcess et KillProcess)
Purebasic 5.30 full sous Windows XP (x86) et Win7 (64 bits), Linux Debian. Orientation réseaux, domotique
http://golfy.olympe.in/Teo-Tea/
Golfy
Messages : 423
Inscription : mer. 25/août/2004 15:14
Localisation : Grenoble
Contact :

Re: incomprehension avec les threads

Message par Golfy »

Golfy a écrit :
Le Soldat Inconnu a écrit :@Golfy :

Je ne peux pas compiler ton programme
En mode Thread, moi non-plus... :(
http://golfy.free.fr/Velbus/Velbus.zip

Je tombe sur une erreur POLINK '_PB_StringBasePosition' mais je ne sais pas où trouver l'origine :( :( :(
J'ai trouvé la LIB qui me gêne : DroopyLib avec les fonctions sur les processus (SearchProcess et KillProcess)
http://www.purebasic.fr/french/viewtopic.php?p=72529

si quelqu'un peut m'indiquer comment 'killer' une application sans utiliser la lib de Droopy...

8)
Purebasic 5.30 full sous Windows XP (x86) et Win7 (64 bits), Linux Debian. Orientation réseaux, domotique
http://golfy.olympe.in/Teo-Tea/
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: incomprehension avec les threads

Message par Le Soldat Inconnu »

comme cela

Code : Tout sélectionner

; Auteur : Le Soldat Inconnu
; Version de PB : 4

; Explication du programme :
; Ce code permet de fermer un programme à partir du nom de la fenêtre

Procedure.l FermeProgramme(Nom.s)
	; nom = nom de la fenêtre en cours
	; valeur de retour de la procedure :
	; >  1 = OK
	; >  0 = Erreur d'envoi du message d'arrêt au logiciel
	; > -1 = Le logiciel n'est pas en cours d'exécution
	
	resultat = 1
	winHwnd = FindWindow_(vbNullString, Nom) ; Recherche de l'identifiant de la fenêtre
	If winHwnd <> 0
		If PostMessage_(winHwnd, #WM_CLOSE, 0, 0) = 0 ; Envoi d'un message de fermeture à la fenêtre
			resultat = 0
		EndIf
	Else
		resultat = -1
	EndIf
	ProcedureReturn
EndProcedure

RunProgram("Calc.exe")

Delay(3000)

FermeProgramme("Calculatrice")
; ProductName=%exe%
; ProductVersion=%date%
; CompanyName=LSI
; FileVersion=%date%
; InternalName=%exe%
; LegalCopyright=LSI
; OriginalFilename=%source%
; Web=http://www.lsi-dev.com
Pour retrouver le nom du programme en fonction de l'exe lancer, il faut utiliser ceci :

Code : Tout sélectionner

; Auteur : Le Soldat Inconnu
; Version de PB : 4.5

; Explication du programme :
; Trouver le nom du programme à partir de l'ID d'une fenêtre

Procedure.s ProgramfileNameFromWindow(WindowID)
	Protected ProcessID, Process32, Snapshot, ProcessEntry.PROCESSENTRY32, ProgramfileName.s
	GetWindowThreadProcessId_(WindowID, @ProcessID)
	
	Process32 = OpenLibrary(#PB_Any, "kernel32.dll")
	If Process32
		Snapshot = CallFunction(Process32, "CreateToolhelp32Snapshot", #TH32CS_SNAPPROCESS, 0)
		If Snapshot
			CompilerIf #PB_Compiler_Unicode
				ProcessEntry\dwSize = SizeOf(PROCESSENTRY32)
				If CallFunction(Process32, "Process32FirstW", Snapshot, @ProcessEntry)
					Repeat
						If ProcessID = ProcessEntry\th32ProcessID
							ProgramfileName = PeekS(@ProcessEntry\szExeFile)
							Break
						EndIf
					Until CallFunction(Process32, "Process32NextW", Snapshot, @ProcessEntry) = 0
				EndIf
			CompilerElse
				ProcessEntry\dwSize = SizeOf(PROCESSENTRY32)
				If CallFunction(Process32, "Process32First", Snapshot, @ProcessEntry)
					Repeat
						If ProcessID = ProcessEntry\th32ProcessID
							ProgramfileName = PeekS(@ProcessEntry\szExeFile)
							Break
						EndIf
					Until CallFunction(Process32, "Process32Next", Snapshot, @ProcessEntry) = 0
				EndIf
			CompilerEndIf
			CloseHandle_(Snapshot)
		EndIf
		CloseLibrary(Process32)
	EndIf
	ProcedureReturn ProgramfileName
EndProcedure






; Création de la fenêtre et de la GadgetList
If OpenWindow(0, 0, 0, 300, 30, "Test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget) = 0 Or CreateGadgetList(WindowID(0)) = 0
	End
EndIf

StickyWindow(0, 1)

TextGadget(0, 5, 5, 290, 20, "")

AddWindowTimer(0, 1, 100)

Repeat
	Event = WaitWindowEvent()
	
	Select Event
		Case #PB_Event_Timer
			Select EventTimer()
				Case 1
					Fenetre = WindowFromPoint_(DesktopMouseX() | DesktopMouseY() << 32)
					Texte.s = ProgramfileNameFromWindow(Fenetre)
					SetGadgetText(0, Texte)
			EndSelect
			
		Case #PB_Event_Gadget
			Select EventGadget() ; Gadgets
					
			EndSelect
	EndSelect
	
Until Event = #PB_Event_CloseWindow

KillTimer_(WindowID(0), 1)

End

donc au final, tu scannes toutes les fenêtres ouvertes avec ce code :

Code : Tout sélectionner

Procedure Fenetres_Ouvertes()
	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
			GetWindowThreadProcessId_(hWnd, @pid)
			Debug pid
			Debug hWnd
			Txt.s = Space(256)
			GetWindowText_(hWnd, Txt, 256)
			If Txt <> ""
				Debug Txt
			Else
				Debug "Sans nom"
			EndIf
			Debug ""
			; EndIf
		EndIf
		hWnd = GetWindow_(hWnd, #GW_HWNDNEXT)
	Wend
	
	; EnumChildWindows_(FindWindow_(0, "Program manager"), @Fenetre_LieeAuBureau(), 0)
	
EndProcedure

Fenetres_Ouvertes()
pour chaque fenêtre, tu recupères le nom de l'exe avec le second code.
Si le nom de l'exe est celui recherché, tu demandes au programme de se fermer avec le premier code :mrgreen: tout ça tout ça. sauf si le premier code te suffit
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: incomprehension avec les threads

Message par dayvid »

Je retiens mes mots mais tu sais que t'es un véritable génie toi LSI :D
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Golfy
Messages : 423
Inscription : mer. 25/août/2004 15:14
Localisation : Grenoble
Contact :

Re: incomprehension avec les threads

Message par Golfy »

*oufff* ok, ça devrait m'occuper un peu là ;)

MERCI LSI
Purebasic 5.30 full sous Windows XP (x86) et Win7 (64 bits), Linux Debian. Orientation réseaux, domotique
http://golfy.olympe.in/Teo-Tea/
Répondre