zoukankan      html  css  js  c++  java
  • DLL建立读写共享节区(Segment)

    // Hook.cpp : Defines the entry point for the DLL application.
    //
    
    #include "stdafx.h"
    #include "Hook.h"
    
    HHOOK g_hHook;
    HHOOK g_hHookKey;
    HINSTANCE g_hIns;
    
    #pragma data_seg("MySeg")
    HWND g_hWnd =NULL;
    #pragma data_seg()
    
    //#pragma comment(linker,"/section:MySeg,RWS")
    
    BOOL APIENTRY DllMain( HANDLE hModule, 
                           DWORD  ul_reason_for_call, 
                           LPVOID lpReserved
    					 )
    {
    	g_hIns =(HINSTANCE) hModule;
    //     switch (ul_reason_for_call)
    // 	{
    // 		case DLL_PROCESS_ATTACH:
    // 		case DLL_THREAD_ATTACH:
    // 		case DLL_THREAD_DETACH:
    // 		case DLL_PROCESS_DETACH:
    // 			break;
    //     }
        return TRUE;
    }
    
    LRESULT CALLBACK MouseProc(
    						   int nCode,      // hook code
    						   WPARAM wParam,  // message identifier
    						   LPARAM lParam   // mouse coordinates
    						   )
    {
    	return 1;
    }
    
    
    LRESULT CALLBACK KeyProc(
    						   int nCode,      // hook code
    						   WPARAM wParam,  // message identifier
    						   LPARAM lParam   // mouse coordinates
    						   )
    {
    	if(wParam == VK_F2){
    		UnhookWindowsHookEx(g_hHook);
    		UnhookWindowsHookEx(g_hHookKey);
    		//MessageBox(0,"去掉了Hook","提示",0);
    		::SendMessage(g_hWnd,WM_CLOSE,0,0);
    		return 1;
    	}
    	else return CallNextHookEx(g_hHookKey,nCode,wParam,lParam);	
    }
    
    HOOK_API void SetHook(HWND hWnd)
    {
    	g_hWnd = hWnd;
    // 	g_hHook = SetWindowsHookEx(WH_MOUSE,MouseProc,g_hIns,0);
    // 	g_hHookKey = SetWindowsHookEx(WH_KEYBOARD,KeyProc,g_hIns,0);
    	g_hHook = SetWindowsHookEx(WH_MOUSE,MouseProc,GetModuleHandle("Hook.dll"),0);
    	g_hHookKey = SetWindowsHookEx(WH_KEYBOARD,KeyProc,GetModuleHandle("Hook"),0);
     
    }
    

      Hook.def

    LIBRARY Hook
    EXPORTS
    SetHook @23
    
    SEGMENTS
    MySeg	READ WRITE SHARED
    

      

    Client:

    /////////////////////////////////////////////////////////////////////////////
    // CHookTestDlg message handlers
    
    BOOL CHookTestDlg::OnInitDialog()
    {
    	CDialog::OnInitDialog();
    
    	// Add "About..." menu item to system menu.
    
    	// IDM_ABOUTBOX must be in the system command range.
    	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    	ASSERT(IDM_ABOUTBOX < 0xF000);
    
    	CMenu* pSysMenu = GetSystemMenu(FALSE);
    	if (pSysMenu != NULL)
    	{
    		CString strAboutMenu;
    		strAboutMenu.LoadString(IDS_ABOUTBOX);
    		if (!strAboutMenu.IsEmpty())
    		{
    			pSysMenu->AppendMenu(MF_SEPARATOR);
    			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
    		}
    	}
    
    	// Set the icon for this dialog.  The framework does this automatically
    	//  when the application's main window is not a dialog
    	SetIcon(m_hIcon, TRUE);			// Set big icon
    	SetIcon(m_hIcon, FALSE);		// Set small icon
    	
    	// TODO: Add extra initialization here
    	int cx,cy;
    	cx=GetSystemMetrics(SM_CXSCREEN);
    	cy=GetSystemMetrics(SM_CYSCREEN);
    	SetWindowPos(&wndTopMost,0,0,cx,cy,SWP_SHOWWINDOW);
    
    	SetHook(this->m_hWnd);  
    
    	return TRUE;  // return TRUE  unless you set the focus to a control
    }
    

      

  • 相关阅读:
    JavaWeb--HttpSession案例
    codeforces B. Balls Game 解题报告
    hdu 1711 Number Sequence 解题报告
    codeforces B. Online Meeting 解题报告
    ZOJ 3706 Break Standard Weight 解题报告
    codeforces C. Magic Formulas 解题报告
    codeforces B. Sereja and Mirroring 解题报告
    zoj 1109 Language of FatMouse 解题报告
    hdu 1361.Parencodings 解题报告
    hdu 1004 Let the Balloon Rise 解题报告
  • 原文地址:https://www.cnblogs.com/wucg/p/2433985.html
Copyright © 2011-2022 走看看