cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 2019
-
28 mai 2004 à 23:59
l0st3d
Messages postés205Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention13 novembre 2009
-
20 déc. 2004 à 07:13
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
l0st3d
Messages postés205Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention13 novembre 2009 20 déc. 2004 à 07:13
tss... fonctionne pas le code de OphidiaN
Tout ske sa fait cé faire planté mon vb
Nice dude!
l0st3d
Messages postés205Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention13 novembre 2009 29 mai 2004 à 07:11
Merci OphidiaN, j'ai jamais été sur allapi.net je vais aller voir sa a peut etre interessant
cs_OphidiaN
Messages postés235Date d'inscriptionmercredi 4 avril 2001StatutMembreDernière intervention 9 novembre 2007 29 mai 2004 à 02:54
Ah oui ya meme une erreur sur allapi.net, ils disent que ShellExecute renvoi le handle de l'application lancée et c faux evidemment... il renvoi 42, et ce uniquement si ya pas eu d'erreurs....
Pour en revenir au prob, en relisant ton code, tu fais quasi la meme technique, sauf que toi c un peu à l'arrache que tu fais ta boucle.... ya tout et nimporte koi ki est filtré....
cs_OphidiaN
Messages postés235Date d'inscriptionmercredi 4 avril 2001StatutMembreDernière intervention 9 novembre 2007 29 mai 2004 à 02:50
en fait t'as pas du chercher autant ke tu le dis lol :)
allapi.net, 3 min de recherche, on peut en modeler ça:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As Long, ByVal lpWindowName As Long) As Long
Private Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Function InstanceToWnd(ByVal target_pid As Long) As Long
Dim test_hwnd As Long, test_pid As Long, test_thread_id As Long
test_hwnd = FindWindow(ByVal 0&, ByVal 0&)
Do While test_hwnd <> 0
If GetParent(test_hwnd) = 0 Then
test_thread_id = GetWindowThreadProcessId(test_hwnd, test_pid)
If test_pid = target_pid Then
InstanceToWnd = test_hwnd
Exit Do
End If
End If
test_hwnd = GetWindow(test_hwnd, GW_HWNDNEXT)
Loop
End Function
ensuite le reste est tout con:
Dim Pid as long
Pid = Shell("c:\windows\notepad.exe", vbNormalFocus)
if Pid = 0 Then MsgBox "Erreur dans le lancement"
TonhWnd = InstanceToWnd(Pid)
bon j'admet t'as qd meme bien bossé si tu l'as fait tout seul....
@++
www.fbsl.net
l0st3d
Messages postés205Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention13 novembre 2009 29 mai 2004 à 02:01
Alain Proviste Possible, j'ai cherchéici pour la fonction csProcessList
cs_Alain Proviste
Messages postés908Date d'inscriptionjeudi 26 juillet 2001StatutModérateurDernière intervention 1 février 20152 29 mai 2004 à 00:31
ahaha setpapa ca me rappelle quelque chose...
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 28 mai 2004 à 23:59
C'est de la bidouille complete, utilise plutot conjointement les API CreateProcess et EnumThreadWindows ou encore Shell (vb) & EnumWindows GetWindowThreadProcessId
La au moins tu es sur de ce que tu recupere. Pour ce qui est de la forme, dans un souci de relecture je te conseillerais de ne pas changer le nom des API...
20 déc. 2004 à 07:13
Tout ske sa fait cé faire planté mon vb
Nice dude!
29 mai 2004 à 07:11
29 mai 2004 à 02:54
Pour en revenir au prob, en relisant ton code, tu fais quasi la meme technique, sauf que toi c un peu à l'arrache que tu fais ta boucle.... ya tout et nimporte koi ki est filtré....
29 mai 2004 à 02:50
allapi.net, 3 min de recherche, on peut en modeler ça:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As Long, ByVal lpWindowName As Long) As Long
Private Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Function InstanceToWnd(ByVal target_pid As Long) As Long
Dim test_hwnd As Long, test_pid As Long, test_thread_id As Long
test_hwnd = FindWindow(ByVal 0&, ByVal 0&)
Do While test_hwnd <> 0
If GetParent(test_hwnd) = 0 Then
test_thread_id = GetWindowThreadProcessId(test_hwnd, test_pid)
If test_pid = target_pid Then
InstanceToWnd = test_hwnd
Exit Do
End If
End If
test_hwnd = GetWindow(test_hwnd, GW_HWNDNEXT)
Loop
End Function
ensuite le reste est tout con:
Dim Pid as long
Pid = Shell("c:\windows\notepad.exe", vbNormalFocus)
if Pid = 0 Then MsgBox "Erreur dans le lancement"
TonhWnd = InstanceToWnd(Pid)
bon j'admet t'as qd meme bien bossé si tu l'as fait tout seul....
@++
www.fbsl.net
29 mai 2004 à 02:01
29 mai 2004 à 00:31
28 mai 2004 à 23:59
La au moins tu es sur de ce que tu recupere. Pour ce qui est de la forme, dans un souci de relecture je te conseillerais de ne pas changer le nom des API...
@+