// Sets the attributes of characters written to the console screen buffer by // the WriteFile or WriteConsole function, or echoed by the ReadFile or ReadConsole function. // This function affects text written after the function call. BOOL WINAPI OnSetConsoleTextAttribute(HANDLE hConsoleOutput, WORD wAttributes) { //typedef BOOL (WINAPI* OnSetConsoleTextAttribute_t)(HANDLE hConsoleOutput, WORD wAttributes); ORIGINAL_KRNL(SetConsoleTextAttribute); BOOL lbRc = FALSE; if (ph && ph->PreCallBack) { SETARGS2(&lbRc, hConsoleOutput, wAttributes); ph->PreCallBack(&args); } #ifdef _DEBUG // We do not care if visible ChildGui is doing smth in their console // Process here only our native console windows if ((ghAttachGuiClient == NULL) && !gbAttachGuiClient && (wAttributes != 7)) { wchar_t szDbgInfo[128]; msprintf(szDbgInfo, countof(szDbgInfo), L"PID=%u, SetConsoleTextAttribute=0x%02X(%u)\n", GetCurrentProcessId(), (int)wAttributes, (int)wAttributes); DebugString(szDbgInfo); } #endif lbRc = F(SetConsoleTextAttribute)(hConsoleOutput, wAttributes); if (ph && ph->PostCallBack) { SETARGS2(&lbRc, hConsoleOutput, wAttributes); ph->PostCallBack(&args); } return lbRc; }
BOOL WINAPI OnGetNumberOfConsoleInputEvents(HANDLE hConsoleInput, LPDWORD lpcNumberOfEvents) { //typedef BOOL (WINAPI* OnGetNumberOfConsoleInputEvents_t)(HANDLE hConsoleInput, LPDWORD lpcNumberOfEvents); SUPPRESSORIGINALSHOWCALL; ORIGINAL_KRNL(GetNumberOfConsoleInputEvents); BOOL lbRc = FALSE; //if (gpFarInfo && bMainThread) // TouchReadPeekConsoleInputs(); if (ph && ph->PreCallBack) { SETARGS2(&lbRc,hConsoleInput,lpcNumberOfEvents); // Если функция возвращает FALSE - реальное чтение не будет вызвано if (!ph->PreCallBack(&args)) return lbRc; } lbRc = F(GetNumberOfConsoleInputEvents)(hConsoleInput, lpcNumberOfEvents); // Hiew fails pasting from clipboard on high speed if (gbIsHiewProcess && lpcNumberOfEvents && (*lpcNumberOfEvents > 1)) { *lpcNumberOfEvents = 1; } if (ph && ph->PostCallBack) { SETARGS2(&lbRc,hConsoleInput,lpcNumberOfEvents); ph->PostCallBack(&args); } return lbRc; }