²é¿´: 153  |  »Ø¸´: 1
µ±Ç°Ö÷ÌâÒѾ­´æµµ¡£

zsglly

ľ³æ (ÖøÃûдÊÖ)

[½»Á÷] ÔÚDirectXϵ¯³ö¶Ô»°¿ò

½ðɽ¹«Ë¾³öÆ·µÄÓÎÏ·ÐÞ¸ÄÆ÷¡ª¡ª¡¶½ðɽÓÎÏÀ¡·£¬ÒÔÆä¶ÀÌØµÄ¡°DirectXÏÂÖÇÄܵ¯³ö¡±µÄ¹¦ÄÜÔÚÖÚ¶àµÄÓÎÏ·ÐÞ¸ÄÆ÷ÖжÀÊ÷Ò»ÖÄ£¬Ó®µÃÁËÖÚ¶àÍæ¼ÒµÄϲ°®¡£

¡°DirectXÏÂÖÇÄܵ¯³ö¡±ÔÚץͼ¡¢ÓÎÏ·ÐÞ¸ÄÆ÷¡¢ÓÎÏ·µ÷ÊԵȷ½Ãæ¶¼·Ç³£ÓÐÓá£ÄÇô£¬ËüµÄÔ­ÀíÊÇʲô£¿ÎÒÃÇÄÜÔÚ×Ô¼ºµÄÈí¼þÖÐʵÏÖËüÂð£¿ÎÒ¾­¹ýÒ»·¬Å¬Á¦£¬ÖÕÓÚ½Ò¿ªÁË¡°DirectXÏÂÖÇÄܵ¯³ö¡±µÄÉñÃØÃæÉ´¡£

1.   Ô¤±¸ÖªÊ¶
ÔÚ¿ªÊ¼Ç°£¬ÓбØÒª½éÉÜÒ»µã¹ØÓÚHookÓëWindowsµÄ»ù´¡ÖªÊ¶¡£

ÖÚËùÖÜÖª£¬WindowsÊÇÒ»¸öÏûÏ¢Çý¶¯µÄ32λ²Ù×÷ϵͳ¡£ÔÚWindowsÖУ¬ËùÓÐÕýÔÚÔ˵Ľø³Ì¶¼ÓÐÒ»¸ö¶ÀÁ¢µÄ2GBµÄÐéÄâµØÖ·¿Õ¼ä£¬½ø³ÌÖ®¼äÏ໥²»¿É¼û¡£WindowsµÄ¾ø´ó¶àÊýAPIÓëÏûÏ¢ÊDz»ÄÜ¿çÔ½½ø³ÌµÄ¡£

¡°Hook¡±ÔÚWindowsÖÐÖ÷ÒªÊÇÓÃÀ´½ØÈ¡ÏûÏ¢µÄ£¬ÐÎÏó˵£¬¾ÍÊÇÓÃÀ´¡°¹³¡± ÏûÏ¢µÄ¡£Hookʵ¼ÊÉÏÊÇÒ»¸ö´¦ÀíÏûÏ¢µÄ³ÌÐò¶Î£¬Ã¿µ±Ìض¨µÄÏûÏ¢·¢³ö£¬ÔÚûÓе½´ïÄ¿µÄ´°¿Úǰ£¬Hookº¯Êý¾ÍÏȲ¶»ñ¸ÃÏûÏ¢£¬¼´Hookº¯ÊýÏȵõ½´¦ÀíÏûÏ¢µÄ¿ØÖÆÈ¨¡£¶øÇÒÈç¹ûÄã°ÑHookʵÏÖÔÚDLLÎļþÖУ¬ÄÇôHookº¯Êý½«»á×Ô¶¯±»ÏµÍ³Ó³Éäµ½»á´¦ÀíÄǸöÌØ¶¨ÏûÏ¢µÄ´°¿ÚËùÔڵĽø³ÌÐéÄâµØÖ·¿Õ¼äÖС£ÀýÈ磬Äã¿ÉÒÔÓÃHookÀ´²¶»ñϵͳÖÐËùÓеļüÅÌÊäÈëÏûÏ¢£¨WM_KEYDOWN£©À´ÊµÏÖ¶ÔµçÄÔʹÓÃÕßµÄÊäÈë½øÐмǼ£¨¹ØÓÚWindows½ø³Ì¹ÜÀíÓëHook µÄÏêϸÓ÷¨£¬Çë²ÎÔÄMSDNÓëÏà¹Ø×ÊÁÏ£©¡£

2.   Ô­Àí
΢ÈíµÄ DirectX ΪWindowsϵÄÓÎÏ·´øÀ´ÁË»ªÀöµÄÉù¹âЧ¹û¡£µ«ÊÇÓÉÓÚDirectX²ÉÓÃÖ±½Ó·ÃÎʲ¼þµÄ·½·¨Ìá¸ß¶àýÌåÓëÓÎÏ·³ÌÐòµÄËÙ¶È£¬Òò´Ëµ¼ÖÂÁËÈËÃÇÎóÒÔΪÔÚDirectX£¨È·ÇеØËµÊÇDirectDraw£©Ï²»ÄÜÏÔʾÆÕͨµÄWindows¶Ô»°¿ò¡£

       µ«ÊÇDirectXÊÇÖ§³ÖGDIµÄ£¬Ò²¾ÍÊÇ˵ÓÎÏ·¿ÉÒÔÓ󣹿µÄ·½·¨ÔÚDirectXÏÂÏÔʾ¶Ô»°¿ò£¨ÔÚ΢Èí DirectX 8 SDK ÖÐÓÐÃûΪ¡°FullScreenDialog¡±µÄÀý×Ó£©¡£ÏÖÔÚÎÒÃǵÄÎÊÌâÊÇ£ºÈçÉÏËùÊö£¬µ÷ÓÃAPI½¨Á¢ÓëÏÔʾ¶Ô»°¿ò±ØÐëÒªÔڸýø³ÌµÄÄÚ²¿£¬¶øÎÒÃǵijÌÐòÊÇÔÚÓÎÏ·½ø³ÌµÄÍⲿ£¬ÕâÑù£¬ÄÇЩCreateDialog() ÓëDialogBox() Ö»»áÒýÆð¡°·Ç·¨²Ù×÷¡±»ò²»ÆðÈκÎ×÷Óá£

       µ«ÊÇ£¬ÓÐÁËÉÏÃæËù½²µÄHookÇé¿ö¾Í²»Í¬ÁË¡£¼ÈÈ»Hook¿ÉÒÔÓ³Éäµ½±ðµÄ½ø³ÌÄÚ²¿£¬ÄÇôֻҪ½«ÏÔʾ¶Ô»°¿òµÄº¯ÊýÒÔ¼°¶Ô»°¿ò×ÊÔ´°üÀ¨ÔÚHook DLL Öв»¾Í¿ÉÒÔµ÷ÓÃDialogBox() ÁËÂð£¿ÍêÈ«ÕýÈ·£¡ÎÒÃÇÓà SetWindowsHookEx() ΪϵͳÉèÖÃÒ»¸ö¼üÅÌÏûÏ¢Hook£¬ÏµÍ³»á×Ô¶¯½«Õâ¸öDLLÓ³Éäµ½ÓÎÏ·µÄ½ø³ÌÖС£Ã¿µ±ÓмüÅÌÏûÏ¢£¬ÎÒÃÇÖ»ÒªÅжÏÊDz»ÊÇÎÒÃÇËùÉ趨µÄÈȼü£¬Èç¹ûÊǾ͵÷Óà DialogBox() ÏÔʾ¶Ô»°¿ò¼´¿É¡£

       Óɴ˿ɼû£¬HookΪÎÒÃǽâ¾öÁËϵͳ¼¶ÈȼüÓë²åÈëDLLÁ½´óÄÑÌâ£¬ÕæÊÇÒ»¾ÙÁ½µÃ£¡Ò²´ÓÒ»¸ö·½ÃæËµÃ÷ÁËѧϰWindows»ù´¡ÖªÊ¶µÄÖØÒªÐÔ£¬Èç¹ûÄãÓÐ×êÑо«Éñ£¬ÓÖÓÐÏñ¡¶WindowsºËÐıà³Ì¡·ÕâÑùµÄºÃÊéÖ¸Òý£¬¾ÍÒ»¶¨ÄܳÉΪ¶¥¼â¸ßÊÖ¡£

3£®Ê¾ÀýÔ´³ÌÐò
       ÏÞÓÚÆª·ù£¬Ö»ÄÜÕª³­¼¸¶Î¹Ø¼üµÄ´úÂ룬³ÌÐòÖÐÓÐ×¢ÊÍ£¬×Ô¼ºÑо¿°É¡£

// TestPopup.cpp : Defines the entry point for the DLL application.

//

  

#include "stdafx.h"

#include "TestPopup.h"

  

#define SHARD_SEG_NAME "SHARD_DATA"

  

//¹²ÏíÊý¾Ý¶Î

#pragma data_seg(SHARD_SEG_NAME)

#pragma bss_seg(SHARD_SEG_NAME)

  

static BOOL g_fIsInstalled = FALSE;

static HHOOK g_hKeyHook;

static HINSTANCE g_hInstance;

static HWND g_hWnd;

  

#pragma data_seg()

  

BOOL APIENTRY DllMain( HANDLE hModule,  

                       DWORD  ul_reason_for_call,  

                       LPVOID lpReserved

                     )

{

  

    g_hInstance = (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 TESTPOPUP_API CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)

{

    //if(((DWORD)lParam & 0x40000000) && (HC_ACTION == nCode));

    WORD wKey = (WORD)wParam;

     

    //¼ü°´ÏÂ

    if((HIWORD(lParam) & KF_UP) == 0 && HC_ACTION == nCode)

    {        

        if(wKey == VK_ADD)//ÊÇÈȼü

        {

            //»ñȡǰ̨´°¿Ú£¨ÓÎÏ·´°¿Ú£©

            HWND hWnd = ::GetForegroundWindow();

            //´´½¨²¢ÏÔʾģʽ¶Ô»°¿ò

            :ialogBox(g_hInstance, MAKEINTRESOURCE(IDD_MAIN_DIALOG), hWnd, DLGPROC(DialogProc));

        }

    }

  

    LRESULT RetVal = CallNextHookEx(g_hKeyHook, nCode, wParam, lParam );

  

    return  RetVal;

}

  

BOOL TESTPOPUP_API InstallHotKey()

{

    if(g_fIsInstalled)return FALSE;

     

    g_hKeyHook = ::SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)KeyboardProc, g_hInstance, 0);//°²×° Hook

    g_fIsInstalled = TRUE;

  

    return TRUE;

}

  

BOOL TESTPOPUP_API UninstHotKey()

{

    BOOL bRet;

     

    bRet = ::UnhookWindowsHookEx(g_hKeyHook);

    g_fIsInstalled = FALSE;

    g_hKeyHook = NULL;

  

    return bRet;

}

  

BOOL CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)

{

    switch (uMsg)

    {

        case WM_INITDIALOG:

            return TRUE;

  

        case WM_COMMAND:

            switch( LOWORD(wParam) )

            {

                case IDCANCEL:

                case IDOK:

                    EndDialog( hwndDlg, TRUE );

                    return TRUE;

            }

            break;
        case WM_MOVE:

            break;

          case WM_DESTROY:

            g_hWnd = NULL;

            break;
    }
    return FALSE;

  }


//TestPopupDemoDlg.C

void CTestPopupDemoDlg::OnEnableHotkey()  

{

    // TODO: Add your control notification handler code here

    UpdateData();

  

    if(m_fHotkeyEnabled)

    {

        ::InstallHotKey();

    }

    else

    {
        ::UninstHotKey();

    }

    UpdateData(FALSE);

  }

   

±¾³ÌÐòÔÚMicrosoft Visual C++¡¢Win97ϵ÷ÊÔͨ¹ý¡£

[ Last edited by »ÃÓ°ÎÞºÛ on 2006-11-27 at 10:23 ]
»Ø¸´´ËÂ¥

» ²ÂÄãϲ»¶

×öÈËÒªºñµÀ°¡£¡ºñµÀ°¡£¡
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

ÍÞ¹þ¹þ212

гæ (³õÈëÎÄ̳)

0.5

ºÃ ¶¥
2Â¥2005-12-29 19:23:24
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
Ïà¹Ø°æ¿éÌø×ª ÎÒÒª¶©ÔÄÂ¥Ö÷ zsglly µÄÖ÷Ìâ¸üÐÂ
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] 086003ʳƷ¹¤³ÌÇóµ÷¼Á +5 íµíµ111 2026-03-24 5/250 2026-03-24 20:53 by lailaisimei
[¿¼ÑÐ] 0703»¯Ñ§µ÷¼Á£¬Çóµ¼Ê¦ÊÕ +7 ÌìÌìºÃÔËÀ´Éϰ¶° 2026-03-24 7/350 2026-03-24 20:26 by peike
[¿¼ÑÐ] ÕÐ08¿¼Êýѧ +7 laoshidan 2026-03-20 16/800 2026-03-24 17:52 by ÎÚÀ­¶ùɽÂö
[¿¼ÑÐ] ²ÄÁÏѧ˶£¬Çóµ÷¼Á 6+3 ÌǺù«888ll 2026-03-22 7/350 2026-03-24 17:11 by helloÆßÆß
[¿¼ÑÐ] 307Çóµ÷¼Á +3 ÓàÒâÇä 2026-03-21 6/300 2026-03-24 15:03 by ÓàÒâÇä
[¿¼ÑÐ] 279·ÖÇóµ÷¼Á Ò»Ö¾Ô¸211 +18 chaojifeixia 2026-03-19 20/1000 2026-03-24 10:34 by dolphin_ycj
[¿¼ÑÐ] һ־Ըɽ¶«´óѧҩѧѧ˶Çóµ÷¼Á +3 ¿ª¿ªÐÄÐÄû·³ÄÕ 2026-03-23 4/200 2026-03-24 00:06 by ¿ª¿ªÐÄÐÄû·³ÄÕ
[¿¼ÑÐ] 336Çóµ÷¼Á +4 ÊÕµ½VS 2026-03-20 4/200 2026-03-23 19:02 by macy2011
[¿¼ÑÐ] 306Çóµ÷¼Á +9 chuanzhu´¨Öò 2026-03-18 9/450 2026-03-23 13:17 by luoyongfeng
[¿¼ÑÐ] 333Çóµ÷¼Á +6 87639 2026-03-21 10/500 2026-03-23 10:41 by Iveryant
[¿¼ÑÐ] Çóµ÷¼Á²ÄÁÏѧ˶080500£¬×Ü·Ö289·Ö 5+3 @taotao 2026-03-19 21/1050 2026-03-23 10:17 by ¹Úc¸ç
[¿¼ÑÐ] 287Çóµ÷¼Á +8 ³¿»èÏßÓëÐǺ£ 2026-03-19 9/450 2026-03-22 17:01 by i_cooler
[¿¼ÑÐ] 286Çóµ÷¼Á +10 Faune 2026-03-21 10/500 2026-03-21 23:34 by 314126402
[¿¼ÑÐ] 280Çóµ÷¼Á +11 ¹¾ààÏþÏþ 2026-03-18 12/600 2026-03-21 22:40 by ACS Nano¡ª¡ª
[¿¼ÑÐ] ²ÄÁÏѧ˶301·ÖÇóµ÷¼Á +7 Liyouyumairs 2026-03-21 7/350 2026-03-21 22:31 by peike
[¿¼ÑÐ] Çóµ÷¼Á +3 13341 2026-03-20 3/150 2026-03-21 18:28 by ѧԱ8dgXkO
[¿¼ÑÐ] 0703»¯Ñ§297Çóµ÷¼Á +3 Daisy¡î 2026-03-20 3/150 2026-03-21 17:45 by ColorlessPI
[¿¼ÑÐ] Ò»Ö¾Ô¸ Î÷±±´óѧ £¬070300»¯Ñ§Ñ§Ë¶£¬×Ü·Ö287£¬Ë«·ÇÒ»±¾£¬Çóµ÷¼Á¡£ +3 ³¿»èÏßÓëÐǺ£ 2026-03-18 3/150 2026-03-21 00:46 by JourneyLucky
[¿¼ÑÐ] 261ÇóBÇøµ÷¼Á£¬¿ÆÑо­Àú·á¸» +3 Å£Ä̺Üæ 2026-03-20 4/200 2026-03-20 19:34 by JourneyLucky
[¿¼ÑÐ] 085410È˹¤ÖÇÄÜר˶317Çóµ÷¼Á£¨0854¶¼¿ÉÒÔ£© +4 xbxudjdn 2026-03-18 4/200 2026-03-20 09:07 by ²»168
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û