| Автор
| Сообщение |
|
|
|
Цитата |
|
| Есть ли в Дельфи команда позволяющая получить "экран" соседнего компьютера в ЛВС?? |
|
| В начало |
|
 |
|
|
 |
 Gelios
Oracle-вый маньяк, Админ

Возраст: 37
Знак зодиака: 
Зарегистрирован: 10.03.2005
Сообщения: 6141
Откуда: Яблочный рай
|
|
|
Цитата |
|
А в Делфи нет даже команды чтобы получить "экран" своего компа, не говоря уже о соседнем... _________________ нельзя давать всем всего, ибо всех много, а всего мало |
|
| В начало |
|
 |
 Dave
Модератор

Возраст: 36
Знак зодиака: 
Зарегистрирован: 08.08.2002
Сообщения: 1208
Откуда: Yaroslavl
|
|
|
Цитата |
|
Можешь использовать либо DameWare Utilites либо VNC. _________________ Не убегай от снайпера - умрешь уставшим ! |
|
| В начало |
|
 |
 Gelios
Oracle-вый маньяк, Админ

Возраст: 37
Знак зодиака: 
Зарегистрирован: 10.03.2005
Сообщения: 6141
Откуда: Яблочный рай
|
|
|
Цитата |
|
to Dave
Ты человека не развращай
DameWare Utilites либо VNC это не есть команды делфи _________________ нельзя давать всем всего, ибо всех много, а всего мало |
|
| В начало |
|
 |
 Gelios
Oracle-вый маньяк, Админ

Возраст: 37
Знак зодиака: 
Зарегистрирован: 10.03.2005
Сообщения: 6141
Откуда: Яблочный рай
|
|
|
Цитата |
|
to Dave
Ты человека не развращай
DameWare Utilites либо VNC это не есть команды делфи _________________ нельзя давать всем всего, ибо всех много, а всего мало |
|
| В начало |
|
 |
DrPass
Знающий :) /Почетный Модератор/

Возраст: 31
Знак зодиака: 
Зарегистрирован: 02.05.2002
Сообщения: 5709
Откуда: Донецк
|
|
|
Цитата |
|
Более того, этой команды нет ни в одном языке программирования. Даже в Сях
Фишка в том, что задача решается написанием (или скачиванием из инета - кому как) двух программ. Одна должна быть запущена на этом самом "соседнем компьютере", она будет захватывать экран и передавать по сети. А вторая на твоем будет принимать его и отображать. Как видишь, "командой Delphi" тут не обойтись _________________ Да пребудет с вами Сила! |
|
| В начало |
|
 |
|
|
|
Цитата |
|
Прямо какой-то Application Server. (вариант ?1) А второй вариант - необязательно передавать данные об экране, а достаточно лишь передавать данные о перемещении мыши по экрану (ее динамической составляющей, как было сказано в теме Юмор и нажатий клавиш клавиатуры. Трафик гораздо меньше, а результат тот же. (Правда вы все это, наверное, уже знаете.  |
|
| В начало |
|
 |
 Gelios
Oracle-вый маньяк, Админ

Возраст: 37
Знак зодиака: 
Зарегистрирован: 10.03.2005
Сообщения: 6141
Откуда: Яблочный рай
|
|
|
Цитата |
|
ага и как в случае знания траектории мыши можно воссоздать изображение на экране???
Удаленный контроль и скриншоты удаленного компа имхо вещь разная...
а если какая то прога в фоновом режиме экран перерисовывает, то как мышь эту информацию передаст?
Во всех прогах удаленного администрирования передаются скриншоты. чем чаще, тем выше трафик и динимичнее изображение... _________________ нельзя давать всем всего, ибо всех много, а всего мало |
|
| В начало |
|
 |
 Dave
Модератор

Возраст: 36
Знак зодиака: 
Зарегистрирован: 08.08.2002
Сообщения: 1208
Откуда: Yaroslavl
|
|
|
Цитата |
|
Ну, можно же передавать не все целиком изображение, а только изменившуюся его часть (как это вроде бы делают Terminal Services) _________________ Не убегай от снайпера - умрешь уставшим ! |
|
| В начало |
|
 |
|
|
 |
|
|
|
Цитата |
|
Ну, естественно, второй вариант предполагает некую синхронизацию между изображениями на экранах двух операторов.
Я просто говорю про случай, когда необходимо динамически изменять изображения на экране при работе по медленной линии связи. Тогда подходит тот вариант, про который я говорил выше. |
|
| В начало |
|
 |
 Шурик
Я живу тут....

Возраст: 42
Знак зодиака: 
Зарегистрирован: 15.01.2003
Сообщения: 1951
Откуда: Киев
|
|
|
Цитата |
|
to Валерий
Тут уже заводили об этом разговор:
http://delphi.chertenok.ru/forum/viewtopic.php?t=1360
http://delphi.chertenok.ru/forum/viewtopic.php?t=1240
Даже обсудили малость детальней чем здесь.
to Gelios
Ты уж извини, я малость тебя подправлю насчёт своего экрана. Команды получения экрана конечно нет. Но скопировать его куда-то можно всего парой API команд.
DC := GetDC( 0 )
BitBlt( Canvas.Handle, ..., DC, ..., SrcCopy )
Копировать логичнее всего в TBitmap, размеры можно взять из Screen (или из GetSystemMetrics).
to Dave
Идея передавать только изменения экрана не нова. А как практически выделить эти изменения? Я немного думал над этим вопросом. Вижу пару вариантов, но оба весьма туманно:
1. Как-то сравнивать картинку текущего экрана и предыдущего, как-то выделять маску изменившихся частей...
2. Перехватывать системные сообщения рисования для всех (!) окон. После отрисовки записывать соответствующий прямоугольник или регион в список изменённых областей. С некоторой перериодичностью посылать содержимое изменённых мест и очищать список изменений. _________________ Ответ готов, готов ли твой вопрос? |
|
| В начало |
|
 |
 Dave
Модератор

Возраст: 36
Знак зодиака: 
Зарегистрирован: 08.08.2002
Сообщения: 1208
Откуда: Yaroslavl
|
|
|
Цитата |
|
to Шурик
Тут... как бы поточнее выразиться... есть два варианта:
1. Видеть все, что делается на экране удаленной машины (типа как в случае с DameWare Mini Remote Control, либо VNC, Back Orifice, Net Bus).
2. Принцип Terminal Services.
Теперь, если целью ставится непрерывное получение экрана удаленного компа, то тут надо прикинуть как сделать так, чтобы сетевой трафик был сведен к возможному минимуму, и загрузка ресурсов удаленного компа тоже была минимальной.
А если же цель - передать изображение в определенный момент времени, то тут без особых проблем. Аппликуха Клиент-Сервер. Запрос - Ответ. _________________ Не убегай от снайпера - умрешь уставшим ! |
|
| В начало |
|
 |
 Gelios
Oracle-вый маньяк, Админ

Возраст: 37
Знак зодиака: 
Зарегистрирован: 10.03.2005
Сообщения: 6141
Откуда: Яблочный рай
|
|
|
Цитата |
|
to Шурик
| Цитата: | | Ты уж извини, я малость тебя подправлю насчёт своего экрана. Команды получения экрана конечно нет. Но скопировать его куда-то можно всего парой API команд. |
Ну если бы человек спросил, с помощью каких функций API получить образ экрана... А то ведь он спросил, какая команда, при этом подразумевалась видимо команда Делфи..
| Цитата: | | Более того, этой команды нет ни в одном языке программирования. Даже в Сях |
Кстати, я сейчас вспомнил, что у нас в школе на Ямахах в Бэйсике была команда получения экрана любого компа в сети
Это была именно команда Бэйсика а не оператор....А также была команда посылки команд на любой комп....Чем я иногда и пользовался.... _________________ нельзя давать всем всего, ибо всех много, а всего мало |
|
| В начало |
|
 |
|
|
|
Цитата |
|
| Шурик писал(а): | to Валерий
Идея передавать только изменения экрана не нова. А как практически выделить эти изменения? Я немного думал над этим вопросом. Вижу пару вариантов, но оба весьма туманно:
1. Как-то сравнивать картинку текущего экрана и предыдущего, как-то выделять маску изменившихся частей...
|
Разбиваем экран на области (строки и столбцы). Пусть у нас 100 строк и 150 столбцов. Передаём на управляющий компьютер весь экран целиком, а у себя подсчитываем контрольную сумму каждой выделенной нами области экрана и более крупных надобластей, вплоть до контрольной суммы всего экрана. Эти контрольные суммы у себя на компьютере и запоминаем.
Теперь по таймеру (или висим на событиях) всплываем, считаем контрольную сумму всего экрана, если изменений нет - засыпаем. Если изменения есть, то проверяем по нисходящей от более крупных областей к более мелким областям те места экрана, которые изменились. Именно эти области пересылаем клиенту, сохраняем изменившиеся контрольные суммы и опять засыпаем.
Метод поиска объектов по контрольным суммам очень хорошо зарекомендовал себя в антивирусных программах. При огромном количестве записей в вирусных базах (в нашем случае наименьших контроллируемых областей экрана) поиск нужных объектов (в нашем случае изменившихся минимально выделенных областей) работает мгновенно. |
|
| В начало |
|
 |
|