@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