|
Момент отлова
|
|||
---|---|---|---|
#18+
Здравствуйте. Подскажите пожалуйста. Возможно ли отловить момент изменения изображения на экране? И возможно ли узнать в каком месте экрана(координаты) произошли изменения? Может есть в природе какая-нибудь API функция или класс .NET... Пишу аналог Radmin-а на C#. Хотелось бы не слать скриншоты(очень медленно) как это реализованно сейчас, а только изменившейся участок. Сравнение изображений попиксельно тоже получается очень медленно. Слышал про миррор драйвер, но для меня к сожалению эта тема пока не подъемная. Кто что посоветует? Заранее ОГРОМНОЕ человеческое спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2010, 07:39 |
|
Момент отлова
|
|||
---|---|---|---|
#18+
1. бейте скриншот на квадраты 2. вычисляйте хэш для каждого 3. сравнивайте с предыдущим 4. если изменился - на сервер этот маленький кусок + его относительные координаты ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2010, 10:01 |
|
Момент отлова
|
|||
---|---|---|---|
#18+
Dr_Wolf1. бейте скриншот на квадраты 2. вычисляйте хэш для каждого 3. сравнивайте с предыдущим 4. если изменился - на сервер этот маленький кусок + его относительные координаты ничем не лучше. Если не хуже. А лучше - напрямую из видеокарты массив читать и передавать. В момент вывода на монитор. Весь. Поток перенаправлять в поток без дополнительной обработки. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2010, 13:22 |
|
Момент отлова
|
|||
---|---|---|---|
#18+
Dr_Wolf, Угу, только все изменившиеся квадраты сразу. А то будет поквадратно обновлять, некрасиво получится. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2010, 19:58 |
|
Момент отлова
|
|||
---|---|---|---|
#18+
Ну вообще в WinAPI есть такие интересные функции как GetUpdateRect & GetUpdateRgn Можно через p/invoke сделать к ним обертку ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2010, 21:07 |
|
Момент отлова
|
|||
---|---|---|---|
#18+
Забыл добавить еще GetDC для отлова рабочего стола ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2010, 21:09 |
|
Момент отлова
|
|||
---|---|---|---|
#18+
Спасибо огромное за ответы и подсказки. Возникла проблема. Функция GetUpdateRect всегда возвращает false и пустой(с нулевыми значениями) RECT. В чем грабли? Спасибо. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2010, 06:56 |
|
Момент отлова
|
|||
---|---|---|---|
#18+
1) Я не говорил про GetDesktopWindow. Было GetDC 2) В каждой функции явно пропишите Charser. Судя по типам, это фиолетово, но я всегда явно специфицирую. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2010, 10:47 |
|
Момент отлова
|
|||
---|---|---|---|
#18+
К сожалению ничего не выходит :( Все равно "пустой" RECT :( Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2010, 13:45 |
|
Момент отлова
|
|||
---|---|---|---|
#18+
Удалось получить область изменения окна программы. Нужно было запустить в отдельном потоке. Работает как-то странно. Срабатывает только тогда когда я изменяю размер окна, но когда я к примеру рисую что-нибудь на форме, то ничего не происходит. Так как же получить регион(прямогольник) экрана в котором произошли изменения? Не могу сообразить... Пробовал передавать в функцию хендл раб. стола(GetDesktopWindow()), но нечего не происходит... Заранее спасибо за помощь! ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2010, 12:46 |
|
Момент отлова
|
|||
---|---|---|---|
#18+
Вот код к моему предыдущему посту : Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2010, 12:50 |
|
Момент отлова
|
|||
---|---|---|---|
#18+
Ken@tGorloPavel, Всё украдено до вас Спасибо. Но к сожалению это не то что мне нужно. Данный пример использует компонент MS RDP. Мне необходимо использовать свой алгоритм получения(экрана) изображения. И в моей программе не нужно закрывать сеанс пользователя(как в Radmin). ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2010, 12:57 |
|
Момент отлова
|
|||
---|---|---|---|
#18+
GorloPavel, То есть если заменить GetWindowDC на GetDC, у вас не работает? GetWindowDC -немного другая область применения. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2010, 13:14 |
|
Момент отлова
|
|||
---|---|---|---|
#18+
Arm79, Результат GetDC куда передавать? В GetUpdateRect? Ведь там HandleRef. Есть перегруженый с IntPtr, но я не могу понять как получить IntPtr RECT ведь его мне надо передать вторым параметром в функцию. Может я не правильно мыслю? Помогите пожалуйста, если это возможно. Желательно кодом. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2010, 13:35 |
|
Момент отлова
|
|||
---|---|---|---|
#18+
посмотрите статью вот еще получение скриншотов на Delphi : касаемо структур: Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2010, 10:40 |
|
Момент отлова
|
|||
---|---|---|---|
#18+
Вот еще И еще может быть для обработки, кроме хендлов, нужно еще BitBlt присобачить За эти дни можно было легко нарыть еще кучу ссылок... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2010, 10:50 |
|
Момент отлова
|
|||
---|---|---|---|
#18+
Большое спасибо за ссылки. К сожалению ничего не получается. Получилось отлавливать момент перерисовки самого окна формы. Пришлось переопределить WndProc и отлавливать момент перерисовки: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2010, 13:33 |
|
Момент отлова
|
|||
---|---|---|---|
#18+
Хочу спросить у автора, получилось ли это сделать ? Просто у меня сейчас такая же проблема ) пишу наподобие программу ) и ломаю голову как получить изменения на экране. В общем если сможете ответить, напишите мне, буду ждать! ) Или даже на почту Spaun1991t@mail.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2014, 01:15 |
|
Момент отлова
|
|||
---|---|---|---|
#18+
Spaun91пишу наподобие программу А что это? Экранный шпион? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2014, 14:03 |
|
Момент отлова
|
|||
---|---|---|---|
#18+
Нет, это в планах учёбы состоит. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2014, 16:41 |
|
Момент отлова
|
|||
---|---|---|---|
#18+
Spaun91Нет, это в планах учёбы состоит. Заранее извиняюсь за подрыв мотивации и авторитета преподавателей, но удержаться не могу. :-/ А чему-нибудь полезному, типа отображения на форме двух связанных таблиц они вас поучить не могут? Сама идея окошек - что соседним окнам абсолютно паралельно, что происходит в других окнах и тем более на экране как таковом... Где может пригодиться умение отслеживать изменения экрана - я просто не представляю. Даже шпион и то не получится так сделать.... Экран меняют часы, скринсейвер, автоматическая смена картинки на работчем столе, открытое окно браузера и много еще чего.... :-\ Отпад, короче... :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2014, 17:01 |
|
Момент отлова
|
|||
---|---|---|---|
#18+
D129Где может пригодиться умение отслеживать изменения экрана 1) RDP, Radmin, Team View. 2) Скрытое протоколирование работы ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2014, 17:04 |
|
Момент отлова
|
|||
---|---|---|---|
#18+
Arm79D129Где может пригодиться умение отслеживать изменения экрана 1) RDP, Radmin, Team View. 2) Скрытое протоколирование работыВсе мимо. RDP отслеживает и транслирует вызовы GDI-функций, а Radmin и TV скриншотят с определенной частотой весь экран, xor'ят с предыдущим скриншотом, и отправляют изменения. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2014, 18:12 |
|
Момент отлова
|
|||
---|---|---|---|
#18+
что мимо то? какая разница, каким образом? факт остается фактом - изменения в отображении транслируются всякими удаленными клиентами. А уж кто как делает - дело квалификации. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2014, 18:14 |
|
Момент отлова
|
|||
---|---|---|---|
#18+
Arm79А уж кто как делает - дело квалификации. Ну вот, видите, тот кто Team View писал - уже преподает. :-)))) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2014, 19:32 |
|
Момент отлова
|
|||
---|---|---|---|
#18+
Отвечу немножко по другому, саму идею я выбрал в качестве дипломной работы т.к она мне интересна. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2014, 21:40 |
|
Момент отлова
|
|||
---|---|---|---|
#18+
Spaun91Отвечу немножко по другому, саму идею я выбрал в качестве дипломной работы т.к она мне интересна. Я бы поискал API у TeamView (или у RDP) :-) Все уже придумано до нас, и уметь это использовать - важнее велосипедостроения. Ну такое у меня сугубо практическое мнение сложилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2014, 12:55 |
|
Момент отлова
|
|||
---|---|---|---|
#18+
D129Я бы поискал API у TeamView Что Вы имеете ввиду? можно ссылочку для понимания? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2014, 13:11 |
|
Момент отлова
|
|||
---|---|---|---|
#18+
_=ДОБРЫНЯ=_D129Я бы поискал API у TeamView Что Вы имеете ввиду? можно ссылочку для понимания? Да вот, хотябы для начала Во всех серьезных компонетах (Excel, Word, FineReader итп) всегда дается разработчиками какой-нибудь способ взаимодействовать с ними программно. Управлять или использовать их функции из посторонней аппликации. Что тут советовали - перехват потока на видеокарту? Ага. Как раз к пенсии закончите. :-) А используя готовую (специализированную - что особенно ценно) обертку над всеми вызовами более низкого уровня - вполне в разумные сроки. Кроме того, подобное решение совершенно лигитимно, эти компоненты никогда из системы не будут исключены, и существуют они именно для подобного. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2014, 13:31 |
|
Момент отлова
|
|||
---|---|---|---|
#18+
D129Что тут советовали - перехват потока на видеокарту? Ага. Как раз к пенсии закончите. :-)Создатели radmin'а и TV уже на пенсии что ли? Кстати, автор радмина это один человек. DirectX решает, очень просто и быстро по сравнению с GDI, всего-то нужно сделать "скриншот" видеопамяти. "Перехват потока" это что-то из области мелиорации. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2014, 13:50 |
|
Момент отлова
|
|||
---|---|---|---|
#18+
Antonariy Кстати, автор радмина это один человек. DirectX решает, очень просто и быстро по сравнению с GDI, всего-то нужно сделать "скриншот" видеопамяти. Но этот один человек ( википедия некстати его имя умалчивает или это не тот RDP? )не за месяц сделал, и вообще сделал потому, что "стоял на плечах титанов". То есть знал как использовать уже имеющееся. Не думаю, что с пенсией я так уж преувеличил - если начать писать с достаточно низкого уровня. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2014, 14:30 |
|
Момент отлова
|
|||
---|---|---|---|
#18+
D129, внимательнее :) Не RDP, а Radmin. Remote Administrator разработан Дмитрием Зноско в 1999 году. В настоящее время Дмитрий Зноско является единственным владельцем и генеральным директором компании «Фаматек». ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2014, 14:51 |
|
Момент отлова
|
|||
---|---|---|---|
#18+
D129, http://www.codeproject.com/Articles/274461/Very-fast-screen-capture-using-DirectX-in-Csharp Да вроде строчек 7 всего. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2014, 15:20 |
|
|
start [/forum/search_topic.php?author=211260&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
53ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
others: | 742ms |
total: | 924ms |
0 / 0 |