Page 1 sur 1

[R] Probleme PixelGetColor DirectX

Posté : mar. 18 févr. 2014 16:32
par Oregon
Bonjour,

Je n'arrive pas a capturer un screenshot ou tout simplement la couleur d'un pixel dans une application utilisant DirectX....

J'ai essayer (je vous donne pas tout le code, juste le nécessaire) :

Code : Tout sélectionner

#include <MsgBoxConstants.au3>
#include <_PixelGetColor.au3>

Local $hDll = DllOpen("gdi32.dll")
Local $vDC = _PixelGetColor_CreateDC($hDll)

$vRegion = _PixelGetColor_CaptureRegion($vDC, 0,0,@DesktopWidth,@DesktopHeight,$hDll)

$mPos = MouseGetPos()
$sColor = _PixelGetColor_GetPixel($vDC, $mPos[0],$mPos[1], $hDll)

MsgBox($MB_SYSTEMMODAL, "Title", $sColor & "--" & $mPos[0] & "--" & $mPos[1])

_PixelGetColor_ReleaseRegion($vRegion)
_PixelGetColor_ReleaseDC($vDC,$hDll)
DllClose($hDll)
 
et version normal :

Code : Tout sélectionner

#include <MsgBoxConstants.au3>

Local $iColor = PixelGetColor(10, 100)

MsgBox($MB_SYSTEMMODAL, "", "The hex color is: " & Hex($iColor, 6))
 
Le 1er code ne fonctionne pas du tout :s... Et le 2eme code (le normal) lui me retourne une couleur, mais celle du bureau... et non pas de d'application DirectX...

Avez-vous une idée, ou un exemple de code ?

En vous remerciant.

Re: [..] Probleme PixelGetColor DirectX

Posté : mar. 18 févr. 2014 20:27
par mikell
Tu as essayé de définir le paramètre hwnd dans PixelGetColor ?
" hwnd [optional] Window handle to be used. Default is the desktop window. "

Re: [..] Probleme PixelGetColor DirectX

Posté : mar. 18 févr. 2014 20:37
par FireFox
Bonjour,

Hé bien malheureusement ce n'est pas possible :(

Sans me documenter je ne pourrais te dire précisément pourquoi mais ce qui est sûr c'est que tu peux rien faire sur du DirectX avec des fonctions Windows (les fonctions autoit sont principalement des appels à ces fonctions).

Ce que tu peux faire c'est de prendre une capture d'écran puis de lire le bmp en mémoire et aller chercher la couleur du pixel mais ça serait assez lent...

Cdlt, FireFox.

Re: [..] Probleme PixelGetColor DirectX

Posté : mer. 19 févr. 2014 09:18
par Oregon
J'avais trouvé hier :) c’était tout con... il suffit de désactiver l'aero de Windows ! (de temps en temps faut pas chercher à comprendre....)