Problema que no comprendo con la api GetPixel

Iniciado por Elemental Code, 6 Septiembre 2012, 20:13 PM

0 Miembros y 1 Visitante están viendo este tema.

Elemental Code

odio a esa api.
Asi nomas les digo.

Tengo el hdc.
Uso getpixel DESDE el IDE y funciona de 10.
Lo compilo y me da error 308

Alguien tiene idea de que corno me pasa?

Consigo el hwnd con findwindow
consigo el hdc con getdc o con getwindowdc
y de ahi hago getpixel.


en que puedo estar fallando? :'(

I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas

MCKSys Argentina

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


Elemental Code

#2
normalmente la api tira -1 como resultado a pesar que deberia tirar rojo.
Sino directamente recibo un error 308 cuando llega a la llamada de la api.

Se pone peor. pongo el getpixel COPIADO de otro proyecto que tengo y tampoco anda y en el otro proyecto si.
Probe de compilar a nativo y a p-code y es lo mismo (por las dudas)

I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas

MCKSys Argentina

Podes poner un link para bajar el EXE? (No digo todo el EXE, sino uno que muestre el error)

Ah! Y el pedazo de codigo que genera el error.

Digo, asi se podria reproducir el error...
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


Elemental Code

Código (vb) [Seleccionar]
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) 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 GetWindowDC Lib "user32" (ByVal hwnd As Long) As Long
Dim window As Long
Dim dc As Long
Dim color As Long

Private Sub Form_Load()
    window = FindWindow("ThunderRT6FormDC", vbNullString)
    MsgBox window
    dc = GetWindowDC(window)
    MsgBox dc
    color = GetPixel(dc, 600, 500)
    MsgBox color
End Sub



Empeoro, ahora no anda ni de la IDE.
Puede ser que este funcionando mal porque estoy en windwos 7? :S

I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas

MCKSys Argentina

Probe ese mismo codigo en un VM con XP SP3 y en el IDE no encuentra la ventana (pero no falla).
Como exe si encuentra la ventana, pero como dijiste, GetPixel devuelve -1.

Ahora, en ningun caso tira el error...
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


Elemental Code

#6
Acabo de hacer un descubrimiento BRUTAL :D

"ThunderRT6FormDC"

Es el generico para un exe de vb6.0

El programa al que yo intento afectar es de vb6.0 y el mio tambien.
TENGO UN SUPER CONFLICTO RE PULENTA :D

Tengo que ser mas especifico :D

Vuelvo despues y les cuento ;)




SANTO REMEDIO :P
Tenia un conflicto en las clases.
Correji eso y sali andando en moto :D

I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas

Dessa

Cita de: Elemental Code en  6 Septiembre 2012, 23:50 PM

Tenia un conflicto en las clases.





Option Explicit

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Dim window As Long

Private Sub Form_Load()

If App.LogMode = 0 Then
    window = FindWindow("ThunderFormDC", vbNullString) ' IDE
ElseIf App.LogMode = 1 Then
    window = FindWindow("ThunderRT6FormDC", vbNullString) ' EXE
End If
   
MsgBox window, , "LogMode " & App.LogMode

End Sub




Adrian Desanti