Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Elemental Code en 6 Septiembre 2012, 20:13 pm



Título: Problema que no comprendo con la api GetPixel
Publicado por: Elemental Code en 6 Septiembre 2012, 20:13 pm
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? :'(


Título: Re: Problema que no comprendo con la api GetPixel
Publicado por: MCKSys Argentina en 6 Septiembre 2012, 22:08 pm
Y falla en el call de la API o despues?


Título: Re: Problema que no comprendo con la api GetPixel
Publicado por: Elemental Code en 6 Septiembre 2012, 22:38 pm
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)


Título: Re: Problema que no comprendo con la api GetPixel
Publicado por: MCKSys Argentina en 6 Septiembre 2012, 22:56 pm
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...


Título: Re: Problema que no comprendo con la api GetPixel
Publicado por: Elemental Code en 6 Septiembre 2012, 23:06 pm
Código
  1. Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
  2. Private Declare Function GetPixel Lib "GDI32" (ByVal hDC As Long, ByVal X As Long, ByVal Y As Long) As Long
  3. Private Declare Function GetWindowDC Lib "user32" (ByVal hwnd As Long) As Long
  4. Dim window As Long
  5. Dim dc As Long
  6. Dim color As Long
  7.  
  8. Private Sub Form_Load()
  9.    window = FindWindow("ThunderRT6FormDC", vbNullString)
  10.    MsgBox window
  11.    dc = GetWindowDC(window)
  12.    MsgBox dc
  13.    color = GetPixel(dc, 600, 500)
  14.    MsgBox color
  15. End Sub


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


Título: Re: Problema que no comprendo con la api GetPixel
Publicado por: MCKSys Argentina en 6 Septiembre 2012, 23:24 pm
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...


Título: Re: Problema que no comprendo con la api GetPixel
Publicado por: Elemental Code en 6 Septiembre 2012, 23:50 pm
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


Título: Re: Problema que no comprendo con la api GetPixel
Publicado por: Dessa en 7 Septiembre 2012, 00:17 am

Tenia un conflicto en las clases.



Código:

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