Ir para conteúdo
Fórum Script Brasil
  • 0

[resolvido] Subclasseando O Explorer


ipc

Pergunta

Srs

Estou subclasseando o Explorer para interceptar algumas msgs da systray.

Código na dll:

Instalação da hook:

begin
  HHook_Message := SetWindowsHookEx(WH_GetMessage, @LL_Messsage_Proc, HInstance, 0); // instala a hook
  HTray := FindWindow('Shell_TrayWnd', nil); // pega o handle da bandeja
  PostMessage(HTray, WM_USer+167, 157, 134); // envia a msg p/ subclassear
end;
Código na callback:
function LL_Messsage_Proc(nCode:Integer; WP:WParam; LP:lParam):Integer; stdcall;
var Msg:TMsg;
begin
  CopyMemory(@Msg, Pointer(LP), SizeOf(TMsg));
  if (Msg.message = (WM_User+167)) and
     (Msg.wParam  = 157)           and
     (Msg.lParam  = 134)           then
  begin
    HTray := FindWindow('Shell_TrayWnd', nil);
    HProc := SetWindowLong(HTray, GWL_WndProc, DWord(@_Window_Proc_Lock)); // subclassea o Explorer
    Exit;
  end;
  Result := CallNextHookEx(HHook_Message, nCode, WP, LP); // passa a msg p/ outras hooks
end;
Código da WindowProc:
function _Window_Proc_Lock(h:Thandle; iMsg:UInt; WP:WParam; LP:LParam):Integer; stdcall;
begin
  Result := CallWindowProc(Pointer(HProc), HTray, iMsg, WP, LP);
end;

Ou seja, simplesmente chamo a WindowProc original dele e mesmo assim recebo intermitentemente o famoso erro: O Windows Explorer encontrou um erro e precisa ser fechado.

Será que de tempos em tempos ele modifica sua WindowProc ?

E se modificar, como se pode saber disso ?

E se não modificar, o que está errado ?

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,7k
×
×
  • Criar Novo...