Valor de registo AppInit_DLLs e Windows 95

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática… erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 134655
Exclusão de Responsabilidade para Conteúdo sem Suporte na KB
Este artigo foi escrito sobre produtos para os quais a Microsoft já não fornece suporte. Por conseguinte, este artigo é oferecido "tal como está" e deixará de ser actualizado.
Sumário
O Windows 95 não suporta o carregamento de uma DLL no espaço de endereço de um processo através da utilização de valor de registo AppInit_DLLs. No Windows NT, para cada processo executado, Windows NT carrega as DLLs listadas no valor de registo AppInit_DLLs na espaço de endereços do processo. Para a funcionalidade semelhante no Windows 95, pode implementar uma rotina de todo o sistema. Este artigo mostra como fazê-lo por exemplo.
Mais Informação
Para implementar uma rotina de todo o sistema, tem de assegurar que a função (função de chamada de retorno) hooked existe uma DLL. Em seguida, quando a esta função é chamado, o sistema operativo mapeia a DLL hooked no espaço de endereço a aplicação de destino. Em seguida a função ligado, funciona como parte do processo da aplicação de destino.

Existem essencialmente dois passos envolvidos na criação de uma rotina de sistema:
  1. Crie uma DLL com uma função exportada é utilizada como a função ligar. Na função de exemplo que se segue, a função de chamada de retorno é modelada depois de uma função de chamada de retorno necessários para implementar um WH_KEYBOARD hook do sistema:
          // Trap keyboard messages      __declspec(dllexport) LRESULT CALLBACK HookFunction(                       int code,                       WPARAM wParam,                       LPARAM lParam)      {         char szVCode[50];         //display the virtual key code trapped         sprintf(szVCode, "Virtual Key code: %lx", wParam);         MessageBox(NULL, szVCode,"Key stroke", MB_OK);                :                :      }   The associated .def file for this DLL might resemble this:      LIBRARY      HOOK      EXPORTS         HookFunction						
  2. Instale a rotina de todo o sistema. Para instalar a rotina, a DLL deve ser carregada, endereço a função de hook obtido, e SetWindowsHookEx chamado com endereço a função. Eis um exemplo:
          // add system-wide hook      hHookDll = LoadLibrary("hook");      hHookProc = (HOOKPROC) GetProcAddress(hHookDll, "HookFunction");      // Install keyboard hook to trap all keyboard messages      hSystemHook =  SetWindowsHookEx(WH_KEYBOARD,hHookProc,hHookDll,0);						
    depois de concluída a aplicação com a rotina de todo o sistema, não se esqueça anular o processo de ligar da seguinte forma:
          // Remove the hook and unload the DLL used for the hooking process      UnhookWindowsHookEx(hSystemHook);      FreeLibrary(hHookDll);						
4.00

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 134655 - Última Revisão: 03/01/2005 15:34:49 - Revisão: 3.2

Microsoft Win32 Application Programming Interface

  • kbmt kbcode kbkernbase kbregistry KB134655 KbMtpt
Comentários