![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Скриншоты рабочего стола и окна приветствия
Alex22 © (2009-02-17 15:41:00)Здравствуйте.
Есть задача постоянно создавать скриншоты рабочего стола, как под каким-либо пользователем так и в окне Winlogon.
Более подробно вопрос описан тут: http://www.delphikingdom.ru/asp/answer.asp?IDAnswer=68586, однако подходящего решения проблемы на том форуме так и не подсказали (при использовании Synchronize скриншот получается белым в Winlogon, а при использовании TCriticalSection все казалось бы работает, но при клике на форму, либо ее перетаскивании вылетает ошибка "Out of system resources").
Если не затруднит, прошу помочь с решением задачи.
clickmaker (2009-02-18 11:28:00) [41]сразу вопросы:
почему поток ServiceThread стартует по таймеру, а не организован цикл с задержкой внутри самого потока?
почему берем GetDC(GetDesktopWindow), а ReleaseDC(0 ?
Alex22 (2009-02-18 11:04:00) [42]Форма пока "голая", вот сам исходник: http://webfile.ru/2638381
KSergey (2009-02-18 07:19:00) [43]> Alex22 (17.02.09 21:26) [2]
> Готовое не подойдет, т.к. нужно реализовать именно собственное решение, которое вероятно в будущем будет расширяться.
супер богатые велосипедисты... Ну взять какой-либо проект в исходниках, оно есть!
kami (2009-02-18 00:15:00) [44]при помощи Synchronize SetThreadDesktop не отработает на Winlogon десктопе по причине
The SetThreadDesktop function will fail if the calling thread has any windows or hookson its current desktop (unless the hDesktop parameter is a handle to the current desktop)
Так как Synchronize выполняет код в контексте "основного" потока, содержащего, как я понял, кучу окон (GUI приложение).
Вывод: Synchronize убрать куда подальше и код, где инициализируется/уничтожается Bmp в студию, чтобы можно было говорить о утечке ресурсов более конкретно.
clickmaker (2009-02-17 23:07:00) [45]то есть, я намекаю на то, что где-то имеет место быть нефиговая утечка ресурсов
скорей всего, где-то не освобождается какой-то Bitmap или Canvas
clickmaker (2009-02-17 23:01:00) [46]> ошибка "Out of system resources".
скорей всего возникает при нехватке DC
меню, TreeView, ListView и прочие контролы на форме используются?
и все-таки: зачем нужна форма?
Alex22 (2009-02-17 22:37:00) [47]
> а зачем Synchronize(SaveBmp);?
Это я тестировал, при Synchronize при клике на форму ошибка не вылатает, но вместо скришота белый экран.
А если обернуть в критическую секцию, то скриншот получается, но при клике наформу, либо перетаскивании и в общем при взаимодействии с формой вылетает ошибка "Out of system resources". Вот я и ищу ответа как избежать этой ошбки.
ПС. Форма нужна, зачем, другой впрос.
clickmaker (2009-02-17 22:17:00) [48]а зачем Synchronize(SaveBmp);?
сохранение (асли в один и тот же файл) оберни в критическую секцию.
и не совсем понятно, что за форма, и зачем она нужна
Alex22 (2009-02-17 21:26:00) [49]
> что-то мне говорит о том, что гугль должен подсказать кучу
> готовых программ по записи мультиков с монитора
Готовое не подойдет, т.к. нужно реализовать именно собственное решение, которое вероятно в будущем будет расширяться.
Но вопрос не об этом, а о том, как решить данную задачу без вышеописанных недостатков?
KSergey (2009-02-17 17:20:00) [50]казалось бы, при чем тут Synchronize и TCriticalSection?
что-то мне говорит о том, что гугль должен подсказать кучу готовых программ по записи мультиков с монитора, вероятно в некоторых из них так же поддерживается запись и во время WinLogon