Einzelnen Beitrag anzeigen

Astat

Registriert seit: 2. Dez 2009
Ort: München
320 Beiträge
 
Lazarus
 
#31

Re: USB - Autostart dynamisch unterbinden

  Alt 1. Mär 2010, 20:43
Zitat von Schwedenbitter:
Insgesamt bin ich aber an dem Thema immer noch interessiert. Falls also jemand eine einfach Lösung ohne Dienst etc. hat, dann bitte her damit.
Hallo Schwedenbitter, anbei Hook Template zum Abfangen und Ändern der WM_DEVICECHANGE message.
Das Teil setzt soweit unten an, dass die Windowsmessages hier Aufschlagen bevor diese an die zuständige WndProc
gesendet werden.


Verwendung:
DLL einfach mit CreateHook aufrufen.


PS. Dient als Template, habs nicht vollständig durchgetestet, Feintuning eventuell Manuelle Parametrisierung
sowie IPC noch notwendig.




Delphi-Quellcode:

library Project1;

  {$IMAGEBASE $03900000}

uses
  windows,
  messages;

Type
   PDevBroadcastHdr = ^TDevBroadcastHdr;
   TDevBroadcastHdr = Packed Record
                          dbcd_size : DWORD;
                          dbcd_devicetype : DWORD;
                          dbcd_reserved : DWORD;
                        end;

var
  hWndProcHook: HHOOK=0;

// wParam:
// [in] Specifies whether the message was sent by the current thread.
// If the message was sent by the current thread, it is nonzero;
// otherwise, it is zero.
// lParam:
// [in] Pointer to a CWPSTRUCT structure that contains details about
// the message.
//
// PCWPSTRUCT:
// lParam
// Specifies additional information about the message.
// The exact meaning depends on the message value.
// wParam
// Specifies additional information about the message.
// The exact meaning depends on the message value.
// message
// Specifies the message.
// hwnd
// Handle to the window to receive the message.

function CallWndProc(Code: integer; wParam: WPARAM; lParam: LPARAM): LResult; stdcall;
var
  pCWP: PCWPSTRUCT;
begin
  if Code >= 0 then begin
     Result := CallNextHookEx(hWndProcHook, Code, wParam, lParam);
  end else begin
     Result := CallNextHookEx(0, Code, wParam, lParam);
     EXIT;
  end;

  pCWP := pointer(lParam);

  if pCWP^.message = WM_DEVICECHANGE then begin
    case pCWP^.wParam of
    $8000 :
      if PDevBroadcastHdr(pCWP^.lParam)^.dbcd_devicetype = $00000002 then
      begin
        //-- Fenster der Hostapplication suchen und an dieses posten,
        //-- oder Host Application speichert Handle vor dem Laden der DLL in
        //-- shared memory oder Registry.
        //-- Elegant wäre hier eine IPC mit einem PIPE Client oder Socket Client

      end;
    $8004 :
      if PDevBroadcastHdr(pCWP^.lParam)^.dbcd_devicetype = $00000002 then
      begin
         //-- Ergo wie oben
      end;
    else
      pCWP.message := WM_NULL; //-- Message vernichten
    end;
  end;

(**
  case pCWP.message of
    WM_NULL              : wprocTranslator(pCWP.message,'WM_NULL');
    WM_CREATE            : wprocTranslator(pCWP.message,'WM_CREATE') ;
    WM_DESTROY          : wprocTranslator(pCWP.message,'WM_DESTROY') ;
    WM_MOVE              : wprocTranslator(pCWP.message,'WM_MOVE') ;
    WM_SIZE              : wprocTranslator(pCWP.message,'WM_SIZE') ;
    WM_ACTIVATE          : wprocTranslator(pCWP.message,'WM_ACTIVATE') ;
    WM_SETFOCUS          : wprocTranslator(pCWP.message,'WM_SETFOCUS') ;
    WM_KILLFOCUS        : wprocTranslator(pCWP.message,'WM_KILLFOCUS') ;
    WM_ENABLE            : wprocTranslator(pCWP.message,'WM_ENABLE') ;
    WM_SETREDRAW        : wprocTranslator(pCWP.message,'WM_SETREDRAW') ;
    WM_SETTEXT          : wprocTranslator(pCWP.message,'WM_SETTEXT') ;
    WM_GETTEXT          : wprocTranslator(pCWP.message,'WM_GETTEXT') ;
    WM_GETTEXTLENGTH    : wprocTranslator(pCWP.message,'WM_GETTEXTLENGTH') ;
    WM_PAINT            : wprocTranslator(pCWP.message,'WM_PAINT') ;
    WM_CLOSE            : wprocTranslator(pCWP.message,'WM_CLOSE') ;
    WM_QUERYENDSESSION  : wprocTranslator(pCWP.message,'WM_QUERYENDSESSION') ;
    WM_QUIT              : wprocTranslator(pCWP.message,'WM_QUIT') ;
    WM_QUERYOPEN        : wprocTranslator(pCWP.message,'WM_QUERYOPEN') ;
    WM_ERASEBKGND        : wprocTranslator(pCWP.message,'WM_ERASEBKGND') ;
    WM_SYSCOLORCHANGE    : wprocTranslator(pCWP.message,'WM_SYSCOLORCHANGE') ;
    WM_ENDSESSION        : wprocTranslator(pCWP.message,'WM_ENDSESSION') ;
    WM_SYSTEMERROR      : wprocTranslator(pCWP.message,'WM_SYSTEMERROR') ;
    WM_SHOWWINDOW        : wprocTranslator(pCWP.message,'WM_SHOWWINDOW') ;
    WM_CTLCOLOR          : wprocTranslator(pCWP.message,'WM_CTLCOLOR') ;
    WM_WININICHANGE      : wprocTranslator(pCWP.message,'WM_WININICHANGE') ;
    WM_DEVMODECHANGE    : wprocTranslator(pCWP.message,'WM_DEVMODECHANGE') ;
    WM_ACTIVATEAPP      : wprocTranslator(pCWP.message,'WM_ACTIVATEAPP') ;
    WM_FONTCHANGE        : wprocTranslator(pCWP.message,'WM_FONTCHANGE') ;
    WM_TIMECHANGE        : wprocTranslator(pCWP.message,'WM_TIMECHANGE') ;
    WM_CANCELMODE        : wprocTranslator(pCWP.message,'WM_CANCELMODE') ;
    WM_SETCURSOR        : wprocTranslator(pCWP.message,'WM_SETCURSOR') ;
    WM_MOUSEACTIVATE    : wprocTranslator(pCWP.message,'WM_MOUSEACTIVATE') ;
    WM_CHILDACTIVATE    : wprocTranslator(pCWP.message,'WM_CHILDACTIVATE') ;
    WM_QUEUESYNC        : wprocTranslator(pCWP.message,'WM_QUEUESYNC') ;
    WM_GETMINMAXINFO    : wprocTranslator(pCWP.message,'WM_GETMINMAXINFO') ;
    WM_PAINTICON        : wprocTranslator(pCWP.message,'WM_PAINTICON') ;
    WM_ICONERASEBKGND    : wprocTranslator(pCWP.message,'WM_ICONERASEBKGND') ;
    WM_NEXTDLGCTL        : wprocTranslator(pCWP.message,'WM_NEXTDLGCTL') ;
    WM_SPOOLERSTATUS    : wprocTranslator(pCWP.message,'WM_SPOOLERSTATUS') ;
    WM_DRAWITEM          : wprocTranslator(pCWP.message,'WM_DRAWITEM') ;
    WM_MEASUREITEM      : wprocTranslator(pCWP.message,'WM_MEASUREITEM') ;
    WM_DELETEITEM        : wprocTranslator(pCWP.message,'WM_DELETEITEM') ;
    WM_VKEYTOITEM        : wprocTranslator(pCWP.message,'WM_VKEYTOITEM') ;
    WM_CHARTOITEM        : wprocTranslator(pCWP.message,'WM_CHARTOITEM') ;
    WM_SETFONT          : wprocTranslator(pCWP.message,'WM_SETFONT') ;
    WM_GETFONT          : wprocTranslator(pCWP.message,'WM_GETFONT') ;
    WM_SETHOTKEY        : wprocTranslator(pCWP.message,'WM_SETHOTKEY') ;
    WM_GETHOTKEY        : wprocTranslator(pCWP.message,'WM_GETHOTKEY') ;
    WM_QUERYDRAGICON    : wprocTranslator(pCWP.message,'WM_QUERYDRAGICON') ;
    WM_COMPAREITEM      : wprocTranslator(pCWP.message,'WM_COMPAREITEM') ;
    WM_GETOBJECT        : wprocTranslator(pCWP.message,'WM_GETOBJECT') ;
    WM_COMPACTING        : wprocTranslator(pCWP.message,'WM_COMPACTING') ;
    WM_COMMNOTIFY        : wprocTranslator(pCWP.message,'WM_COMMNOTIFY') ;
    WM_WINDOWPOSCHANGING  : wprocTranslator(pCWP.message,'WM_WINDOWPOSCHANGING') ;
    WM_WINDOWPOSCHANGED  : wprocTranslator(pCWP.message,'WM_WINDOWPOSCHANGED') ;
    WM_POWER            : wprocTranslator(pCWP.message,'WM_POWER') ;
    WM_COPYDATA          : wprocTranslator(pCWP.message,'WM_COPYDATA') ;
    WM_CANCELJOURNAL    : wprocTranslator(pCWP.message,'WM_CANCELJOURNAL') ;
    WM_NOTIFY            : wprocTranslator(pCWP.message,'WM_NOTIFY') ;
    WM_INPUTLANGCHANGEREQUEST  : wprocTranslator(pCWP.message,'WM_INPUTLANGCHANGEREQUEST') ;
    WM_INPUTLANGCHANGE  : wprocTranslator(pCWP.message,'WM_INPUTLANGCHANGE') ;
    WM_TCARD            : wprocTranslator(pCWP.message,'WM_TCARD') ;
    WM_HELP              : wprocTranslator(pCWP.message,'WM_HELP') ;
    WM_USERCHANGED      : wprocTranslator(pCWP.message,'WM_USERCHANGED') ;
    WM_NOTIFYFORMAT      : wprocTranslator(pCWP.message,'WM_NOTIFYFORMAT') ;
    WM_CONTEXTMENU      : wprocTranslator(pCWP.message,'WM_CONTEXTMENU') ;
    WM_STYLECHANGING    : wprocTranslator(pCWP.message,'WM_STYLECHANGING') ;
    WM_STYLECHANGED      : wprocTranslator(pCWP.message,'WM_STYLECHANGED') ;
    WM_DISPLAYCHANGE    : wprocTranslator(pCWP.message,'WM_DISPLAYCHANGE') ;
    WM_GETICON          : wprocTranslator(pCWP.message,'WM_GETICON') ;
    WM_SETICON          : wprocTranslator(pCWP.message,'WM_SETICON') ;
    WM_NCCREATE          : wprocTranslator(pCWP.message,'WM_NCCREATE') ;
    WM_NCDESTROY        : wprocTranslator(pCWP.message,'WM_NCDESTROY') ;
    WM_NCCALCSIZE        : wprocTranslator(pCWP.message,'WM_NCCALCSIZE') ;
    WM_NCHITTEST        : wprocTranslator(pCWP.message,'WM_NCHITTEST') ;
    WM_NCPAINT          : wprocTranslator(pCWP.message,'WM_NCPAINT') ;
    WM_NCACTIVATE        : wprocTranslator(pCWP.message,'WM_NCACTIVATE') ;
    WM_GETDLGCODE        : wprocTranslator(pCWP.message,'WM_GETDLGCODE') ;
    WM_NCMOUSEMOVE      : wprocTranslator(pCWP.message,'WM_NCMOUSEMOVE') ;
    WM_NCLBUTTONDOWN    : wprocTranslator(pCWP.message,'WM_NCLBUTTONDOWN') ;
    WM_NCLBUTTONUP      : wprocTranslator(pCWP.message,'WM_NCLBUTTONUP') ;
    WM_NCLBUTTONDBLCLK  : wprocTranslator(pCWP.message,'WM_NCLBUTTONDBLCLK') ;
    WM_NCRBUTTONDOWN    : wprocTranslator(pCWP.message,'WM_NCRBUTTONDOWN') ;
    WM_NCRBUTTONUP      : wprocTranslator(pCWP.message,'WM_NCRBUTTONUP') ;
    WM_NCRBUTTONDBLCLK  : wprocTranslator(pCWP.message,'WM_NCRBUTTONDBLCLK') ;
    WM_NCMBUTTONDOWN    : wprocTranslator(pCWP.message,'WM_NCMBUTTONDOWN') ;
    WM_NCMBUTTONUP      : wprocTranslator(pCWP.message,'WM_NCMBUTTONUP') ;
    WM_NCMBUTTONDBLCLK  : wprocTranslator(pCWP.message,'WM_NCMBUTTONDBLCLK') ;
    WM_KEYFIRST          : wprocTranslator(pCWP.message,'WM_KEYFIRST') ;
    WM_KEYUP            : wprocTranslator(pCWP.message,'WM_KEYUP') ;
    WM_CHAR              : wprocTranslator(pCWP.message,'WM_CHAR') ;
    WM_DEADCHAR          : wprocTranslator(pCWP.message,'WM_DEADCHAR') ;
    WM_SYSKEYDOWN        : wprocTranslator(pCWP.message,'WM_SYSKEYDOWN') ;
    WM_SYSKEYUP          : wprocTranslator(pCWP.message,'WM_SYSKEYUP') ;
    WM_SYSCHAR          : wprocTranslator(pCWP.message,'WM_SYSCHAR') ;
    WM_SYSDEADCHAR      : wprocTranslator(pCWP.message,'WM_SYSDEADCHAR') ;
    WM_KEYLAST          : wprocTranslator(pCWP.message,'WM_KEYLAST') ;
    WM_INITDIALOG        : wprocTranslator(pCWP.message,'WM_INITDIALOG') ;
    WM_COMMAND          :
    begin
      if HiWord(wParam) = BN_CLICKED then begin
        GetWindowText(pCWP^.lParam,szWndText,sizeof(szWndText));
        wprocTranslator(pCWP^.message,'BN_CLICKED: ' + szWndText);
      end;
    end;
    WM_SYSCOMMAND        : wprocTranslator(pCWP.message,'WM_SYSCOMMAND') ;
    WM_TIMER            : wprocTranslator(pCWP.message,'WM_TIMER') ;
    WM_HSCROLL          : wprocTranslator(pCWP.message,'WM_HSCROLL') ;
    WM_VSCROLL          : wprocTranslator(pCWP.message,'WM_VSCROLL') ;
    WM_INITMENU          : wprocTranslator(pCWP.message,'WM_INITMENU') ;
    WM_INITMENUPOPUP    : wprocTranslator(pCWP.message,'WM_INITMENUPOPUP');
    WM_MENUSELECT        : wprocTranslator(pCWP.message,'WM_MENUSELECT') ;
    WM_MENUCHAR          : wprocTranslator(pCWP.message,'WM_MENUCHAR') ;
    WM_ENTERIDLE        : wprocTranslator(pCWP.message,'WM_ENTERIDLE') ;
    WM_MENURBUTTONUP    : wprocTranslator(pCWP.message,'WM_MENURBUTTONUP') ;
    WM_MENUDRAG          : wprocTranslator(pCWP.message,'WM_MENUDRAG') ;
    WM_MENUGETOBJECT    : wprocTranslator(pCWP.message,'WM_MENUGETOBJECT') ;
    WM_UNINITMENUPOPUP  : wprocTranslator(pCWP.message,'WM_UNINITMENUPOPUP') ;
    WM_MENUCOMMAND      : wprocTranslator(pCWP.message,'WM_MENUCOMMAND') ;
    WM_CTLCOLORMSGBOX    : wprocTranslator(pCWP.message,'WM_CTLCOLORMSGBOX') ;
    WM_CTLCOLOREDIT      : wprocTranslator(pCWP.message,'WM_CTLCOLOREDIT') ;
    WM_CTLCOLORLISTBOX  : wprocTranslator(pCWP.message,'WM_CTLCOLORLISTBOX') ;
    WM_CTLCOLORBTN      : wprocTranslator(pCWP.message,'WM_CTLCOLORBTN') ;
    WM_CTLCOLORDLG      : wprocTranslator(pCWP.message,'WM_CTLCOLORDLG') ;
    WM_CTLCOLORSCROLLBAR : wprocTranslator(pCWP.message,'WM_CTLCOLORSCROLLBAR') ;
    WM_CTLCOLORSTATIC    : wprocTranslator(pCWP.message,'WM_CTLCOLORSTATIC') ;
    WM_MOUSEFIRST        : wprocTranslator(pCWP.message,'WM_MOUSEFIRST') ;
    WM_LBUTTONDOWN      : wprocTranslator(pCWP.message,'WM_LBUTTONDOWN') ;
    WM_LBUTTONUP        : wprocTranslator(pCWP.message,'WM_LBUTTONUP') ;
    WM_LBUTTONDBLCLK    : wprocTranslator(pCWP.message,'WM_LBUTTONDBLCLK') ;
    WM_RBUTTONDOWN      : wprocTranslator(pCWP.message,'WM_RBUTTONDOWN') ;
    WM_RBUTTONUP        : wprocTranslator(pCWP.message,'WM_RBUTTONUP') ;
    WM_RBUTTONDBLCLK    : wprocTranslator(pCWP.message,'WM_RBUTTONDBLCLK') ;
    WM_MBUTTONDOWN      : wprocTranslator(pCWP.message,'WM_MBUTTONDOWN') ;
    WM_MBUTTONUP        : wprocTranslator(pCWP.message,'WM_MBUTTONUP') ;
    WM_MBUTTONDBLCLK    : wprocTranslator(pCWP.message,'WM_MBUTTONDBLCLK') ;
    WM_MOUSEWHEEL        : wprocTranslator(pCWP.message,'WM_MOUSEWHEEL') ;
    WM_PARENTNOTIFY      : wprocTranslator(pCWP.message,'WM_PARENTNOTIFY') ;
    WM_ENTERMENULOOP    : wprocTranslator(pCWP.message,'WM_ENTERMENULOOP') ;
    WM_EXITMENULOOP      : wprocTranslator(pCWP.message,'WM_EXITMENULOOP') ;
    WM_NEXTMENU          : wprocTranslator(pCWP.message,'WM_NEXTMENU') ;
    WM_SIZING            : wprocTranslator(pCWP.message,'WM_SIZING') ;
    WM_CAPTURECHANGED    : wprocTranslator(pCWP.message,'WM_CAPTURECHANGED') ;
    WM_MOVING            : wprocTranslator(pCWP.message,'WM_MOVING') ;
    WM_POWERBROADCAST    : wprocTranslator(pCWP.message,'WM_POWERBROADCAST') ;
    WM_DEVICECHANGE      : wprocTranslator(pCWP.message,'WM_DEVICECHANGE') ;
    WM_IME_STARTCOMPOSITION : wprocTranslator(pCWP.message,'WM_IME_STARTCOMPOSITION') ;
    WM_IME_ENDCOMPOSITION  : wprocTranslator(pCWP.message,'WM_IME_ENDCOMPOSITION') ;
    WM_IME_COMPOSITION      : wprocTranslator(pCWP.message,'WM_IME_COMPOSITION') ;
    WM_IME_SETCONTEXT      : wprocTranslator(pCWP.message,'WM_IME_SETCONTEXT') ;
    WM_IME_NOTIFY          : wprocTranslator(pCWP.message,'WM_IME_NOTIFY') ;
    WM_IME_CONTROL          : wprocTranslator(pCWP.message,'WM_IME_CONTROL') ;
    WM_IME_COMPOSITIONFULL  : wprocTranslator(pCWP.message,'WM_IME_COMPOSITIONFULL') ;
    WM_IME_SELECT          : wprocTranslator(pCWP.message,'WM_IME_SELECT') ;
    WM_IME_CHAR            : wprocTranslator(pCWP.message,'WM_IME_CHAR') ;
    WM_IME_REQUEST          : wprocTranslator(pCWP.message,'WM_IME_REQUEST') ;
    WM_IME_KEYDOWN          : wprocTranslator(pCWP.message,'WM_IME_KEYDOWN') ;
    WM_IME_KEYUP            : wprocTranslator(pCWP.message,'WM_IME_KEYUP') ;
    WM_MDICREATE        : wprocTranslator(pCWP.message,'WM_MDICREATE') ;
    WM_MDIDESTROY        : wprocTranslator(pCWP.message,'WM_MDIDESTROY') ;
    WM_MDIACTIVATE      : wprocTranslator(pCWP.message,'WM_MDIACTIVATE') ;
    WM_MDIRESTORE        : wprocTranslator(pCWP.message,'WM_MDIRESTORE') ;
    WM_MDINEXT          : wprocTranslator(pCWP.message,'WM_MDINEXT') ;
    WM_MDIMAXIMIZE      : wprocTranslator(pCWP.message,'WM_MDIMAXIMIZE') ;
    WM_MDITILE          : wprocTranslator(pCWP.message,'WM_MDITILE') ;
    WM_MDICASCADE        : wprocTranslator(pCWP.message,'WM_MDICASCADE') ;
    WM_MDIICONARRANGE    : wprocTranslator(pCWP.message,'WM_MDIICONARRANGE') ;
    WM_MDIGETACTIVE      : wprocTranslator(pCWP.message,'WM_MDIGETACTIVE') ;
    WM_MDISETMENU        : wprocTranslator(pCWP.message,'WM_MDISETMENU') ;
    WM_ENTERSIZEMOVE    : wprocTranslator(pCWP.message,'WM_ENTERSIZEMOVE') ;
    WM_EXITSIZEMOVE      : wprocTranslator(pCWP.message,'WM_EXITSIZEMOVE') ;
    WM_DROPFILES        : wprocTranslator(pCWP.message,'WM_DROPFILES') ;
    WM_MDIREFRESHMENU    : wprocTranslator(pCWP.message,'WM_MDIREFRESHMENU') ;
    WM_MOUSEHOVER        : wprocTranslator(pCWP.message,'WM_MOUSEHOVER') ;
    WM_MOUSELEAVE        : wprocTranslator(pCWP.message,'WM_MOUSELEAVE') ;
    WM_CUT              : wprocTranslator(pCWP.message,'WM_CUT') ;
    WM_COPY              : wprocTranslator(pCWP.message,'WM_COPY') ;
    WM_PASTE            : wprocTranslator(pCWP.message,'WM_PASTE') ;
    WM_CLEAR            : wprocTranslator(pCWP.message,'WM_CLEAR') ;
    WM_UNDO              : wprocTranslator(pCWP.message,'WM_UNDO') ;
    WM_RENDERFORMAT      : wprocTranslator(pCWP.message,'WM_RENDERFORMAT') ;
    WM_RENDERALLFORMATS  : wprocTranslator(pCWP.message,'WM_RENDERALLFORMATS') ;
    WM_DESTROYCLIPBOARD  : wprocTranslator(pCWP.message,'WM_DESTROYCLIPBOARD') ;
    WM_DRAWCLIPBOARD    : wprocTranslator(pCWP.message,'WM_DRAWCLIPBOARD') ;
    WM_PAINTCLIPBOARD    : wprocTranslator(pCWP.message,'WM_PAINTCLIPBOARD') ;
    WM_VSCROLLCLIPBOARD  : wprocTranslator(pCWP.message,'WM_VSCROLLCLIPBOARD') ;
    WM_SIZECLIPBOARD    : wprocTranslator(pCWP.message,'WM_SIZECLIPBOARD') ;
    WM_ASKCBFORMATNAME  : wprocTranslator(pCWP.message,'WM_ASKCBFORMATNAME') ;
    WM_CHANGECBCHAIN    : wprocTranslator(pCWP.message,'WM_CHANGECBCHAIN') ;
    WM_HSCROLLCLIPBOARD  : wprocTranslator(pCWP.message,'WM_HSCROLLCLIPBOARD') ;
    WM_QUERYNEWPALETTE  : wprocTranslator(pCWP.message,'WM_QUERYNEWPALETTE') ;
    WM_PALETTEISCHANGING : wprocTranslator(pCWP.message,'WM_PALETTEISCHANGING') ;
    WM_PALETTECHANGED    : wprocTranslator(pCWP.message,'WM_PALETTECHANGED') ;
    WM_HOTKEY            : wprocTranslator(pCWP.message,'WM_HOTKEY') ;
    WM_PRINT            : wprocTranslator(pCWP.message,'WM_PRINT') ;
    WM_PRINTCLIENT      : wprocTranslator(pCWP.message,'WM_PRINTCLIENT') ;
    WM_HANDHELDFIRST    : wprocTranslator(pCWP.message,'WM_HANDHELDFIRST') ;
    WM_HANDHELDLAST      : wprocTranslator(pCWP.message,'WM_HANDHELDLAST') ;
    WM_PENWINFIRST      : wprocTranslator(pCWP.message,'WM_PENWINFIRST') ;
    WM_PENWINLAST        : wprocTranslator(pCWP.message,'WM_PENWINLAST') ;
    WM_COALESCE_FIRST    : wprocTranslator(pCWP.message,'WM_COALESCE_FIRST') ;
    WM_COALESCE_LAST    : wprocTranslator(pCWP.message,'WM_COALESCE_LAST') ;
    WM_DDE_FIRST        : wprocTranslator(pCWP.message,'WM_DDE_FIRST') ;
    WM_DDE_TERMINATE    : wprocTranslator(pCWP.message,'WM_DDE_TERMINATE') ;
    WM_DDE_ADVISE        : wprocTranslator(pCWP.message,'WM_DDE_ADVISE') ;
    WM_DDE_UNADVISE      : wprocTranslator(pCWP.message,'WM_DDE_UNADVISE') ;
    WM_DDE_ACK          : wprocTranslator(pCWP.message,'WM_DDE_ACK') ;
    WM_DDE_DATA          : wprocTranslator(pCWP.message,'WM_DDE_DATA') ;
    WM_DDE_REQUEST      : wprocTranslator(pCWP.message,'WM_DDE_REQUEST') ;
    WM_DDE_POKE          : wprocTranslator(pCWP.message,'WM_DDE_POKE') ;
    WM_DDE_EXECUTE      : wprocTranslator(pCWP.message,'WM_DDE_EXECUTE') ;
    WM_APP              : wprocTranslator(pCWP.message,'WM_APP') ;
    WM_USER              : wprocTranslator(pCWP.message,'WM_USER') ;
  end;
  **)

end;


function CreateHook: integer; stdcall;
begin
  hWndProcHook := SetWindowsHookEx(WH_CALLWNDPROC, @CallWndProc, hInstance, 0);
  result := hWndProcHook;
end;

function DeleteHook: integer; stdcall;
begin
  result := Ord(UnhookWindowsHookEx(hWndProcHook));
end;

function StartUp:integer; stdcall;
begin
  result:=0;
end;

procedure DLLEntryPoint(dwReason: DWORD);
begin
  case dwReason of
    DLL_PROCESS_ATTACH: ; //-- IPC init
    DLL_PROCESS_DETACH: ; //-- IPC release
  end;
end;

exports
  CreateHook,
  DeleteHook;

begin
  IsMultithread := true;
  DisableThreadLibraryCalls(hInstance);
  DllProc := @DLLEntryPoint;
  DLLEntryPoint(DLL_PROCESS_ATTACH);
end.
Lanthan Astat
06810110811210410503210511511603209711003210010110 9032084097103
03211611111604403209711003210010110903210010510103 2108101116122
11610103209010110510810103206711110010103210511003 2068101108112
10410503210310111509910411410510109810111003211910 5114100046
  Mit Zitat antworten Zitat