Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.09.03;
Скачать: CL | DM;

Вниз

Как послать сообщение модальному окну программы   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.048 c
15-1154654602
DimonS
2006-08-04 05:23
2006.09.03
Создание панели инструментов


2-1155215797
MASTAFA
2006-08-10 17:16
2006.09.03
Проблема с компонентом TChart


4-1145992164
GEN++
2006-04-25 23:09
2006.09.03
Разделитель в числах real


2-1154855366
APiC
2006-08-06 13:09
2006.09.03
res


15-1154906842
yura32
2006-08-07 03:27
2006.09.03
Flash