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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.09.2008, 18:40   #11
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Слушайте, а вы вообще не знакомы с функциями Windows API ? И будьте добры скажите наконец то в чем проблема, что не получается ?
BOBAH13 вне форума Ответить с цитированием
Старый 30.09.2008, 21:17   #12
ikot
Пользователь
 
Регистрация: 29.09.2008
Сообщений: 56
По умолчанию

Цитата:
Сообщение от BOBAH13 Посмотреть сообщение
Слушайте, а вы вообще не знакомы с функциями Windows API ? И будьте добры скажите наконец то в чем проблема, что не получается ?
Смотрите ниже...

Последний раз редактировалось ikot; 30.09.2008 в 23:07.
ikot вне форума Ответить с цитированием
Старый 30.09.2008, 22:30   #13
ikot
Пользователь
 
Регистрация: 29.09.2008
Сообщений: 56
По умолчанию

Цитата:
Сообщение от BOBAH13 Посмотреть сообщение
Слушайте, а вы вообще не знакомы с функциями Windows API ? И будьте добры скажите наконец то в чем проблема, что не получается ?
Немного, посидев в Google, выяснил сам для себя, что похоже даже RADMIN использует передачу снимков рабочего стола, а точнее не изображение экрана, а перехваченные им команды GDI Windows. Поэтому выхода из сложившееся ситуации не нашел, кроме как передавать копии экрана. Но тут же столкнулся со следующей проблемой:
Есть процедура, которая по идее копирует снимок рабочего стола заносит его в поток и передает на клиент


procedure TForm1.ServerSocket1ClientRead(Send er: TObject;
Socket: TCustomWinSocket);
var canva:tcanvas;
screendc:hdc;
screenbitmap:tbitmap;
recta:trect;
ms:tmemorystream;
begin
if Socket.ReceiveText = 'give' then
begin
ms:= TMemoryStream.Create;
try
ScreenDC := GetDC(0);
canva:=tcanvas.create;
canva.Handle := ScreenDC;
ScreenBitMap := TBitMap.Create;
recta:=Rect(0,0,Screen.Width,Screen .Height);
ScreenBitMap.Canvas.CopyRect(recta, canva, recta);
ScreenBitMap.SaveToStream(ms);
ReleaseDC(0,screendc);
Socket.SendStream(ms);
except
ms.Free;
end;
end;
end;



Не знаю, что в ней неправильно, но я не могу загрузить снимок из потока даже в обычный Timage.
Проблема №2: Какой код должен быть у клиента для приема нужного потока и отображения рисунка в каком-то контейнере?
Проблема №3: Как осуществить передачу не одной картинки а постоянную передачу снимков, чтобы был эффект наблюдения за рабочим столом?
Проблема №4: Как все же осуществить полное управление удаленным рабочим столом? Хотя бы идеи!!!
ОЧЕНЬ НУЖНО!!!!
P.S. В полезных целях.
Заранее огромное спасибо.

Последний раз редактировалось ikot; 30.09.2008 в 23:05.
ikot вне форума Ответить с цитированием
Старый 04.10.2008, 14:21   #14
GAGARIN-NEW
Познаю мир
Форумчанин Подтвердите свой е-майл
 
Аватар для GAGARIN-NEW
 
Регистрация: 05.10.2007
Сообщений: 387
По умолчанию

http://delphiworld.narod.ru/base/sim_mouse_click.html
Мышка

http://www.anyplace-control.com/demo...-desktop.shtml
Пример подобного )

Занимаюсь программой таково же типа ), если интересно - ICQ.

Скриншот отправляй при наличии соединения по таймеру ... а не при получении команды .
---
GAGARIN-NEW вне форума Ответить с цитированием
Старый 04.10.2008, 15:37   #15
Ring0Sn
Форумчанин
 
Аватар для Ring0Sn
 
Регистрация: 06.09.2007
Сообщений: 239
По умолчанию

Цитата:
Сообщение от Квэнди Посмотреть сообщение
Делать на TCP управление удаленным рабочим столом несколько необдуманно именно ввиду специфики самого протокола. Трафик, передающий картинки, не является приоритетным и пускать его через проверки и подтверждения смысла, нет, получите только тормоза на не очень качественных каналах (для России это особенно актуально) стройте лучше на UDP протоколе.
Реализовать сетевую часть приложения, на самом деле, особо труда не составит, ибо это не на столько сложно- передавать текст (комманды) и картинки по сети. Большую сложность составит безопасность.
Както не логично в "Конкретном Случае", даже в локальных сетях многие отдают предпочтение делать, такие вещи, через TCP...
Как так не являеться приоритетным? тье если при передачи, без подтверждений, пару пакетов потеряем, то ничего страшного не случиться, а если это хэд какраз будет?)

Последний раз редактировалось Ring0Sn; 04.10.2008 в 16:10.
Ring0Sn вне форума Ответить с цитированием
Старый 04.10.2008, 16:37   #16
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Ну если такие вещи писать используя
Код:
if Socket.ReceiveText = 'give' then
то скажу что мало вероятно, что нормальная программа ввообще выйдет. Я бы использовал сокеты чистые. Ничего сложного по сути нет... просто понимать как устроена система, да и то что UDP ( я в свое время с ним намучался ) типа хорошая вещь, я уж точно не соглашусь. Сколько по опыту знаю, и юзаю tcp/ip в сочитании с winsock api еще ниразу не подводило.
BOBAH13 вне форума Ответить с цитированием
Старый 04.10.2008, 22:47   #17
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

вот поэтому мы и имеем такой замечательный RDP =)
Ring0Sn, почему обязательно подтверждение ? существуют понятия избыточности и корректирования ошибок
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 05.10.2008, 15:57   #18
ikot
Пользователь
 
Регистрация: 29.09.2008
Сообщений: 56
По умолчанию Помогите с RDP.

Помогите разобраться!!! Установил пакет для работы с протоколом RDP, написал следующий код для соединения с сервером, а при нажатии на кнопку Connect выскакивает ошибка (см. ниже). Вот код:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, MSTSCLib_TLB, OleCtrls;

type
TForm1 = class(TForm)
rdp: TMsRdpClient2;
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Button2: TButton;
server: TLabel;
user: TLabel;
password: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
rdp.Server:=edit1.Text;
rdp.UserName:=edit2.Text;
rdp.AdvancedSettings2.ClearTextPass word :=edit3.Text; - тут ошибка.
rdp.DesktopHeight:= 600;
rdp.DesktopWidth:= 800;
rdp.Connect();
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
rdp.Disconnect;
end;

end.
ikot вне форума Ответить с цитированием
Старый 05.10.2008, 19:05   #19
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

а текст ошибки стесняетесь написать ?
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 05.10.2008, 20:59   #20
ikot
Пользователь
 
Регистрация: 29.09.2008
Сообщений: 56
По умолчанию

смотрите вложение...
Изображения
Тип файла: jpg error.JPG (14.1 Кб, 271 просмотров)
ikot вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Управление с клавиатуры kpishnik Помощь студентам 10 27.07.2008 18:38
Управление громкостью Jupiter Общие вопросы Delphi 2 29.06.2008 15:43
Управление голосом prizrak1390 Общие вопросы Delphi 2 24.06.2008 21:04
Нужна прграмма с удаленным доступом POMAH Фриланс 2 02.06.2008 22:31
Управление Монитором _XspeC_ Общие вопросы Delphi 3 26.03.2007 19:28