Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1155290985
GeLLeR
2006-08-11 14:09
2006.09.03
Label


2-1155310398
Demand
2006-08-11 19:33
2006.09.03
Внешний IP


2-1154957234
Triton
2006-08-07 17:27
2006.09.03
Union


15-1155305161
wl
2006-08-11 18:06
2006.09.03
Программка для получения реального URL к файлу


15-1155009545
vidiv
2006-08-08 07:59
2006.09.03
решение системы неравенств





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский