ID do artigo: 164787 - Última revisão: domingo, 3 de outubro de 2004 - Revisão: 2.3 INFO: Interface Windows Rundll e Rundll32
Nesta páginaSumário O Microsoft Windows 95, Windows 98 e o Windows Millennium
Edition (Me) possuem dois programas utilitários de linha de comando chamados
Rundll.exe e Rundll32.exe, que permitem invocar uma função exportada por uma
DLL, tanto de 16 bits quanto 32 bits. Não entanto, os programas Rundll e
Rundll32 não lhe permitem chamar qualquer função exportada de uma DLL. Por
exemplo, não é possível usar esses programas utilitários para chamar as
chamadas API do Win32 (Application Programming Interface) exportadas por DLLs
de sistema. Os programas lhe permitem somente que chame funções por uma DLL que
esteja explicitamente escrita para ser chamada por eles. Esse artigo fornece
detalhes adicionais sobre o uso dos programas Rundll e Rundll32 nos sistemas
operacionais do Windows relacionados acima. O Microsoft Windows NT 4.0, Windows 2000 e Windows XP vêm apenas com o Rundll32. Não há suporte para o Rundll (o utilitário Win16) em qualquer uma das plataformas. Os programas utilitários Rundll e Rundll32 foram desenvolvidos originalmente somente para uso interno da Microsoft. Mas a funcionalidade oferecida por eles é tão genérica que agora estão disponíveis para uso geral. Note que o Windows NT 4.0 vem somente com o programa utilitário Rundll32 e oferece suporte somente para Rundll32. Mais InformaçõesRundll vs. Rundll32O Rundll carrega e executa DLLs de 16 bits enquanto o Rundll32 carrega e executa DLLs de 32 bits. Se o tipo errado de DLL for passado para o Rundll ou Rundll32, poderão ocorrer falhas na execução sem que haja a indicação de mensagens de erro.Linha de comando RundllA linha de comando para Rundll é da seguinte maneira:
Como funciona o RundllO Rundll realiza as seguintes etapas:
Como escrever sua DLLNa sua DLL, escreva a função <entrypoint> com o seguinte protótipo:DLL de 16 bits:
hwnd - identificador de janela que deveria ser usado como a janela owner para
quaisquer janelas que a sua DLL criar
hinst - seu identificador de ocorrências da DLL
lpszCmdLine - Linha de comando ASCIIZ que sua DLL deve analisar
nCmdShow - descreve como suas janelas da DLL devem ser exibidas
hwnd = (identificador de janela pai) hinst = HINSTANCE do SETUPX.DLL lpszCmdLine = "132 C:\WINDOWS\INF\SHELL.INF" nCmdShow = (Qualquer coisa que o nCmdShow tenha passado para CreateProcess) Observações especiais com relação a diferença entre o Windows 95 e Windows NTNo Windows NT, Windows 2000 e Windows XP o comportamento do Rundll32.exe é um pouco diferente, para acomodar as linhas de comando UNICODE.O Windows NT tenta encontrar primeiramente o GetProcAddress para <EntryPoint>W. Se esse ponto de entrada for encontrado, então ele assume que o protótipo é: Se o ponto de entrada <EntryPoint>W não for encontrado, o Windows NT irá executar o GetProcAddress para <entrypoint>A e para <entrypoint>. Se ambos forem encontrados, será então considerado um ponto de entrada ANSI e é tratado da mesma maneira que o Windows 95/98/Me. No entanto, se você quiser que sua DLL seja executada em um Windows 95 com suporte para ANSI e em Windows NT/2000/XP com suporte para UNICODE, você deve exportar duas funções: EntryPointW e EntryPoint. No Windows NT/2000/Me, a função EntryPointW será chamada com a linha de comando UNICODE; no Windows 95/98/Me, a função EntryPoint será chamada com uma linha de comando ANSI. Referências Para obter um exemplo do uso do Rundll, consulte o seguinte
artigo sobre como lançar um miniaplicativo do painel de controle no Windows 95
usando o utilitário da linha de comando do Rundll: 135068
(http://support.microsoft.com/kb/135068/PT-BR/
)
HOWTO: Start a Control Panel Applet in Windows 95, 98, or WinNT A informação contida neste artigo aplica-se a:
| Outros Recursos Outros Sites de Suporte
ComunidadesTraduções deste artigo
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email
Voltar para o início