Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.13;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.023 c
7-42183
PaHaN
2003-08-25 20:48
2003.11.13
WinXP (ассемблерные вставки)


1-41418
axx
2003-10-29 14:15
2003.11.13
DLL version info


4-42295
Olfi
2003-09-09 23:28
2003.11.13
Как узнать титл активного окна?


1-41606
Bonni
2003-10-26 21:44
2003.11.13
дочерные окна


3-41107
неважно
2003-10-22 17:23
2003.11.13
Проблемка, посоветуйте плиз (двоичные данные)