Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »
Страницы: 1 2 3

управление удаленным рабочим столом


Света   (12.02.10 08:07[20]

А исходных текстов с использованием intel...jpeg у когонибудь есть ?


Slym ©   (16.02.10 13:47[21]

какие тексты нужны? заголовки к интеловской библиотеке (IJL.pas) в комплекте с самой библиотекой... а там все просто JPEG_IO.pas:

procedure SaveBmpToJpegFile  (Bitmap:TBitmap;const FileName:string; const Quality: integer);
procedure SaveBmpToJpegStream(Bitmap:TBitmap;Stream: TMemoryStream; const Quality: integer);
procedure LoadBmpFromJpegFile(Bitmap:TBitmap;const FileName:string;
 const SetPixelFormat:boolean=true; const Scale:TIJLScale=ijlFull);
procedure LoadBmpFromJpegStream(bitmap: TBitmap;  Stream:TMemoryStream;
 const SetPixelFormat:boolean=true; const Scale:TIJLScale=ijlFull);


Света   (20.02.10 12:32[22]

kolobok776@ya.ru

Мне бы исходники просмотра удаленного рабочего стола , можно даже без управления , только чтобы процессор особо программа не нагрудала , может есть у кого , заранее благодарна ! kolobok776@ya.ru


Света   (20.02.10 13:08[23]

А исходных текстов на все написанное выше может выложим ?


Плохиш ©   (21.02.10 00:51[24]


> PascalC   (25.11.08 13:14) [4]

>  а вообще -люблю изобретать велосипеды :)


> Поэтому и спрашиваю, может у кого исходники на делфях завалялись,
>  которые не жалко?

Как-то не вяжутся эти фразы. Или копи-паст уже стал называться изобретательством?


Slym ©   (24.02.10 10:45[25]

Света   (20.02.10 12:32) [22]
только чтобы процессор особо программа не нагрудала

с этим как раз основная проблема:
1. основной напрягатор проца - сжатие картинки...
2. чтоб снять напрягу - нужно убрать сжатие
3. но без сжатия сетка колом встанет :)
решение - передавать сжимая, но не каждый кадр, а только изменившуюся часть, а вот как определить что изменилось - другая задача и решается она по разному (от тупого сравнивания битмапов до драйвера дисплея)...

простой пример отправил на мыло


Света   (24.02.10 10:56[26]

Ага спасибо получила . Буду думать как обуздать mirror driver/


Света   (10.03.10 09:04[27]

кого интересует эта тема , пишите у меня усе получилось - на делфи тока!


Slym ©   (10.03.10 13:54[28]

сюда выкладывай...
или линк на архив залитый на файл хостинг (типа iFolder.ru)


Света   (15.03.10 12:28[29]

Поче6муто не крепится , завтра привреплю


Света   (08.04.10 11:15[30]

uses
 Windows, SysUtils, Graphics, MultiMon;

type
 EMonitorCaptureException = class(Exception);

 TCaptureContext = (ccActiveWindow,ccDesktopMonitor,ccActiveMonitor,
                    ccSpecificMonitor,ccAllMonitors);

function MonitorCount : Integer;

procedure CaptureScreen(aCaptureContext : TCaptureContext; destBitmap : TBitmap;aMonitorNum : Integer = 1);

procedure CaptureRect(aCaptureRect : TRect;destBitMap : TBitmap); inline;

procedure CaptureDeviceContext(SrcDC: HDC;aCaptureRect : TRect;destBitMap : TBitmap); inline;

function GetMonInfoByIdx(MonIdx : Integer) : MONITORINFO;

implementation

type
 MonIndex = record
   Idx : Integer;
   Cnt : Integer;
   MonInfo : MONITORINFO;
 end;
 PMonIndex = ^MonIndex;

function MonCountCB(hm: HMONITOR; dc: HDC; r: PRect; l: LPARAM): Boolean; stdcall;
begin
 inc(Integer(pointer(l)^));
 result := true;
end;

function MonitorCount : Integer;
begin
 result := 0;
 EnumDisplayMonitors(0,nil,MonCountCB, Integer(@result));
end;

function MonInfoCB(hm: HMONITOR; dc: HDC; r: PRect; l: LPARAM): Boolean; stdcall;
var
MI : PMonIndex;
begin
 MI := PMonIndex(pointer(l));
 Inc(MI.Cnt);
 if MI.Cnt = MI.Idx then
    GetMonitorInfo(hm,@(MI.MonInfo));
 result := true;
end;

function GetMonInfoByIdx(MonIdx : Integer) : MONITORINFO;
var
MI : MonIndex;
begin
 MI.MonInfo.cbSize := SizeOf(MI.MonInfo);
 MI.Idx := MonIdx;
 MI.Cnt := 0;
 EnumDisplayMonitors(0,nil,MonInfoCB, Integer(@MI));
 result := MI.MonInfo;
end;

procedure CaptureScreen(aCaptureContext : TCaptureContext; destBitmap : TBitmap;aMonitorNum : Integer);
var
  DC : HDC;
  h  : HWND;
  Mon : HMONITOR;
  MonInfo : MONITORINFO;
  lCapRect : TRect;
begin
 Assert(Assigned(destBitMap));
 h := 0;
 FillMemory(@lCapRect,SizeOf(TRect),0);
 dc := CreateDC('DISPLAY',nil,nil,nil);
 try
   case aCaptureContext of
     ccActiveWindow:
     begin
       h   := GetForegroundWindow;
       GetWindowRect(h,lCapRect);
     end;
     ccDesktopMonitor:
     begin
      // This gets only the first/primary monitor
       lCapRect.Right  := GetDeviceCaps (DC, HORZRES);
       lCapRect.Bottom := GetDeviceCaps (DC, VERTRES);
     end;
     ccActiveMonitor:
     begin
       h  := GetForegroundWindow;
       Mon := MonitorFromWindow(h,MONITOR_DEFAULTTONEAREST);
       MonInfo.cbSize := SizeOf(MonInfo);
       GetMonitorInfo(Mon,@MonInfo);
       lCapRect := MonInfo.rcMonitor;
     end;
     ccSpecificMonitor:
     begin
       if (MonitorCount < aMonitorNum) or (aMonitorNum < 1) then
          raise EMonitorCaptureException.CreateFmt('Monitor Index out of Bounds [%d]',[aMonitorNum]);
       MonInfo := GetMonInfoByIdx(aMonitorNum);
       lCapRect := MonInfo.rcMonitor;
     end;
     ccAllMonitors:
     begin
       lCapRect.Right  := GetSystemMetrics(SM_CXVIRTUALSCREEN);
       lCapRect.Bottom := GetSystemMetrics(SM_CYVIRTUALSCREEN);
     end;
   end;
   CaptureDeviceContext(dc,lCapRect,destBitmap);
 finally
   ReleaseDC(h, DC) ;
  end;
end;

procedure CaptureDeviceContext(SrcDC: HDC;aCaptureRect : TRect;destBitMap : TBitmap);
begin
   destBitmap.Width := aCaptureRect.Right - aCaptureRect.Left;
   destBitmap.Height := aCaptureRect.Bottom - aCaptureRect.Top;
   BitBlt(destBitmap.Canvas.Handle,
          0,
          0,
          destBitmap.Width,
          destBitmap.Height,
          SrcDC,
          aCaptureRect.Left,
          aCaptureRect.Top,
          SRCCOPY) ;
end;

procedure CaptureRect(aCaptureRect : TRect;destBitMap : TBitmap); inline;
var
dc : HDC;
begin
 dc := CreateDC('DISPLAY',nil,nil,nil);
 try
    CaptureDeviceContext(dc,aCaptureRect,destBitMap);
 finally
   ReleaseDC(0,dc);
 end;
end;
end.

Вот должно помочь!


Dennis I. Komarov ©   (09.04.10 09:36[31]


> Света   (15.03.10 12:28) [29]
> Поче6муто не крепится , завтра привреплю
> Света   (08.04.10 11:15) [30]
> uses
>  Windows, SysUtils, Graphics, MultiMon;

А вот и "завтра" наступило :)


Сергей М. ©   (09.04.10 10:37[32]

"С пробужденьицем !"
))


Slym ©   (12.04.10 07:27[33]

Думал спостят mirror driver или какойнить fastBmpCompare/DifCutter, а оно все тоже только больше букаф


Света   (15.04.10 11:48[34]

Да вот за границу с мужем ездили , вобшем у меня сорцы гднто на почте остались попробую найти среди спама , а на компе ничо не сохр . hddkill Славик решил испытать !


Anatoly Podgoretsky ©   (15.04.10 12:19[35]

Славик это кто?


brother ©   (15.04.10 12:22[36]

муж?


Сергей М. ©   (15.04.10 12:54[37]

Славик - это заслуженный муж-испытатель заграниц


Anatoly Podgoretsky ©   (15.04.10 13:16[38]

> Сергей М.  (15.04.2010 12:54:37)  [37]

Главный вредитель, заслуженый.


Света   (10.05.10 14:39[39]

Он у меня вооще вредитель самый главный - я его люблю таким какой он есть .


Страницы: 1 2 3 версия для печати
Обсуждение закрыто


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо