[OK] Bizarre!!.

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
celtic88
Messages : 309
Inscription : sam. 12/sept./2015 14:31
Localisation : Alger

[OK] Bizarre!!.

Message par celtic88 »

Code : Tout sélectionner

tpoint.POINT
Repeat
  Delay(1000)
  Debug GetActiveWindow_()
  Debug GetFocus_()
  GetCursorPos_(tpoint)
  Debug WindowFromPoint_(tpoint)
ForEver
Slt :D ,
quand je fais un appel à ces api la ,le code de retour est toujour zéro.?.....
merci de me répondre :)

Image
.....i Love Pb :)
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: Bizarre!!.

Message 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)
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: Bizarre!!.

Message 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
Avatar de l’utilisateur
celtic88
Messages : 309
Inscription : sam. 12/sept./2015 14:31
Localisation : Alger

Re: Bizarre!!.

Message par celtic88 »

ahhh oui c est vrais 8O ,,,merci pour ces éclaircissements

"ça fait longtemps que j 'ai pas programmé"
.....i Love Pb :)
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: [OK] Bizarre!!.

Message par Ollivier »

Il y a ce code aussi.
Répondre