Connaitre le hdc d'un jeux pour api getpixel

arnohoho Messages postés 77 Date d'inscription mercredi 17 septembre 2003 Statut Membre Dernière intervention 24 août 2005 - 17 avril 2005 à 19:11
arnohoho Messages postés 77 Date d'inscription mercredi 17 septembre 2003 Statut Membre Dernière intervention 24 août 2005 - 17 avril 2005 à 23:21
voila je veut utiliser l'api getpixel pour récuperer la couleur sous mon pixel sous win pas de probleme mais je veux le faire sous un jeu (diablo2) donc je cherche le moyen de récuperer le hdc (je sais pas trop c'est koi) nécessaire pour getpixel voila mon code:

Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long
Private Declare Function GetDesktopWindow Lib "user32.dll" () As Long

capcode.Caption = GetPixel(GetWindowDC(GetDesktopWindow), X.Caption, Y.Caption)
capvue.BackColor = GetPixel(GetWindowDC(GetDesktopWindow), X.Caption, Y.Caption)

-----------------------
pour les fenêtre c'est bien mais pour les jeux plien écran ça marche po
merci de votre aide

4 réponses

cs_MasterHack Messages postés 586 Date d'inscription jeudi 18 septembre 2003 Statut Membre Dernière intervention 13 février 2008 2
17 avril 2005 à 19:27
je ne sais pas si ton jeux est en mode 16 bits, mais si il est en premier plan
utilise l'api getforegroundwindow (sert a recuperer l hwnd de la fenetre en top) et puis utiliser gerwindowdc pour recuperer l'hdc


<HR>

Life is short...Learn more
Copy Rights <> Rights to Copy
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
17 avril 2005 à 21:19
Private Type POINTAPI
x As Long
y As Long
End Type


Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type


Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Declare Function GetPixel Lib "gdi32" (ByVal Hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long

Private Sub Timer1_Timer()
Dim Pt As POINTAPI
Dim hwnd As Long
Dim Hdc As Long
Dim Coul As Long
Dim R As RECT

GetCursorPos Pt
hwnd = WindowFromPoint(Pt.x, Pt.y)

GetWindowRect hwnd, R

Hdc = GetDC(hwnd)
Coul = GetPixel(Hdc, Pt.x - R.Left, Pt.y - R.Top)

Me.BackColor = Coul

End Sub

Daniel
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
17 avril 2005 à 21:22
Hum, Diablo 2, s'il n'est pas en mode fenêtre (donc s'il utilise le
mode plein écran de DirectX), je ne suis pas sûr que tu puisse passer
par GetPixel pour récupèrer la couleur du pixel !

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
0
arnohoho Messages postés 77 Date d'inscription mercredi 17 septembre 2003 Statut Membre Dernière intervention 24 août 2005
17 avril 2005 à 23:21
hello merci pour votre aide tous d'abord

alors j'ai essayé le code de Gobillot ça fait effectivement une capture (donc ça marche) mais voila ce qu'il me montre la capture est une couleur différente selon la capture de ce que l'on voit sous diablo pas très grave (pas besoin des vraie couleurs juste qui détecte la différence de couleur donc
gros merci à vous les gars qui me permet d'avancer dans mon apprentissage par moi même
bonne prog à tous

arnohoho vous salue

(les mots en gras ça permet de mieux marquer l'esprit du lecteur ne pas en abusser)
0
Rejoignez-nous