Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Платформы Windows Mobile и Windows Embedded > Консольная программа в Windows Mobile


Автор: ksili 8.12.2009, 07:07
Мне надо, чтобы программа работала в скрытом виде, без окна, периодически выполняя определённые действия. Обнаружил, что консольная программа в WM как раз никак не видна. Подходит ли она для этой цели или могут быть какие-то проблемы? 

Автор: Alexeis 8.12.2009, 10:38
Цитата(ksili @  8.12.2009,  06:07 Найти цитируемый пост)
Мне надо, чтобы программа работала в скрытом виде, без окна, периодически выполняя определённые действия. Обнаружил, что консольная программа в WM как раз никак не видна. Подходит ли она для этой цели или могут быть какие-то проблемы?  

  Так ты просто не создавай окно совсем и программа будет невидимой. Windows приложение прекрасно работает и без окон. Самые насущные сообщения отправляются в очередь обработки сообщений потока. 

Автор: ksili 8.12.2009, 11:33
Alexeis, спасибо.
Я уже чуть-чуть по-другому придумал. Вообще, у меня есть уже программа, с окном. Но в WM юэеру обычно обломно, что что-то висит на экране, может просто закрыть или выгрузить. А надо чтобы программа была в памяти постоянно. Поэтому думал разделить код так: все настройки в проге с окном, а основная работа - в консольной программе. 
Но сейчас придумал, как ещё больше сократить работу по переделке:
екзешник будет один - тот же что и был. Но запускаться он будет с разными параметрами командной строки. Если пар-ра нет - то покажет настройки, если есть - то выполнит нужную работу и опять спать. Запуск в нужный момент будет устанавливать себе сама же - функцией CeRunAppAtTime. 
Вот только я тут немного не знаю ещё как это делается (если кто делал, поделитесь): 
во-первых, как в WM свернуть программу, не выгружая её. Я посылал WM_SHOWWINDOW с параметром SW_HIDE. Такое ощущение, что оно выгружается.
во-вторых, вот загружается программа, ищет нет ли уже запущенного экземпляра, если его нет, то в принципе понятно, а если есть, то что? Надо слать какое-то сообщение? Надо регистрировать свое сообщение или можно слать WM_COMMAND с каким-то своим параметром?

Добавлено через 8 минут и 14 секунд
Цитата(ksili @  8.12.2009,  15:33 Найти цитируемый пост)
во-первых, как в WM свернуть программу, не выгружая её. Я посылал WM_SHOWWINDOW с параметром SW_HIDE. Такое ощущение, что оно выгружается.

а нет, вроде бы просто сворачивается. Но вот мне нужно чтобы его не было в списке загруженных программ. Как-то надо скрыть.

Автор: ksili 8.12.2009, 12:33
Сворачивать получилось функцией SetWindowPos, вот только после этого оно некорректно разворачивается: заголовок и нижнее меню появляются, а клиентская часть не прорисовывается. Пробовал после SetWindowPos посылать WM_PAINT - не помогло.

Автор: ksili 10.12.2009, 07:59
Поправил параметры SetWindowPos и все нормально заработало. Программа скрывается и восстанавливается. Причём в списке загруженных программ её не видно, когда она свёрнута. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)