Форум: "Начинающим";
Текущий архив: 2006.09.03;
Скачать: [xml.tar.bz2];
ВнизКак послать сообщение модальному окну программы Найти похожие ветки
← →
Wood (2006-08-10 08:21) [0]Ctrl+Break, Pause.
Спасибо.
← →
Сергей М. © (2006-08-10 09:29) [1]Точно так жа как и немодальному.
← →
Wood (2006-08-10 11:22) [2]простите, что-то меня заклинило, не модальному, а консольному приложению (окну)
← →
Сергей М. © (2006-08-10 11:37) [3]Для приема win-сообщений конс.приложение должно создать окно и организовать цикл ожидания/выборки/диспетчеризации/обработки сообщений, адресуемых этому окну.
← →
clickmaker © (2006-08-10 11:43) [4]Либо PostThreadMessage, а в консоли организовать поток с циклическим PeekMessage или GetMessage
← →
Сергей М. © (2006-08-10 11:45) [5]Чувствуется, не тот огород окучиваю)
Ctrl+Break, Pause - это не сообщения, это клавиатурные команды, обрабатываемые консольным процессором.
тебе это вообще зачем надо ? Объясни ..
← →
Wood (2006-08-10 12:13) [6]Скажем так, стороннее консольное приложение производит определенные расчеты. Мне нужно прерывать (корректно) его работу или приостанавливать из своей проги.
← →
clickmaker © (2006-08-10 12:14) [7]хм.. а может SuspendThread / ResumeThread подойдет?
← →
Сергей М. © (2006-08-10 12:15) [8]А разве юзер этого не может сделать сам, с пом. клавиатуры ?
← →
Wood (2006-08-10 12:16) [9]
> хм.. а может SuspendThread / ResumeThread подойдет?
>
в данном случае - это будет некорректно.
> А разве юзер этого не может сделать сам, с пом. клавиатуры
> ?
может, но не хочет :)
← →
Ketmar © (2006-08-10 12:22) [10]GenerateConsoleCtrlEvent()?
← →
Сергей М. © (2006-08-10 12:23) [11]
> может, но не хочет
Зато, вероятно, в великим воодушевлением будет давить кнопули в твоем приложении, чтобы удалять те же гланды, но у проктолога))
Я правильно понимаю ?)
← →
Wood (2006-08-10 12:24) [12]the GenerateConsoleCtrlEvent function sends a specified signal to a console process group that shares the console associated with the calling process
сенкс, сейчас гляну...
Может еще есть варианты?
← →
Сергей М. © (2006-08-10 12:26) [13]
> Ketmar © (10.08.06 12:22) [10]
Не прокатит.
Конс.приложение скорей всего "чужое" и скорей всего запускается не программно, а "ручками".
← →
Wood (2006-08-10 12:28) [14]
> GenerateConsoleCtrlEvent
не, что-то не совсем то...
где ручка окна, которому передаю? Или это работа со своим консольным?
Также, здесь только прерывание..
← →
Wood (2006-08-10 12:30) [15]что-то сообщения запаздывают как-то...
> Зато, вероятно, в великим воодушевлением будет давить кнопули
> в твоем приложении, чтобы удалять те же гланды, но у проктолога))
>
> Я правильно понимаю ?)
правильно, поясню, это консольное окно может во время работы быть скрыто. Не 100%, но, если получится..
← →
Сергей М. © (2006-08-10 12:30) [16]
> Wood (10.08.06 12:28) [14]
> где ручка окна, которому передаю? Или это работа со своим
> консольным?
Не обязательно со "своим".
Ручку ты можешь получить с пом. OpenProcess(), но и это не спасет ОРД).
← →
Шпиён (2006-08-10 12:31) [17]хм... FindFindow - SetForegroundWindow - keybd_event (либо SendInput) ?
← →
Сергей М. © (2006-08-10 12:32) [18]
> консольное окно может во время работы быть скрыто
Интересно, как это ленивый и бестолковый юзер умудрится стартовать консольное приложение "ручками", которое при этом будет скрытым ?
← →
Сергей М. © (2006-08-10 12:32) [19]
> Шпиён (10.08.06 12:31) [17]
Это из другой оперы.
← →
Wood (2006-08-10 12:32) [20]
> Шпиён (10.08.06 12:31) [17]
возможно....
во всяком случаю возьму и это как вариант.
Но если это окно скрыто SetForegroundWindow не покатит, не хочется его показывать...
← →
Wood (2006-08-10 12:34) [21]
> Сергей М. © (10.08.06 12:32) [18]
CreateProcess
← →
Wood (2006-08-10 12:41) [22]> Сергей М. © (10.08.06 12:32) [18]
CreateProcess, STARTUPINFO->ShowWindow->SW_HIDE мож так... в общих чертах :)
← →
Сергей М. © (2006-08-10 12:43) [23]
> Wood (10.08.06 12:34) [21]
Ну раз ты программно стартуешь консоль, то имеешь полный контроль за ее вводом/выводом, и незачем при этом заморачиваться всякими брейками и паузами.
Все крутится вокруг Pipes.
← →
Wood (2006-08-10 12:46) [24]
> Все крутится вокруг Pipes.
уже горячее :)
о чем и вопрос! Не подскажите инфу, как это дело использовать. Кроме того, хотелось бы прочитать по ходу, что оно (конс. окно) там выводит, но только в своем каком-нить программном листе.
← →
Сергей М. © (2006-08-10 12:49) [25]Погугли по теме "Delphi перехват консольного ввода-вывода" - море инф-ции и море примеров)
← →
Wood (2006-08-10 13:23) [26]хорошо. Спасибо
← →
Шпиён (2006-08-10 15:06) [27]
> Сергей М. © (10.08.06 12:43) [23]
>
> > Wood (10.08.06 12:34) [21]
>
>
> Ну раз ты программно стартуешь консоль, то имеешь полный
> контроль за ее вводом/выводом, и незачем при этом заморачиваться
> всякими брейками и паузами.
>
> Все крутится вокруг Pipes.
И года не прошло, как выяснилось, что же именно происходит -)
Согласен.
ps
<offtopic>
Может я что-то не так делал, но c DOS-овским приложением "фокус не удался".... -(
</offtopic>
← →
Сергей М. © (2006-08-10 15:19) [28]
> Шпиён (10.08.06 15:06) [27]
>
>
> c DOS-овским приложением "фокус не удался"
И не только с DOS-овским - с любым Win32-консольным, нигде и ни разу в ходе своего выполнения не вызывающим CreateWindow[Ex]
← →
Шпиён (2006-08-10 15:22) [29]
> Сергей М. © (10.08.06 15:19) [28]
Я имел в виду pipes... туплю?
← →
Сергей М. © (2006-08-10 15:27) [30]
> Шпиён (10.08.06 15:22) [29]
По идее пайпы должны работать для любого рода Win32-приложений
← →
Шпиён (2006-08-10 15:46) [31]
> Сергей М. © (10.08.06 15:27) [30]
>
> > Шпиён (10.08.06 15:22) [29]
>
>
> По идее пайпы должны работать для любого рода Win32-приложений
Win32 - да.
Тем не менее с досовским приложением долго мучился...и в конце-концов обошёл (время на мучения закончилось) через keybd_event -(
(найти консольное окно по известному заголовку и классу (ConsoleWindowClass в NT/2000) проблемы не составило)
А вопрос (этак "в фоне") остался - всё же можно ли как-то работать с DOS-приложением (NTVDM) через пайпы... и если можно - то что же я делал не так.... (код "стандартный", с консольным приложением работал "на ура")
← →
Сергей М. © (2006-08-10 15:51) [32]
> Шпиён (10.08.06 15:46) [31]
Спроси у ИШ - он в этом вопргосе дока.
← →
Шпиён (2006-08-10 17:53) [33]
> Сергей М. © (10.08.06 15:51) [32]
Сам спросил, сам и отвечаю....
В принципе можно... если запускать не само dos-приложение, а "cmd /c <дос-приложение>" (если это самое дос-приложение работает со стандартным вводом-выводом, а не напрямую с видеопамятью.. иначе ни о каком перехвате вывода речи нет)
"Нормальные герои всегда идут в обход" (с)
ps 2 года назад я до этого не додумался -)
← →
Ketmar © (2006-08-10 18:14) [34]> [33] Шпиён (10.08.06 17:53)
есть речь. сделать драйвер для NTVDM. %-)
← →
Шпиён (2006-08-10 18:20) [35]
> Ketmar © (10.08.06 18:14) [34]
ну да, Земля не совсем круглая %)))
← →
Ketmar © (2006-08-10 18:24) [36]> [35] Шпиён (10.08.06 18:20)
ну я так, на всякий случай. а то вдруг очень надо, а не знают... %-)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.09.03;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.035 c