Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];

Вниз

скопировать экран   Найти похожие ветки 

 
Magical   (2003-10-26 18:40) [0]

У нас есть сеть из компьютеров и мне необходимо передавать изображение экрана одного компьютера на другой или другие(вообщем знаете программу Radmin, что-то наподобии реализовано, тоесть человек на другом компьютере полностью видит все действия пользователя, такое ощущение что это не удаленная машина, а твоя(ну разве что цвета не 32бита)). Пожалуйста, не надо мне советовать нестрадать фигней, а спокойно использовать её. У меня цели несколько иные, чем у неё.

В чём собственно состоит проблема:
Нужно скопировать экран. Пробую

var bitmap: TBitmap;
dc: HDC;
w, h: integer;
begin
bitmap := TBitmap.Create;
w := GetSystemMetrics(SM_CXSCREEN);
h := GetSystemMetrics(SM_CYSCREEN);
bitmap.Width := w;
bitmap.Height := h;
dc := GetDC(0);
BitBlt(bitmap.Canvas.Handle, 0, 0, w, h, dc, 0, 0, SRCCOPY);
if dc <> 0 then ReleaseDC(0, dc);
bitmap.Free;
end;

но даже если делать это через 1сек.(что явно недостаточно, необходимо хотя-бы гдето около 25 Гц(тоеть 25 кадров в секунду)) налицо явные торморза, при каждом снимке компьютер на мгноение как-бы это сказать, ну вообщем это очень заметно(мышь передвигается рывками и т.д.)
При этом, я еще картинку не сохраняю...

Помогите, знаю что как то можно(Radmin). Буду очень благодарен за любой совет.


 
Nikolay M.   (2003-10-26 21:03) [1]

1) Передается копия не всего экрана, а только измененнной части.
2) Использовать сжатие.


 
Дмитрий В. Белькевич   (2003-10-26 21:10) [2]

Чудес не бывает (с). Не сможешь ты сделать то, что хочешь, по крайней мере на том железе, что сейчас есть. Передать через сеть 25 фпс 800x600x32бита - нереально. Да и все остальное тоже малореально. 25 фпс сграбить, перетащить через шину - тяжело. RAdmin, видел, как грабит? 0.3 - 0.5 fps, и при том, что в 16 цветах. Если он стоит каких дурнях 1000-1200, дурень жутко начинает тормозить. А ты хочешь на 2 порядка больше информации передать, можешь представить, какое железо для этого нужно.


 
Magical   (2003-10-26 22:53) [3]

Ну ладно, резко поумерим аппетиты....
А как всетаки копировать, чтобы не тормозило


 
Zergling   (2003-10-27 06:33) [4]

Может bitmap := TBitmap.Create; создать при create формы, а уничтожать при Destroy формы. А то он утебя все время создается и уничтожается - тоже время надо.


 
Спрашивающий_   (2003-10-27 07:19) [5]

И еще размры Bitmap задавать один раз при создании Bitmap и при смене разрешения
это сыкономит примерно 1/4 времени выполнения кода.


 
Злая девочка   (2003-10-27 07:43) [6]

Попробуй скопировать симуляцией клавиш

procedure ScreenToClipboard;
begin
keybd_event(VK_SNAPSHOT,1,0,0);
keybd_event(VK_SNAPSHOT,1,KEYEVENTF_KEYUP,0);
end;


 
Школьник2   (2003-10-27 07:43) [7]

Узнай через какие функции работает служба терминалов в W2000Server.


 
Song   (2003-10-27 08:40) [8]

2Magical (26.10.03 22:53) [3]
Тебе ж сказали: пересылать только измённые части.


 
zapped   (2003-10-27 10:05) [9]

2Злая девочка (27.10.03 07:43) [6]
> Попробуй скопировать симуляцией клавиш
даа, предложение соответствует нику :))), а если(?) юзер работает с буфером обмена?



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.033 c
14-42067
PVOzerski
2003-10-23 11:56
2003.11.13
Что бы это значило (CMOS)?


6-41865
Ancara
2003-09-10 11:41
2003.11.13
Событие соедининия с интернетом


1-41207
Alibaba
2003-11-01 21:27
2003.11.13
Show


14-41943
Stupid
2003-10-20 15:47
2003.11.13
Разъем ATX12V


1-41444
ewgeny
2003-10-29 12:26
2003.11.13
TService и формы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский