🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: cn.bbs.comp.program
Article #1194

ʹ��Windows�ҽ���

#1194
From: ���ܵ�Сʨ
Date: Sat, 18 Apr 1998 00:00
117 lines
8517 bytes
    Windows��һ��ͼ�ν�����Ϣ���OS���û�Ҫ���ȡϵͳ����
Ȩ,�͵ýػ�Windows����Ӧ�ó����̵���Ϣ,Ȼ���������Ӧ����
��Ϊ�˽ػ���Ϣ,�͵�ʹ�ùҽ���(Hooks)��������������
    �ҽ���(Hooks)ʹ���������ض���Ϣ����Ϣ���в���ҽӻص���
��,һ��Ҫ���ӵ��¼�����,Windows���Զ��������ֹҽӻص�����,��
�ҽ��������������Ԥ���趨�ķ�ʽ�������¼�������Ӧ���?
�ҽ����ж�������,�簴���ط�ʽ�ɷ�Ϊ:�������ص�һ�������Ϣ, 
����ϵͳ�������Ϣ,��ͬʱ���ص�һ�����ϵͳ�������Ϣ�Ĺҽ�
���������йҽ����Ķ���,��װ���������ԭ������һ��ġ�ֻ����
�ػ���Ϣ�IJ�ͬ,���ҽӻص�����ľ��������ͬ��

    �ҽ�������
    Ϊ�˸���ϵͳ�б�����Ĺҽӻص�����,Windowsά����һ������
��������ÿ�ֹҽ�������,Windows��ά��һ������̬�ҽӻص������
������������о���ͬһϵͳ��Ļص�����( ͬһ�ҽ�������)Windo
wsʹ��һ������

    �Զ���ҽӻص�����
    ��ʽ:LRESULT CALLBACK hookcallbackfunction(nCode,wParam,
lParam);
    int nCode;   //�ҽ�����������,nCode<0��Windows 3.1���Dz�
�����
    WPARAM wParam;  //�ҽ������ͺ�nCode���໥��ϵ��
    LPARAM lParam;  //�ҽ������ͺ�lParam���໥��ϵ��
    һ��ص�����Ŀ��Ϊ:
    LERSULT CALLBACK  ������(int nCode,WPARAM wParam,LPARAM 
LParam)
    {��������;
    if (nCode<0) �͵���ͬһ�ҽ����е��¸��ҽ�������;//������
�ػ����Ϣ���д���
    else
    {����ػ����Ϣ������Ӧ����;}
    ���ùҽ����е���һ���ҽ�������;
    }
    ��һ���ҽӻص�����Windows����,Ҳ��������ӵ�������ʱ
,���һ�����롪����nCode,�Ը��߻ص�������Ҫ��ʲô����,����
����Windows��̵���ϢIDֵ�ĸ��������ơ��ҽ������Ͳ�ͬ,nCode
Ҳȡ��ͬ��ֵ,�ص�����Ϳ���nCodeȡֵ�IJ�ͬ����з��ദ�?��
��,�ص����������������,���������������ȡ���ڹҽ����ͺ�nCod
e�����ص�������ɺ�,����Windows����һ������롪����lResult,
���������Ҳȡ���ڹҽ����ͺ�nCode��
    ע��:�ڹҽ��������в����Ƿ����ػ���Ϣ���д���,�ڷ���֮
ǰ�������ͬһ�ҽ����е���һ������,ͬ����õĺ���Ҳ������
һ��ͬ�ຯ��,��Ǵ�������û�йҽ��������ˡ�

    ��װ�ҽ���
    ����ʹ��SetWindowHookExAPI(int idHook,
    HOOKPROC lpfn,
    HINSTANCE hInstance,
    HTASK hTask)
    ��������װһ���ҽ��������°�װ�Ĺҽ��������ʵ��ҽ����Ķ�
��(��ʼ��)��ͬʱ���ô˺�������趨�ҽ���������(idHookȡ��ͬ
��ֵ,�ҽ����ͼ��Ӳ�ͬ����Ϣ)���ҹҽ�����װ�ɹ�,�򷵻عҽ���
���,���򷵻�NULL��
��1
    idHook��ֵ�͹ҽ������͹�ϵ������:
    ������һ���ҽӻص�����
    CallNextHookEx(HHOOK hHook,
    int nCode,
    WPARAM wParam,
    LPARAM lParma)
    ������ڹҽӻص������е��õ�ǰ���е���һ���ҽӻص�����,
��ʹ������ͬһ֪ͨ�µ��ö���ҽӻص�����,�Ա�ϵͳ����ȷѡ��
�ҽ����ص���������������¼����д��?����ǰ����û�������
������,�򷵻�0��
    ע��:����ͬһ������¼���������ҽ���,Ҳ��ϵͳ�ҽ���,��W
indows�����������еĵ�һ���ҽӺ���Windows��ֱ�ӵ���ϵͳ��
����,��Call-NextHookEx()���������������һ���ص�����ʱ,Windo
ws�Ž�����ϵͳ���еĵ�һ���ص�����
    ���ҽ���
    ��һ���ҽ���������Ҫʱ,����ͨ�����Unhook-WindowsHookEx(
HHOOK hHook)������ӹҽ�������ȥ���ҽ��������κ�˳����
�����ɹ�,����TRUE,���򷵻�FALSE��
    һ���ҽ�������
    ���������������ص���������װ���ҽ���������ͼ�
����һʵ����˵��һ�¡������ӵĹ����Ǽ�⵱ǰ�����Ϣ�����û�
�����Ҽ�,�򽫵�ǰ�����Ӧ�ó�������ֹ��
    �Զ���ص��������:
    LRESULT-export CALLBACK RButtonKill(
    int nCode,
    WPARAM wParam,
    LPARAM lParam)
    (LPMOUSEHOOK STRUCT ms;
    if ((wParam==WM-RBUTTONDOWN)||(WParam==WM-NCRBUTTONDOWN)
    (MessageBeep(-1);
    ms=(LPMOUSEHOOK STRUCT)lParam;
    PostMessage(ms->hwnd,WM-QUIT,0,0L);
    //��ǰ�����Ӧ�ó����̷�������Ϣ
    return(1);
    }
    return (CallNextHookEx(hHook,code,wParam,lParam);
    }
    ��װ�ҽ���:
    HHOOK hHook;
    hHook=SetWindowsHookEx(WM-MOUSE,
    (HOOKPROC)GetProAddress(hInstance,"RButtonKill),
    hInstance,NULL);
    ���ҽ���:
    UnhookWindowsHookEx(hHook);
    �����������е�һЩ��Ҫ���롣ֻҪ��дһ���򵥵�С����,��
�������ڹ���а�װRB ottonkill�ҽ�����,��Ϳ�ʼ���ϵͳ����
�������Ϣ,������⵽��������Ҽ�ʱ,��ǰ������κ�Ӧ�ý��
�����ڹ�̷�WM-QUIT��Ϣ,��ʹ��ǰӦ�ó������˳���
    Hooks��DOS�е��ж�������֮��,���ú���,���Դ����߳����
���ܺ�Ч�ʡ���Ҫ�ر�ע��:�ҽӻص���������Ϣ���������м�,��
��Ϣ����������Windows������˵��һ���ؼ��;�������ھ���ϵͳ
��Ĺҽ�����˵����������,��Ϊ���ֹҽ���Ӱ������WindowsӦ�ó�
��
    ���ô�ʩ:
    ��ֻҪ�п��ܾ�ʹ����������ʹ��ϵͳ��;
    ��ֻ�б�Ҫʱ�ż��عҽ���,���Ҿ���ʹ֮�˳��ҽ���;
    ����Ƕ���ij���������Ҫ,����Ҫʹ����Щ�ᱻƵ�����õ�
�ҽ���,������WH-CALL WNDPROC�͹ҽ�����

--
�� ��Դ:���ϴ�С�ٺ���Ϣ����վ bbs.nju.edu.cn��[FROM: hsia.nju.edu.cn]
Technical Details
Message-ID: <3O9Ql0$tv4@bbs.nju.edu.cn>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Language: Chinese,GB
X-Google-Thread: fc86e,94b7736cbe3b8399,start
X-Google-Attributes: gidfc86e,public
From: pipishi.bbs@bbs.nju.edu.cn (���ܵ�Сʨ)
Subject: ʹ��Windows�ҽ���
Date: 1998/04/18
Message-ID: <3O9Ql0$tv4@bbs.nju.edu.cn>
X-Deja-AN: 345308566
X-Filename: Programming/M.892871376.A
Organization: nju_bbs
Newsgroups: cn.bbs.comp.program