C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[55983] Re:Re:Re:Re:다음소스는 후킹소스인데요 winapi.co.kr에서잇는함수 에서질문좀요
후킹초보 [] 1433 읽음    2009-02-03 22:20
감사합니다 꾸벅

장성호 님이 쓰신 글 :
: Dll의 KeyHookProc 에서 SendMessage하면
: Form2의 WMUser1 메소드가 호출된다는 얘기입니다.
:
: WMUser1 함수에서 님께서 하고 싶은 작업을 하시면 되구요
:
: OnKeyDown 이벤트와는 상관없습니다.
:
: 그리고 제가 운영하는 "C++Builder완전정복" 카페는
: http://cafe.naver.com/bcbmaster/  입니다.
:
: 그럼..
:
:
: 후킹초보 님이 쓰신 글 :
: : 여기서요 받은메세지는 WMUser_1 함수에 직컵 키 처리해야하나요?
: : 아니면 비워두고 OnKeyDown에다가 해두되나요?
: : if(Msg.Msg==(WM_USER+1))
: : {
: :     여기에다가 키눌러지면 명령처리해야되나요?
: : }  
: : 이것만 설명해주시면 감사해요
: :
: :
: :
: :
: :
: : 장성호 님이 쓰신 글 :
: : : 그냥 VC처럼 messagemap을 쓰시면 됩니다.
: : : 그밖에도 여러가지 방법이 있지만...
: : :
: : :
: : : 
: : : //Form클래스에  header 파일에 다음과 같이 하구요
: : : 
: : : class TForm2 : public TForm
: : : {
: : : __published:	// IDE-managed Components
: : :     TButton *Btn_InstallHook;
: : :     TButton *Btn_UnInstallHook;
: : :     void __fastcall Btn_InstallHookClick(TObject *Sender);
: : :     void __fastcall Btn_UnInstallHookClick(TObject *Sender);
: : : private:	// User declarations
: : : public:		// User declarations
: : :     __fastcall TForm2(TComponent* Owner);
: : : 
: : :     void __fastcall WMUser1(TMessage &Msg);  //호출되는 메소드 
: : : 
: : : //메세지 맵  
: : : BEGIN_MESSAGE_MAP
: : :     MESSAGE_HANDLER(WM_USER+1,TMessage,WMUser1)
: : : END_MESSAGE_MAP(TForm)
: : : 
: : : };
: : : 

: : :
: : :
: : : //cpp파일에는 대충 다음과 같이 하면 될듯 하네요..
: : : 
: : : HINSTANCE g_Inst;
: : : void __fastcall TForm2::Btn_InstallHookClick(TObject *Sender)
: : : {
: : :     g_Inst=LoadLibraryA("HookDll.dll");
: : :     typedef void __stdcall ( *TFuncInstallHook )(HWND hWnd);
: : : 
: : :     TFuncInstallHook InstallHook=(TFuncInstallHook)GetProcAddress(g_Inst,"InstallHook");
: : :     if(InstallHook)InstallHook(this->Handle);
: : : 
: : : }
: : : //---------------------------------------------------------------------------
: : : void __fastcall TForm2::Btn_UnInstallHookClick(TObject *Sender)
: : : {
: : :     typedef void (*TFuncUnInstallHook)();
: : : 
: : :     TFuncUnInstallHook UnInstallHook=(TFuncUnInstallHook)GetProcAddress(g_Inst,"UnInstallHook");
: : :     if(UnInstallHook)UnInstallHook();
: : : }
: : : //---------------------------------------------------------------------------
: : : 
: : : void __fastcall TForm2::WMUser1(TMessage &Msg)
: : : {
: : :     if(Msg.Msg==(WM_USER+1))
: : :     {
: : :         //어쩌고 저쩌고..
: : :     }
: : : }
: : : 
: : : 

: : :
: : : 그밖에도 메세지를 받는 방법은 WndProc를 오버라이딩 하는 방법도 있구요
: : : WindowProc설정을 바꾸는 등의 sub-classing방법도 있구요 여러가지 가 있겠네요...
: : :
: : :
: : : 그럼..
: : :
: : :
: : : 후킹초보 님이 쓰신 글 :
: : : : LRESULT CALLBACK KeyHookProc(int nCode, WPARAM wParam, LPARAM lParam)
: : : : {
: : : :    if (nCode>=0) {
: : : :       SendMessage(hWndBeeper,WM_USER+1,wParam,lParam);
: : : :    }
: : : :    return CallNextHookEx(hKeyHook,nCode,wParam,lParam);
: : : : }
: : : : extern "C" __declspec(dllexport) void InstallHook(HWND hWnd)
: : : : {
: : : :    hWndBeeper=hWnd;
: : : :    hKeyHook=SetWindowsHookEx(WH_KEYBOARD,KeyHookProc,hModule,NULL);
: : : : }
: : : : extern "C" __declspec(dllexport) void UninstallHook()
: : : : {
: : : :    UnhookWindowsHookEx(hKeyHook);
: : : : }
: : : : BOOL WINAPI DllMain(HINSTANCE hInst, DWORD fdwReason, LPVOID lpRes)
: : : : {
: : : :    switch (fdwReason) {
: : : :    case DLL_PROCESS_ATTACH:
: : : :       hModule=hInst;
: : : :       break;
: : : :    case DLL_PROCESS_DETACH:
: : : :       break;
: : : :    }
: : : :    return TRUE;
: : : : }
: : : : 위에보면  WM_USER+1 으로 메시지보내자나요?
: : : : 빌더에선 이게 사용가능한가요? 빌더에서하려면 vcl방식이아니어야하나요 ㅜ.ㅜ
: : : :
: : : : 그대로해서 dll 파일을 만들긴햇는데
: : : : 메시지를 어디서 받는지 모르겟어요
: : : : 설치만 해놓고 인스펙터의 이벤트의 OnKeyDown 에서 그대로
: : : : 사용하면되는건가요 저렇게해노코 메시지는 어디서받아서처리하는지 모르겟어요;;
: : : : 메시지를어디서받는디를 몰라서요;;

+ -

관련 글 리스트
55976 다음소스는 후킹소스인데요 winapi.co.kr에서잇는함수 에서질문좀요 후킹초보 1382 2009/02/03
55980     아그리고 질문있어요 후킹초보 948 2009/02/03
55978     Re:다음소스는 후킹소스인데요 winapi.co.kr에서잇는함수 에서질문좀요 장성호 1346 2009/02/03
55979         Re:Re:다음소스는 후킹소스인데요 winapi.co.kr에서잇는함수 에서질문좀요 후킹초보 1197 2009/02/03
55981             Re:Re:Re:다음소스는 후킹소스인데요 winapi.co.kr에서잇는함수 에서질문좀요 장성호 1471 2009/02/03
55983                 Re:Re:Re:Re:다음소스는 후킹소스인데요 winapi.co.kr에서잇는함수 에서질문좀요 후킹초보 1433 2009/02/03
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.