Page 1 sur 1
[OK] Bizarre!!.
Publié : jeu. 03/nov./2016 21:08
par celtic88
Code : Tout sélectionner
tpoint.POINT
Repeat
Delay(1000)
Debug GetActiveWindow_()
Debug GetFocus_()
GetCursorPos_(tpoint)
Debug WindowFromPoint_(tpoint)
ForEver
Slt

,
quand je fais un appel à ces api la ,le code de retour est toujour zéro.?.....
merci de me répondre

Re: Bizarre!!.
Publié : jeu. 03/nov./2016 22:43
par nico
Pour les deux premiers debug, c'est apparemment normal, tu n'auras des valeurs que pour tes propres controle, car ils font référence au thead de ton propre programme.
pour le troisième debug il faut faire:
WindowFromPoint_(tpoint\x + tpoint\y<<32)
Si je ne dis pas de bêtise, l'explication est la suivante, pour certaines api window, la structure comme argument doit être passé par valeur et non par adresse or avec PureBasic toutes les structures sont passées par adresses, voilà pourquoi. (Merci a Denis qui m'avait expliqué cela a l'époque).
Prend getforegroundwindow a la place de getactivewindow:
Code : Tout sélectionner
tpoint.POINT
Repeat
Delay(1000)
Debug "------------------"
Debug GetForegroundWindow_()
GetCursorPos_(tpoint)
Debug WindowFromPoint_(tpoint\x + tpoint\y<<32)
ForEver
Pour avoir des infos sur le controle qui possède le focus, tu dois passer par l'API GetGUIThreadInfo (je n'ai pas le temps tout de suite de te faire un exemple)
Re: Bizarre!!.
Publié : jeu. 03/nov./2016 23:14
par nico
J'ai pris le temps pour le faire finalement:
Code : Tout sélectionner
lpgui.GUITHREADINFO
tpoint.POINT
lpdwProcessId.l
ForegroundWindow.i
idThread.l
handlepoint.i
Repeat
Delay(3000)
Debug "------------------"
Debug "------------------"
ForegroundWindow = GetForegroundWindow_()
Debug "Handle de la fenêtre activée (premier plan)"
Debug ForegroundWindow
GetCursorPos_(tpoint)
handlepoint = WindowFromPoint_(tpoint\x + tpoint\y<<32)
Debug "Handle sous le curseur (Fenêtre ou controle)"
Debug handlepoint
idThread = GetWindowThreadProcessId_(handlepoint, @lpdwProcessId)
lpgui\cbSize=SizeOf(GUITHREADINFO)
GetGUIThreadInfo_(idThread, @lpgui.GUITHREADINFO)
Debug "Handle fenêtre active (Handle de la fenêtre si curseur sur un controle)"; si le curseur pointe sur la barre de titre alors on aura la même valeur que handlepoint
Debug lpgui\hwndActive
Debug "Handle focus (Controle ayant le focus ou fenêtre)"
Debug lpgui\hwndFocus
ForEver
Re: Bizarre!!.
Publié : ven. 04/nov./2016 11:42
par celtic88
ahhh oui c est vrais

,,,merci pour ces éclaircissements
"ça fait longtemps que j 'ai pas programmé"
Re: [OK] Bizarre!!.
Publié : sam. 05/nov./2016 14:12
par Ollivier