OldProc: FARPROC;
oldproc:=FARPROC(getwindowlong(winfind,GWL_WNDPROC));
setwindowlong(WinFind,GWL_WNDPROC,longint(@MyProc));
下面是MyProc
========================================================================
function MyProc(Hwnd:HWND;iCode:UINT;wParam:WPARAM;lParam:LPARAM):integer; stdcall;
begin
if iCode=WM_ACTIVATEAPP or iCode=WM_ACTIVATE then
exit
else;
CallWindowProc(oldproc,hwnd,iCode,wparam,lparam);
end;
=========================================================================
为什么说“if iCode=WM_ACTIVATEAPP or iCode=WM_ACTIVATE then”这行有错误
错误类型是Incompatible types  就是 不相容的类型  相反的类型
请教高手怎么解决

解决方案 »

  1.   

    ----------------抄一段给你------------function MyProc(Hwnd,Msg,wParam,lParam:longint):LRESULT; stdcall;
    begin
    case Msg of
     WM_ACTIVATEAPP:result:=0;
     WM_ACTIVATE:result:=0;
     else result:=CallWindowProc(hWnd,Msg,wParam,lParam);
     end;
    end;
      

  2.   

    function MyProc(Hwnd:HWND;iCode:UINT;wParam:WPARAM;lParam:LPARAM):integer; stdcall;
    begin
    if iCode=WM_ACTIVATEAPP or iCode=WM_ACTIVATE then
    exit;         //少了一个分号
    else          // 多了一个分号     
    CallWindowProc(oldproc,hwnd,iCode,wparam,lparam);
    end
      

  3.   

    我听说在Delphi中MyProc有5个参数  谁知道?
      

  4.   

    应该这样写:
    ========================================================================
    function MyProc(Hwnd:HWND;iCode:UINT;wParam:WPARAM;lParam:LPARAM):integer; stdcall;
    begin
      if (iCode=WM_ACTIVATEAPP) or (iCode=WM_ACTIVATE) then
        exit
      else
        CallWindowProc(oldproc,hwnd,iCode,wparam,lparam);
    end;
    =========================================================================