Red de conocimiento informático - Aprendizaje de programación - Código fuente Id97

Código fuente Id97

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);

}

上篇: ¿Qué es el archivo nrusi.cn? MSPRIVS.DLL...Microsoft Privilege Converter msrle32.dll...MicrosoftRLE Compressor mssign32.dll...Microsoft Trusted Visa APIsmssip32....dll...MSSIP32ForwarderDLLmsvcirt.dll...WindowsNTIOStreamsDLLMSVCP60. DLL...Archivos de biblioteca de tiempo de ejecución de Microsoft(R)C++ msvcrt40.dll...VC4.xCRTDLL (compatible con versiones anteriores de msvcrt.dll) MSVCRT.DLL...WindowsNTCRTDLLmsvfw32.dll...MicrosoftVideofWindowsDLLmsvidc32.dll...MicrosoftVideo1 Compressor mydocs .dll... UI de la carpeta Mis documentos ncxpnt.dll... El asistente de instalación de Netork (no de red) admite DLLNDDEAPI.DLL...NetworkDDE*** Disfrute administrando APINET1.EXE... (de red). La funcionalidad es la misma que NET.EXE (es necesario llamar a net1 cuando se usa el comando net; si no existe, la operación no se puede completar) NET.EXE... (Red). NET.EXE... (Red). Se utiliza para administrar, configurar y ver información relacionada con la red, como netuse, netprint, netuser, etc. NETAPI32.DLL... NetWin32APIDLLnetrap.dll... Protocolo de administración remota de red DLLnetui0.dll... NTLMUICommonCode-GUIClasses (Versión del archivo : 5.1 .2600.2180) netui1.dll... NTLMUICommonCode-GUIClasses (Versión del archivo: 5.1.2600.2180) newdev.dll... Agregue el archivo de biblioteca del dispositivo de hardware NOTAPAD.EXE... (Bloc de notas). Herramientas de edición de texto NTDLL.DLL...NTLayerDLLNTDSAPI.DLL...(NT5DSLibrary) Este archivo de biblioteca ntdsapi.dll es requerido por los servicios de directorio de Windows. Los servicios de directorio facilitan que Windows localice dispositivos y recursos en la red ntlanman.dll...Microsoft LAN Manager ntlsapi.dll...Interfaz del servidor de licencias de Microsoft DLLNTMARTA.DLL....Proveedor NTMARTA de Windows NTOSKRNL.EXE (sistema operativo Núcleo). Sin este archivo, aparecerá un error al abrir Computer Management. Pero aún puedes abrir Computer Management. 下篇: lg optimus 2x, Samsung i9000, Sony Ericsson Xperia Play Z1i R800i. ¿Cuál tiene un rendimiento de juego más potente? ¿Cuál tiene una tarjeta gráfica discreta?