Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.09.2013, 06:51   #1
Tip.the.besT
------------------
Пользователь
 
Регистрация: 15.08.2011
Сообщений: 78
По умолчанию Создания скрина из службы.

Несколько недопонимаю создания скрина вот этим кодом:
Код:
procedure ScreenShot(PathToSave: string);
var
bmp: TBitmap;
DC: HDC;
SCan: TCanvas;
begin
bmp:=TBitmap.Create;
DC:=GetDC(0);
      SCan := TCanvas.Create;
      SCan.Handle := DC;
    bmp.Width := screen.Width;
    bmp.Height := screen.Height;
      Bmp.Canvas.CopyRect(Rect(0, 0, Bmp.Width, Bmp.Height), SCan,
        Rect(0, 0, Screen.Width, Screen.Height));
      bmp.SaveToFile(PathToSave);
ReleaseDC(0, DC);
bmp.Free;
scan.Free;
end;
Когда юзаю его с обычной программы, VCL, то всё нормально. Но из службы он не работает. Просто сохраняет белый холст.

Переменная DС это я как понимаю хэндл, но чего?

Что делают эти строки:
Код:
DC:=GetDC(0);
ReleaseDC(0, DC);
C YBA}|{EH|/|EM Tip.the.besT
Tip.the.besT вне форума Ответить с цитированием
Старый 10.09.2013, 06:54   #2
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

у службы свой отдельный рабочий стол на котором обычно ничего нет...
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 10.09.2013, 06:58   #3
Tip.the.besT
------------------
Пользователь
 
Регистрация: 15.08.2011
Сообщений: 78
По умолчанию

Дак получается DC это хэндл рабочего стола? Как - тогда "правильный" рабочий стол отловить?
C YBA}|{EH|/|EM Tip.the.besT
Tip.the.besT вне форума Ответить с цитированием
Старый 10.09.2013, 17:54   #4
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,775
По умолчанию

У службы где-то должна быть галка "Взаимодействовать с рабочим столом".
Vapaamies вне форума Ответить с цитированием
Старый 10.09.2013, 18:14   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Vapaamies, на Win7 и старше - может про это забыть. У rouse где-то был пример работы с рабочим столом из сервиса.
Человек_Борща вне форума Ответить с цитированием
Старый 10.09.2013, 18:19   #6
asmprog
Пользователь
 
Регистрация: 10.08.2013
Сообщений: 67
По умолчанию

На C++ проще дать пример:
http://pastebin.com/WhnFeAhq

Код:
WinSta0
        Default
        Disconnect
        Winlogon
Service-0x0-3e7$
Service-0x0-3e4$
Service-0x0-3e5$
SAWinSta
        SADesktop
Service-0x0-17dd2$
        sbox_alternate_desktop_0xD0C
asmprog вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Джойстик для тач скрина Plasm Gamedev - cоздание игр: Unity, OpenGL, DirectX 8 18.11.2012 10:34
Создание Скрина и отсылка egorzenit Помощь студентам 4 13.07.2011 15:39
Вывод скрина thumbshots seoglamur666 PHP 0 09.06.2011 02:57
аналог радмина, сжатие скрина strbb Мультимедиа в Delphi 10 21.12.2010 15:18
Как получить с видеофайла 3 скрина ? kakawkin Мультимедиа в Delphi 1 31.05.2010 21:05