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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.09.2009, 03:11   #1
Вавел из ГМТУ
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 896
По умолчанию Неудаётся сделать скриншот экрана и отлавить клавиши

Ситуация така: есть программа мониторинга компьютера сотрудника фирмы. Она запускается от имени System (посредством Winlogon).

И вот когда подошла очередь к расширению функционала (щас работает только отслеживание удаления важных файлов) появилась проблемка:
Так как программа запущена средствами Винлогона, то она не может ни сделать скриншот экрана, ни перехватывать клавиши.

Получилось так, что начальник неможет проверить поливает ли менеджер Вася горох на своей ферме Вконтакте или же он оформляет необходимый отчёт для фирмы. Это плохо, это нужно исправить.

У меня появилось две идеи:
1. Какимто образом умудриться заставить программу отлавливать нажатие клавиш и делать скриншоты.
2. Сделать отдельно эти программки и запускать их от имени пользователя когда требуется.

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

Ну и чтобы какнибудь обрисовать картину возможных решений, я приведу процедуру, которая делает скриншот(я её скопировал гдето на форуме):

Код:
Procedure ScreenShot(Log: TListBox; Compres: Integer; PathJPG: String);
Vаr
  Bmp : TBitmаp;
  JpgImg: TJPEGImаgе;
  DC : HDC;
Bеgin
Bmp := Tbitmap.Crеаtе;
JpgImg := TJPEGImage.Create;
Bmp.Height := Screen.Height;
Bmp.Width := Screen.Width;
DC := GetDC(0);
Bitblt(Bmp.Cаnvas.Hаndle, 0, 0, Screen.Width, Screen.Height, DC, 0, 0, SRCCOPY);
ReleaseDC(0, DC);
JpgImg.Assign(bmp); //в JPG грузим Битмап
JpgImg.CompressionQuality := Compres; //устанавливаем компрессию (качество) (1-100)
JpgImg.SavеToFile(PathJPG); //сохраняем в формате JPG
//Очищаем память.
JpgImg.Free;
Bmp.Frее;
End;
add: эта процедура сохраняет белую картинку с разрешением моего монитора. Тобишь судя повсему скриншот делается, но не того чего надо...

Последний раз редактировалось Вавел из ГМТУ; 13.09.2009 в 22:17.
Вавел из ГМТУ вне форума Ответить с цитированием
Старый 13.09.2009, 03:42   #2
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,453
По умолчанию

А чего там от имени админа, просто прога эта же у работника на компе будет и ярлык к ней у директора вот он её запустит и посмотрит че там работник его делал, так же и с клавай.

А процедура работает хорошо, и Листбокс от туда надо убрать !
uberchel вне форума Ответить с цитированием
Старый 13.09.2009, 04:12   #3
Вавел из ГМТУ
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 896
По умолчанию

Процедура работает хорошо если запустить её как все нормальные приложения. Ну а если эту процедуру запустит сервис, то никакго скриншота неполучиться..
Мой сервис просто невидит рабочий стол и при запуске моим сервисом приложений никаких форм непоявляется. Тоесть он ничего неотрисовывает....

С листбоксом верно. Это я наверное уже на автомате дописывал ко всем процедурам, чтоб они знали куда лог записывать
Вавел из ГМТУ вне форума Ответить с цитированием
Старый 13.09.2009, 04:42   #4
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,453
По умолчанию

Ну тут только одно могу сказать, или запускай как обычно через реестр, либо перепиши сервис!
uberchel вне форума Ответить с цитированием
Старый 13.09.2009, 14:53   #5
Вавел из ГМТУ
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 896
По умолчанию

В каком смысле перписать сервис? Я перепишу и получиться тоже самое

Мнеб хотяб научиться запускать приложение из под сервиса так, чтобы оно "видело" рабочий стол.

Перепотрошил гугль и понял что это можно сделать както через создание потоков. Но ничего конкретного найти неполучилось...
Вавел из ГМТУ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
приложение System Charcoal Windows 12 24.05.2009 15:09
System V AhmetJan Linux (Ubuntu, Debian, Red Hat, CentOS, Mint) 7 01.03.2009 13:09
как заставить запуститься эту графику Aion Паскаль, Turbo Pascal, PascalABC.NET 2 15.12.2008 20:07
System Time IgorKr Win Api 4 02.12.2007 20:51