Привет . Перехватываю GetMessageW. Решил испортить очередь сообщений. Внутри делаю такой код Код (Text): BOOL WINAPI pUnrealGetMessageW( LPMSG lpMsg,HWND hWnd,UINT wMsgFilterMin,UINT wMsgFilterMax) { if(lpMsg->message==WM_CHAR) { lpMsg->message=0; OutputDebugString(L"WM_CHAR в dll"); } if(lpMsg->message==WM_KEYDOWN) { lpMsg->message=0; OutputDebugString(L"WM_KEYDOWN в dll"); } if(lpMsg->message==WM_KEYUP) { lpMsg->message=0; OutputDebugString(L"WM_KEYUP в dll"); } return pGetMessageW ( lpMsg, hWnd, wMsgFilterMin, wMsgFilterMax); } Однако все, как на зло, классно вводится..Начинаю смотреть. Поставил в своем приложении,где перехватываю следущие отладочные строки. Код (Text): while (GetMessageW(&msg, NULL, 0, 0)) { if (msg.message==WM_KEYDOWN) { OutputDebugString(L"WM_KEYDOWN в главном цикле"); } if (msg.message==WM_KEYUP) { OutputDebugString(L"WM_KEYUP в главном цикле"); } if (msg.message==WM_CHAR) { OutputDebugString(L"WM_CHAR в главном цикле"); } if (!TranslateAcceleratorW(msg.hwnd, hAccelTable, &msg)) { TranslateMessage(&msg); DispatchMessage(&msg); } } И что я вижу? WM_KEYDOWN в главном цикле WM_KEYDOWN в dll WM_CHAR в главном цикле WM_CHAR в в dll WM_KEYUP в главном цикле WM_KEYUP в в dll Т.е. не меняется потому, что изменение в перехвате происходят после отработки в программе? Как такое может быть? Кто-нить сталкивался?
O_o Ну и что? Каким образом TranslateAccelerator влияет на то, что OutputDebugString(L"WM_KEYDOWN в главном цикле"); выполняется раньше OutputDebugString(L"WM_KEYDOWN в dll");