comment récupérer la couleur d´un pixel sous windows XP - ASM - Programmation
Marsh Posté le 04-05-2005 à 15:29:09
Commence parfaire un truc qui marche en C avant de sortir l'assembleur.
Non on peut pas lire directement la mémoire. Mais tu peux récupérer sans problème ce qui est affiché sur le bureau. Voir la manipulation des bitmaps (GetDC( GetDesktopWindow() ), CreateCompatibleDC, CreateCompatibleBitmap, BitBlt...)
Citation : remote control en ""LIFE"" |
c'est pas en lailleveux plutôt ?
Marsh Posté le 04-05-2005 à 15:38:58
salut,
J´ai déjà essayé vers cette solution. Pas en C mais avec VB (getPixel de la lib gdi32). Pour une résolution de 640 X 480, je peux faire au mieux, 10 ballayages par minutes, et le PC ram tant qu´il peut. Maitenant si tu voyais une autre solution plus performant, je suis preneuse.
Voila ce que j ai tenté qui fonctionne bien mais le PC RAM tant qu il peut avec 512 MB RAM et 2.6 ghz
Private Sub Command1_Click()
MakeTopMost (Me.hdc)
update = True
Dim sx As Integer
Dim sy As Integer
Dim tPOS As POINTAPI
Dim sTmp As String
Dim lColor As Long
Dim lDC As Long
lDC = GetWindowDC(0)
Dim hform As Long
hform = Me.hdc
While (update)
sx = sx + 1
If (sx > 640) Then
sx = 0
sy = sy + 1
End If
If (sy > 480) Then
sy = 0
End If
lColor = GetPixel(lDC, sx, sy)
Rem SetPixel hform, sx, sy, vbWhite
Rem SetPixel hform, sx + 1, sy + 1, vbBlack
DoEvents
Wend
End Sub
Marsh Posté le 04-05-2005 à 15:42:35
tu crois que ce serait plus performant en C sinon tant qu on y est ca va me permettre de réouvrir tous les vieux syllabus de mes cours qui pourrissent dans le grenier C c est y a bien longtem ca !!! Enfin entre deux j ai fait du développement COBOL la terre est bien basse pour moi
Marsh Posté le 04-05-2005 à 15:55:40
En C ce sera plus performant, mais pas énormément certainement.
Ce qui est lent c'est GetPixel. Faut récupérer directement un tableau de bits via GetDIBits.
http://eric.aling.tripod.com/PB/tips/pbtip35.htm
http://www.vb-helper.com/howto_getdibits.html
Marsh Posté le 04-05-2005 à 15:13:34
Bonjour,
J´ai développé en assembleur mirco sous DOS y´a bien longtemps. Je dois parvenir à balayer l´écran le plus rapidement possible sous windows XP, pixel par pixel (reproduire l´écran d´un Pc sur une autre comme une application de remote control en ""LIFE"" ). Existe-il une instruction ou est-il possible de lire directement dans la mémoire vidéo à partir de l´assembleur (le but étant la vitesse). Je ne sais pas si assembleur est la bonne solution, mais je suis à la recherche de toute solution possible.
Merci,
thebiche