![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Добрый день форумчане выручайте.Перехватываю вывод консоли.Все работает вывод перехватывается,но
консоль перестает реагировать на отсылаемые ей клавиатурные сообщения.При обычном запуске все нормально консоль реагирует на клавиатурные сообщения.При запуске с перехватом указываю start.hStdInput := GetStdHandle(STD_INPUT_HANDLE) т.е не переназначать вход, так же приравнивал это значение нулю. Все равно консоль перестает реагировать на сообщения клавиатуры.Куда копать? |
#2
|
||||
|
||||
![]() так если hStdInput перехватил, то на клавиатуру не будет реагировать. разве не так должно быть...
Пишу программы за еду. __________________ |
#3
|
|||
|
|||
![]() start.hStdInput := GetStdHandle(STD_INPUT_HANDLE) означает не перехватывать вход.
|
#4
|
||||
|
||||
![]() а что GetStdHandle(STD_INPUT_HANDLE) не равно нулю??? глянь отладчиком.
Пишу программы за еду. __________________ |
#5
|
|||
|
|||
![]() GetStdHandle(STD_INPUT_HANDLE) приравнивал нулю увидел в одном из примеров-результат тот же вывод перехватывается, на ввод клавиатуры не реагирует.
|
#6
|
|||
|
|||
![]() GetStdHandle(STD_INPUT_HANDLE)=0 под отладчиком.
|
#7
|
||||
|
||||
![]() ну вот видишь, а говоришь:
Цитата:
можно в консоли "dir" или "ver" написать и нажать Enter. Пишу программы за еду. __________________ |
#8
|
|||
|
|||
![]() У тебя не консоль, а какой-то компонент на форме (Memo,Listbox...).
Скачай Mplayer.exe запусти через CreateProcess-это будет консоль. |
#9
|
||||
|
||||
![]() так форму сдвинь, консоль под ней. GUI только для отображения перехвата. ListBox там нет. да и на панели задач ее видно.
Пишу программы за еду. __________________ |
#10
|
|||
|
|||
![]() Извини действительно консоль под формой.Можешь предоставить исходный код?
|
#11
|
||||
|
||||
![]() код очень сырой, чисто для эксперимента. хэндлы не закрываются, для чтения вместо потока используется таймер
![]() Код:
Пишу программы за еду. __________________ |
#12
|
|||
|
|||
![]() NumLock.Огромное спасибо.Сейчас буду пробовать о результате отпишусь.
|
#13
|
|||
|
|||
![]() NumLock.Все что требовалось работает.100 лет жизни тебе.Кое что изменил.
Скрыл консоль и переделал отправку клавиатурных сообщений.Странно но твой метод по отправке не работает (Procedure WriteConsole).Может тебе пригодится отправляю так: h:=findWindow('ConsoleWindowClass',nil); if h<>0 then begin setforegroundwindow(h);// дает возможность отправлять, если окно свернуто //или скрыто SendMessage(h, WM_CHAR, Word('p'), 0); end else showmessage('Окно не найдено.'); Это отправка символа 'p' -пауза. |
#14
|
||||
|
||||
![]() в моем примере отправка консоли работает. кнопка "send dir", например, работает в Windows 7 x32 и Windows 10 x64.
Пишу программы за еду. __________________ |
#15
|
|||
|
|||
![]() У меня стоит Windows xp и консолью запускаю Mplayer.exe.Главное способ
отправки ему сообщений клавиатуры найден. |