Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: SrTrp en 26 Abril 2020, 06:23 am



Título: El pression key no me funciona ya C#
Publicado por: SrTrp en 26 Abril 2020, 06:23 am
Bueno hace tiempo tenia sin programar en C# pero usaba mucho la funciones de GetAsyncKeyState pero ahora que estoy de vuelta pruebo mis proyectos pasados y nuevos que creo y no le sirven y en vb.net si me van bien el getAsynKeyState, lo uso así:
Código
  1. //declaracion
  2. [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
  3.        public static extern void mouse_event(int dwflags, int dx, int dy, int cbuttons, int dwExtraInfo);
  4.        [DllImport("user32.dll", CharSet = CharSet.Auto)]
  5.        public static extern bool GetCursorPos(out Point lpPoint);
  6.        [DllImport("user32.dll")]
  7.        public static extern int GetAsyncKeyState(Keys vkeys);
  8.  
  9.  
  10. //metodo
  11.  
  12. if (GetAsyncKeyState(Keys.F10) == -32767)
  13.            {
  14. ///funcion
  15.            }
  16.            if (GetAsyncKeyState(Keys.F11) == -32767)
  17.            {
  18.               //funcion
  19.            }
  20.  


Título: Re: El pression key no me funciona ya C#
Publicado por: @XSStringManolo en 26 Abril 2020, 14:15 pm
El número que usas -32767 es como la versión int del binario hardcodeada. Si se cambia el tipo de encoding de bits de la arquitectura creo que tu código deja de funcionar. Véase a referencia LSB y MSB.

Por otro lado se hace un mal uso del retorno de la llamada ya que retorna bytes no un int.

if (GetAsyncKeyState(VK_F10) & 0x8000) {
 //funcion
}

Aquí la docu: https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getasynckeystate
Te vienen teclas también.

En C# tienes también getkeystates
 https://docs.microsoft.com/en-us/dotnet/api/system.windows.input.keyboard.getkeystates?redirectedfrom=MSDN&view=netcore-3.1#System_Windows_Input_Keyboard_GetKeyStates_System_Windows_Input_Key_


Título: Re: El pression key no me funciona ya C#
Publicado por: SrTrp en 27 Abril 2020, 22:04 pm
El número que usas -32767 es como la versión int del binario hardcodeada. Si se cambia el tipo de encoding de bits de la arquitectura creo que tu código deja de funcionar. Véase a referencia LSB y MSB.

Por otro lado se hace un mal uso del retorno de la llamada ya que retorna bytes no un int.

if (GetAsyncKeyState(VK_F10) & 0x8000) {
 //funcion
}

Aquí la docu: https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getasynckeystate
Te vienen teclas también.

En C# tienes también getkeystates
 https://docs.microsoft.com/en-us/dotnet/api/system.windows.input.keyboard.getkeystates?redirectedfrom=MSDN&view=netcore-3.1#System_Windows_Input_Keyboard_GetKeyStates_System_Windows_Input_Key_
Muchisimas gracias! me sirvio