Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скриншот 
V
    Опции темы
bass
Дата 12.7.2012, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 315
Регистрация: 5.8.2007

Репутация: 2
Всего: 2



Незнаю куда даже написать, если что админы перенесите темку.... Так вот есть графическое приложение GUI.... Оно не мое... Система ХР .... Если его запускать из сервиса с взаимодействием с рабочим столом , то все нормально работает.... А если запустить без взаимодействия с рабочим столом то происходит какойто глюк.... И сам вопрос возможно ли сделать скриншот этого приложения.... И прорисовываеться оно на другой станции (SYSTEM). Давненько помню надо было сделать скрин шот из сервиса был белый экран... Так вот прорисовываеться что то на станции систем...???? Или оно запускаеться невидимым???? Что то не могу не где про это прочитать и программ таких ненашел.

 Заранее спасибо. 
PM MAIL   Вверх
feodorv
Дата 12.7.2012, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 9
Всего: 45



Цитата(bass @  12.7.2012,  18:39 Найти цитируемый пост)
то происходит какойто глюк....

Хоть намекните, какой...


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
xvr
Дата 12.7.2012, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(bass @  12.7.2012,  17:39 Найти цитируемый пост)
 И сам вопрос возможно ли сделать скриншот этого приложения.... 

Нет

Цитата(bass @  12.7.2012,  17:39 Найти цитируемый пост)
Так вот есть графическое приложение GUI....  Если его запускать из сервиса
Ой!
Цитата(bass @  12.7.2012,  17:39 Найти цитируемый пост)
 А если запустить без взаимодействия с рабочим столом
Ой ой ой!
Цитата(bass @  12.7.2012,  17:39 Найти цитируемый пост)
 то происходит какойто глюк....
Садист вы батенька  smile 


PM MAIL   Вверх
Dem_max
Дата 12.7.2012, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 16
Всего: 39



Сервис не должен иметь GUI

Это сообщение отредактировал(а) Dem_max - 12.7.2012, 20:31


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
feodorv
Дата 12.7.2012, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 9
Всего: 45



Цитата(Dem_max @  12.7.2012,  21:31 Найти цитируемый пост)
Сервис не должен иметь GUI

Не должен, конечно. 
Но если есть приложение (не своё), которое очень хочется (заказчику) запускать как сервис, то почему нет? Отказать заказчику нафиг?
У меня 16-битное приложение работает через сервис. И ничего, работает.


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
xvr
Дата 12.7.2012, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(feodorv @  12.7.2012,  21:05 Найти цитируемый пост)
Но если есть приложение (не своё), которое очень хочется (заказчику) запускать как сервис, то почему нет? Отказать заказчику нафиг?

Угу. В Win 7 сервисы напрочь от экрана оторвали (если верить MSDN)
Если надо переносимо, то делать отдельную программу с GUI (а стартовать ее можно и из сервиса)

PM MAIL   Вверх
feodorv
Дата 13.7.2012, 01:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 9
Всего: 45



Цитата(xvr @  12.7.2012,  23:01 Найти цитируемый пост)
В Win 7 сервисы напрочь от экрана оторвали (если верить MSDN)

Возможность запуска из под сервиса отдельной программы с доступом к рабочему десктопу осталась (там своё шаманство).
Правда, когда после старта Windows и сервисов первый пользователь пытается зарегистрироваться в системе, его могут огорошить предупреждением, что кто-то в системе уже есть...



--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
Dem_max
Дата 13.7.2012, 05:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 16
Всего: 39



Цитата(feodorv @ 13.7.2012,  01:05)
Цитата(xvr @  12.7.2012,  23:01 Найти цитируемый пост)
В Win 7 сервисы напрочь от экрана оторвали (если верить MSDN)

Возможность запуска из под сервиса отдельной программы с доступом к рабочему десктопу осталась (там своё шаманство).
Правда, когда после старта Windows и сервисов первый пользователь пытается зарегистрироваться в системе, его могут огорошить предупреждением, что кто-то в системе уже есть...

И правильно что оторвали, там так называемая 0 сессия, и такие штучки там не прокатят.

Цитата

Проблема: Сессия 0 (Session 0) - это основная сессия в пределах операций ядра операционной системы. В предыдущих версиях Windows приложения позволяли работать на нулевой сессии, но при любой ошибке выполнения приложения на этом уровне привело бы к краху всей операционной системы.

 В Windows Vista Session 0 теперь зарезервирована только за функциями операционной системы. Сервисы, которые попытаются работать на этом уровне и отобразить пользовательский интерфейс не смогут этого сделать, так как Session 0 больше не поддерживает ни один такой интерфейс.

 Решение: Windows Vista будет пытаться автоматически переадресовать такие интерфейсы на пользовательские сессии, но это не сработает. Лучшим решением этой проблемы является модификация приложения, чтобы стало возможно использовать глобальные объекты вместо локальных и отображать все интерфейсы в пользовательских режимах.


и читаем про это тут
http://windowsteamblog.com/windows/b/devel...-isolation.aspx

Это сообщение отредактировал(а) Dem_max - 13.7.2012, 05:02


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
bass
Дата 13.7.2012, 05:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 315
Регистрация: 5.8.2007

Репутация: 2
Всего: 2



xvr согласен что я садист, но сколько раз пробовал запускать приложение из сервиса проблем не было кроме отображения ......
И вот всетаки хочеться сделать скриншотик этого приложения, посмотрев отладчиком поток там один......
Если нельзя сделать скрин то может получиться выполнить такой код????
Код


void ServiceWorkFunction()
{
  HWINSTA hWS;
  HDESK hDT;

  //Подключаемся к оконной станции
  hWS = OpenWindowStation("Winsta0", FALSE, GENERIC_ALL);
  SetProcessWindowStation(hWS);

  //Подключаемся к рабочему столу
  hDT = OpenDesktop("default", 0, FALSE, GENERIC_ALL);
  SetThreadDesktop(hDT);
Sleep(10000);
  //SetWindowsHookEx и т.д.
}


Инжектить длл потом заморозить поток считать все EAX EDX и т.д Потом подменить EIP на адрес функции разморозить поток. Подождать заморозить вернуть все в зад и разморожить поток....

ТОлько такой код не заработал даже в собственном приложении и оно осталось невидимым.... Возможно приложение перекинуть с одной станции на другую...????

Заранее спасибо....

Добавлено через 8 минут и 51 секунду
Цитата(xvr @ 12.7.2012,  22:01)

Если надо переносимо, то делать отдельную программу с GUI (а стартовать ее можно и из сервиса)

Так я так и делаю, вот только если сервис без связи с рабочим столом то происходит глюк(виснет на 20 мин).. А приложение с прогрессом, вот и хочеться посмотреть что происходит.
PM MAIL   Вверх
xvr
Дата 13.7.2012, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(bass @  13.7.2012,  05:38 Найти цитируемый пост)
Если нельзя сделать скрин то может получиться выполнить такой код????

Скорее всего нет
Цитата

hWS = OpenWindowStation("Winsta0", FALSE, GENERIC_ALL);
Может не хватить прав (даже у LocalSystem)
Цитата

SetProcessWindowStation(hWS);
Это можно сделать только 1 раз и только в самом начала. Переключиться между разными WindowStation система не даст
Цитата

SetThreadDesktop
Аналогично - только 1 раз (для каждой нити приложения)
Цитата

А приложение с прогрессом, вот и хочеться посмотреть что происходит. 
Запустите сервис под аккаунтом пользователя и подключитесь к нему из дебагера VS

PM MAIL   Вверх
bass
Дата 13.7.2012, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 315
Регистрация: 5.8.2007

Репутация: 2
Всего: 2



Цитата(xvr @ 13.7.2012,  10:56)

Цитата

hWS = OpenWindowStation("Winsta0", FALSE, GENERIC_ALL);
Может не хватить прав (даже у LocalSystem)


Скорее всего хватит ХР .... А вот остальное я не учел что можно выполнить один раз...... Спасибо .... 
Отладчик всегда решал все вопросы, но если стоит галочка взаимодействие с рабочим столом то все проходит на ура..... А вот как запустить под отладкой в System  smile  smile  smile  smile .... Приатачиться могу..... Но уже поздно..... VS дебагерром не пользовался... Всегда пользуюсь олькой...
PM MAIL   Вверх
bass
Дата 13.7.2012, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 315
Регистрация: 5.8.2007

Репутация: 2
Всего: 2



Выкрутился правдо не корректыным способом, путем запуска своей программы и потом запуском уже того что нужно.... Просто это надо было запускать через радмин....
Всем огромное спасибо...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0544 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.