Red de conocimiento informático - Problemas con los teléfonos móviles - Código fuente de la herramienta Skey

Código fuente de la herramienta Skey

No es fácil usar simplemente vb. Debe usar un enlace global y colocarlo en un archivo dll, pero no es fácil crear un archivo de biblioteca de enlaces dinámicos en VB. Le daré una referencia de código.

Código de formulario

Opción explícita

Subform_Load privado()

Continuar con el siguiente paso en caso de error

SetKeyboardHook Me.hWnd, WM_USER

Si hay error. Número lt gt y luego 0

MsgBox "¡Primero copie KeybHook.dll a la ruta de Windows!", VB crítico

Fin

Si... así será Fin

Vaya a 0 en caso de error

prevWndProc = GetWindowLong(me.hwnd, GWL_WNDPROC)

SetWindowLong Me.hWnd, GWL_WNDPROC, dirección WNDPROC

Conector final

Subformulario privado_Unload(Descargar como entero)

Liberar gancho de teclado

SetWindowLong Me.hWnd, GWL_WNDPROC, prevWndProc

p>

Conector final

Módulo estándar

Opción explícita

Constante pública GWL_WNDPROC = (-4)

Const pública WM _ USER = ampH400

Alias ​​la función CallWindowProc Lib "usuario 32" a "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) Declarar como Long

Declarar la función GetWindowLong Lib "usuario 32" alias "GetWindowLongA" (ByVal hWnd es Long, ByVal nIndex es Long) como Long

Declarar la función SetWindowLong Lib "usuario 32" "Alias ​​​​"SetWindowLongA" (ByVal hWnd es Long, ByVal nIndex es Long, ByVal dwNewLong es Long) se declara como Long

Establezca la función de conjunto de gancho de teclado Lib "KeybHook" (ByVal hwnd post es Long, ByVal Msg es Long) se declara como Long

Declarar la función de liberación del gancho del teclado Lib "KeybHook" () como Long

Public prevWndProc As Long

La función WndProc (ByVal hWnd es Long, ByVal Msg es Long, ByVal wParam es Long, ByVal lParam es Long) es Long

Si Msg = WM_USER, entonces

Forma 1. Lista1. AddItem " wParam = " ampwParam amp", lParam = " amp hex(lParam)

Formulario 1. Lista1. Índice de lista = Formulario1. Lista1.

Nuevo índice

Terminará si...

WndProc = CallWindowProc(prevWndProc, hWnd, Msg, wParam, lParam)

Finalizar función

Código C usado para crear dll

# include ltwindows.h gt

# include ltwindowsx.h gt

# include lttchar.h gt

HINSTANCE g_hinstDll = NULL

#pragma data_seg(".

drectve")

carácter estático szLinkDirectiveShared[]= "-section: Compartido, rws ";

#pragma data_seg()

#pragma data_seg("Compartido ")

HHOOK g _ hhook = NULL

HWND g _ hwndPost = NULL

UINT g _ uMsgNotify = WM _ USER

#pragma data_seg()

Estático LRESULT teclado WINAPI gancho _ gancho proc(

int nCode,

WPARAM wParam,

LPARAM lParam )

{

LRESULT LRESULT = CallNextHookEx(g_hhook,nCode,wParam,lParam);

if (nCode == HC_ACTION)

{

PostMessage(g_hwndPost, g_uMsgNotify, wParam, lParam

}

return(lResultado

}

); p>

BOOL WINAPI establece el gancho del teclado (publicación HWND HWND, mensaje UINT)

{

HHOOK hhook

Si (g _ hhook! = NULL ) devuelve (FALSO);

g _ hwndPost = hWndPost

g _ uMsgNotify = Msg

Dormir (0);

hhook = SetWindowsHookEx(WH_Keyboard, KeyboardHook_HookProc, g_hinstDll, 0);

InterlockedExchange(PLONG) & g_hhook, (long)hhook

return(g_hhook! = NULL);

}

BOOL WINAPI ReleaseKeyboardHook()

{

BOOL fOK = TRUE

if ( g_hhook! =null)

{

fOK = UnhookWindowsHookEx(g _ hhook);

g _ hhook = NULL

}

Return(fOK);

}

BOOL WINAPI DllMain(h instancia hinst dll, DWORD fdwReason, LPVOID lpvReserved)

{

Cambiar (fdwReason)

{

Caso DLL_PROCESS_ATTACH:

g _ hinstDll = hinstDll

Romper;

}

Devolver (verdadero);

}