How to use WriteConsoleInput() in MFC?
I can use WriteConsoleInput() in console application. But when I try to use writeConsoleInput() in MFC it not type any thing in command window. This's my code.
Code:
DWORD WINAPI test(LPVOID lp)
{
system("edit");
return 0;
}
void CVirusScanDlg::OnBnClickedFormat()
{
HANDLE hConIn = GetStdHandle(STD_INPUT_HANDLE);
HANDLE hConOut = GetStdHandle(STD_OUTPUT_HANDLE);
DWORD dwTmp;
INPUT_RECORD ir[5];
CreateThread(NULL, 0, test,(LPDWORD)0, 0, &dwTmp);
Sleep( 1000 );
ir[0].EventType = KEY_EVENT;
ir[0].Event.KeyEvent.bKeyDown = TRUE;
ir[0].Event.KeyEvent.dwControlKeyState = 0;
ir[0].Event.KeyEvent.uChar.UnicodeChar = 'u';
ir[0].Event.KeyEvent.wRepeatCount = 1;
ir[0].Event.KeyEvent.wVirtualKeyCode = 'U';
ir[0].Event.KeyEvent.wVirtualScanCode = MapVirtualKey('U', MAPVK_VK_TO_VSC);
ir[1].EventType = KEY_EVENT;
ir[1].Event.KeyEvent.bKeyDown = TRUE;
ir[1].Event.KeyEvent.dwControlKeyState = 0;
ir[1].Event.KeyEvent.uChar.UnicodeChar = 'c';
ir[1].Event.KeyEvent.wRepeatCount = 1;
ir[1].Event.KeyEvent.wVirtualKeyCode = 'C';
ir[1].Event.KeyEvent.wVirtualScanCode = MapVirtualKey('C', MAPVK_VK_TO_VSC);
ir[2].EventType = KEY_EVENT;
ir[2].Event.KeyEvent.bKeyDown = TRUE;
ir[2].Event.KeyEvent.dwControlKeyState = 0;
ir[2].Event.KeyEvent.uChar.UnicodeChar = 'i';
ir[2].Event.KeyEvent.wRepeatCount = 1;
ir[2].Event.KeyEvent.wVirtualKeyCode = 'I';
ir[2].Event.KeyEvent.wVirtualScanCode = MapVirtualKey('I', MAPVK_VK_TO_VSC);
ir[3].EventType = KEY_EVENT;
ir[3].Event.KeyEvent.bKeyDown = TRUE;
ir[3].Event.KeyEvent.dwControlKeyState = 0;
ir[3].Event.KeyEvent.uChar.UnicodeChar = VK_RETURN;
ir[3].Event.KeyEvent.wRepeatCount = 1;
ir[3].Event.KeyEvent.wVirtualKeyCode = VK_RETURN;
ir[3].Event.KeyEvent.wVirtualScanCode = MapVirtualKey(VK_RETURN, MAPVK_VK_TO_VSC);
ir[4].EventType = KEY_EVENT;
ir[4].Event.KeyEvent.bKeyDown = FALSE;
ir[4].Event.KeyEvent.dwControlKeyState = 0;
ir[4].Event.KeyEvent.uChar.UnicodeChar = VK_RETURN;
ir[4].Event.KeyEvent.wRepeatCount = 1;
ir[4].Event.KeyEvent.wVirtualKeyCode = VK_RETURN;
ir[4].Event.KeyEvent.wVirtualScanCode = MapVirtualKey(VK_RETURN, MAPVK_VK_TO_VSC);
dwTmp = 0;
WriteConsoleInput(hConIn, ir, 5, &dwTmp);
//FlushConsoleInputBuffer(hConIn);
//WriteConsole(hConIn, "uci\n", 5, &dwTmp, NULL);
//printf(" dwTmp = %d ", dwTmp);
Sleep(1000);
//return 0;
}
when I run this code it not type anything in command window. How to use WriteConsoleInput() in MFC ?
Re: How to use WriteConsoleInput() in MFC?
Doesn't matter MFC or not, but in case you create Win32 App but not Win32 Console App, there is no console attached to the process.
AttachConsole function
Re: How to use WriteConsoleInput() in MFC?