buenas, pues estoy como loco buscando un keylogger en visual basic y creo que por fin he encontrado uno, incluso con su código fuente.
resulta que estaba todo perfecto pero cuando lo depuré me saltó este error y no sé de que se trata. aquí os dejo una imagen, por cierto, es un keylogger que envia logs al email.
http://www.imageshost.eu/image/Ypk
espero recibir ayuda y gracias de antemano!
Qué tipo de variable es result?
PD: .NET es un asco.
la variable es Dim result As Integer
se ve mu poco código, pero supongo que declaraste la función " GetAsyncKeyState " porque sino no hay forma que la use así nomás.
Ah y tiene más pinta de .net que de vb, tendría que ir en otro foro.
@Miseryk
Decir ".Net es un asco" no ayuda a nadie ni aporta nada, evitemos ese tipo de comentarios superficiales y sin argumentar, por no decir que es un comentario completamente falso y probablemente sea debido a una ignorancia sobre la plataforma .Net, ya que si ese es tu modo de defender un lenguaje inferior y obsoleto cómo vb6 pues... no lo comprendo, pero tampoco pretendo comprenderlo por que el comentario estuvo fuera de lugar.
@iDDoS
Trata siempre de publicar el código para un mejor análisis, aparte de la imagen que compartiste.
Una excepción del tipo PinvokeStackImbalance sucede cuando, después de una llamada a la plataforma de invocación (P/Invoking), el CLR detecta que la profundidad de la pila no coincide con la profundidad de la pila esperada, esto suele indicar que la firma de tus definiciones P/Invoke son incorrectas.
Yo lo primero que te recomendaría es deshacerte de ese código fuente, por que viendo la imagen el autor utiliza muy malas prácticas por todos lados y no me quiero imaginar el resto del código, así no vas a aprender bien, pero bueno, te explico, para intentar solucionar (algunos de) los fallos lo primero que debes hacer es revisar las definiciones P/Invoke que haya en ese código fuente y comprobar que las firmas de cada miembro sean correctas, empezando por la firma de la función GetAsyncKeyState, ajústala a la firma oficial:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms646293%28v=vs.85%29.aspx
<DllImport("user32.dll", PreserveSig:=True, SetLastError:=False, CharSet:=CharSet.Auto)>
Private Shared Function GetAsyncKeyState(ByVal vKey As Keys) As Short
End Function
Reemplaza la función "GetShift" de ese código, por esta otra (es practicamente lo mismo):
Public Function IsShiftPressed() As Boolean
Return Convert.ToBoolean(GetAsyncKeyState(Keys.ShiftKey))
End Function
Te muestro un ejemplo (incompleto) de iteración:
Dim result As Short = 0
For Each key As Keys In [Enum].GetValues(GetType(Keys))
result = GetAsyncKeyState(key)
Debug.WriteLine(String.Format("Key: {0}; Result: {1}", key.ToString, result))
Next key
Saludos