Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Как показать окно процесса

Ответить
Настройки темы
C/C++ - [решено] Как показать окно процесса

Аватара для EvgeniyQQQ

Пользователь


Сообщения: 133
Благодарности: 21

Профиль | Сайт | Отправить PM | Цитировать


Добрый день. Написал сервис, который вызывает внешний процесс. При этом созданный процесс запускается скрытым (наследует какое-то свойство сервиса). Необходимо, показать этот процесс (его окно).
Делаю так:
Код: Выделить весь код
   STARTUPINFO si;
   ZeroMemory( &si, sizeof(si) );
   si.cb = sizeof(si);
   si.dwFlags = STARTF_USESHOWWINDOW;
   si.wShowWindow = SW_SHOW;
   ZeroMemory( &m_pi1, sizeof(m_pi1) );
   CreateProcess( NULL, wcmd, NULL, NULL, FALSE, 0, NULL, NULL, &si, &m_pi1);
   //...
Увы окно приложения не появляется. Подскажите, пожалуйста, как показать окно процесса?
Как я понял, у приложения запускаемого как сервис, есть ряд ограничений. Где бы об этом почитать?

-------
"Не соглашайся ни на что, кроме совершенства!" - Анонимный автор.
"Совершенство достигается только к моменту полного краха." - К.Н.Паркинсон.


Отправлено: 12:28, 12-11-2007

 

Аватара для DillerInc

Обратный инженер


Сообщения: 644
Благодарности: 47

Профиль | Отправить PM | Цитировать


Цитата EvgeniyQQQ:
Необходимо, показать этот процесс (его окно) »
...создаваемый процесс -- это GUI-приложение??
Цитата EvgeniyQQQ:
При этом созданный процесс запускается скрытым »
...можно конкретнее??Что значит скрытым??
Цитата EvgeniyQQQ:
Подскажите, пожалуйста, как показать окно процесса? »
...а почему нельзя запустить процесс с настройками по умолчанию, т.е. вообще не трогать структуру STARTUPINFO??

-------
То,что неясно,следует выяснить.То,что трудно творить,следует делать с великой настойчивостью. © Конфуций


Отправлено: 15:15, 12-11-2007 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для EvgeniyQQQ

Пользователь


Сообщения: 133
Благодарности: 21

Профиль | Сайт | Отправить PM | Цитировать


Цитата DillerInc:
...создаваемый процесс -- это GUI-приложение?? »
Да.
Цитата DillerInc:
..можно конкретнее??Что значит скрытым?? »
Тоесть не отображается окно приложения.
Цитата DillerInc:
..а почему нельзя запустить процесс с настройками по умолчанию, т.е. вообще не трогать структуру STARTUPINFO?? »
Можно. Я пробовал. Эффект тот же.

-------
"Не соглашайся ни на что, кроме совершенства!" - Анонимный автор.
"Совершенство достигается только к моменту полного краха." - К.Н.Паркинсон.


Отправлено: 17:24, 12-11-2007 | #3


Аватара для DillerInc

Обратный инженер


Сообщения: 644
Благодарности: 47

Профиль | Отправить PM | Цитировать


EvgeniyQQQ
Кстати,а функция CreateProcess точно возвращает единицу,иными словами,процесс создаётся??

Вот меня сейчас немного заинтересовал параметр lpEnviroment этой же функции.
Цитата MSDN:
If this parameter is NULL, the new process uses the environment of the calling process
...вот я правда не совсем представляю,как эти переменные окружения будут влиять на создаваемый процесс...

-------
То,что неясно,следует выяснить.То,что трудно творить,следует делать с великой настойчивостью. © Конфуций


Отправлено: 19:54, 12-11-2007 | #4


Аватара для EvgeniyQQQ

Пользователь


Сообщения: 133
Благодарности: 21

Профиль | Сайт | Отправить PM | Цитировать


DillerInc,
Цитата DillerInc:
иными словами,процесс создаётся?? »
Да, процесс создается. Его можно увидеть через диспетчер задач.
CreateProcess() возвращает 1.

-------
"Не соглашайся ни на что, кроме совершенства!" - Анонимный автор.
"Совершенство достигается только к моменту полного краха." - К.Н.Паркинсон.


Отправлено: 15:46, 13-11-2007 | #5


Аватара для EvgeniyQQQ

Пользователь


Сообщения: 133
Благодарности: 21

Профиль | Сайт | Отправить PM | Цитировать


DillerInc, спасибо за участие.

Нашёл ответ на просторах интернета.
Нужно было указать запускаемому процессу, что его окно принадлежит текущему рабочему столу.

Код: Выделить весь код
   STARTUPINFO si;
   ZeroMemory( &si, sizeof(si) );
   si.cb = sizeof(si);
   si.dwFlags = STARTF_USESHOWWINDOW;
   si.wShowWindow = SW_SHOW;
   si.lpDesktop = _T("Winsta0\\default"); //Необходимо добавить вот это параметр !!!
   ZeroMemory( &m_pi1, sizeof(m_pi1) );
   CreateProcess( NULL, wcmd, NULL, NULL, FALSE, 0, NULL, NULL, &si, &m_pi1);
   //...

-------
"Не соглашайся ни на что, кроме совершенства!" - Анонимный автор.
"Совершенство достигается только к моменту полного краха." - К.Н.Паркинсон.


Отправлено: 16:03, 14-11-2007 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Как показать окно процесса

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - [решено] Надо показать диалоговое окно с произвольным текстом. volk1234 Скриптовые языки администрирования Windows 10 24-01-2010 14:17
Как определить окно, у которого нет Title, Control's и собственного процесса Baldr_log AutoIt 2 25-08-2009 18:26
Proxy/NAT - Как показать, что я с Украины viter_alex Сетевые технологии 3 11-10-2008 02:30
[решено] Как показать во всей сети папку которую расшарил в AD? Keo Microsoft Windows NT/2000/2003 5 09-11-2006 15:19
Показать окно редактора visual basic Alexandra Программирование и базы данных 2 10-09-2004 11:17




 
Переход