Win32ASM Консольный ввод, томограф IDA и скальпель SoftICE


    d8ef8794 ЛДСП Бодега темный |     

вводим invoke ReadConsole, hInput, addr


; вводим invoke ReadConsole, hInput, addr InputBuffer, 10, ADDR nRead, NULL
;печатаем "You typed > " invoke WriteConsole, hOutPut, addr Msg2, 12, addr nWriten, NULL
;печатаем то, что ввели invoke WriteConsole, hOutPut, addr InputBuffer, nRead, addr nWriten, NULL
;задержка, чтобы полюбоваться invoke Sleep, 2000d
;выход invoke ExitProcess,0 Main endp
; ######################################################
end Main
ПРИМЕЧАНИЕ: Ручной подсчет числа выводимых символов хорошим стилем программирования, конечно же, не назовешь :(. Немного попозже я расскажу, как делать это дело правильно ;). И да простят меня продвинутые программеры...
  Строка LOCAL InputBuffer[128] :BYTE резервирует 128 байт памяти под строку символов, которую мы будем запрашивать при помощи апишной функции ReadConsole. Вот ее описание: BOOL ReadConsole( HANDLE hConsoleInput, // handle to console input buffer LPVOID lpBuffer, // data buffer DWORD nNumberOfCharsToRead, // number of characters to read LPDWORD lpNumberOfCharsRead, // number of characters read LPVOID lpReserved // reserved );
  Попутно даю урок английского языка, который сам знаю хреново (академиев не кончал, но высшее образование вам даду): "number of characters to read" переводится как "число символов, подлежащих чтению", а "number of characters read" - как "число прочитанных символов". Наверное. Согласитесь, это существенная разница ;).

Содержание  Назад  Вперед