亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? fserver.pas

?? delphi的Indy9 Demo
?? PAS
字號:
{-----------------------------------------------------------------------------
 Demo Name: ImageServer
 Author:    Allen O'Neill - Springboard Technologies Ltd  - http://www.springboardtechnologies.com
 Copyright: Indy Pit Crew
 Purpose: *** WINDOWS DEMO ONLY ***
 History:
 Date:      27/10/2002 01:09:00
 Checked with Indy version: 9.0 - Allen O'Neill - Springboard Technologies Ltd  - http://www.springboardtechnologies.com
-----------------------------------------------------------------------------
 Notes:

 Demonstrates sending images / data using streams using TCP server / client

 Note - adding items to the list box as per this demo is NOT threadsafe - you should
 use the demo from "NotifyDemo" to learn how to syncronisse safely using Indy

}


unit fServer;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, IdBaseComponent, IdComponent, IdTCPServer, StdCtrls,IdGlobal,
  SyncObjs;

type
  TfrmServer = class(TForm)
    IdTCPServer: TIdTCPServer;
    lstRequests: TListBox;
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure IdTCPServerDisconnect(AThread: TIdPeerThread);
    procedure IdTCPServerExecute(AThread: TIdPeerThread);
    procedure IdTCPServerConnect(AThread: TIdPeerThread);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  CS : TCriticalSection;
  Function GetList : String;
  procedure ScreenShot(x : integer; y : integer; Width : integer; Height : integer; bm : TBitMap);
  end;

var
  frmServer: TfrmServer;
  sFilePattern : String;

implementation

{$R *.DFM}

// activates TCP server
procedure TfrmServer.FormCreate(Sender: TObject);
begin
CS := TCriticalSection.Create;
IdTCPServer.Active := true;
if IdTCPServer.Active = true then
    lstRequests.items.append('Active');
end;

procedure TfrmServer.IdTCPServerDisconnect(AThread: TIdPeerThread);
begin
lstRequests.items.append('Dis-Connected');
end;

// interpets request and sends back data
procedure TfrmServer.IdTCPServerExecute(AThread: TIdPeerThread);
var
    s, sCommand, sAction : string;
    fStream : TFileStream;
    tBM : tbitmap;
begin
CS.Enter;
try



s := uppercase(AThread.Connection.ReadLn);
sCommand := copy(s,1,3);
sAction := copy(s,5,100);

if sCommand = 'LST' then
    begin
    AThread.Connection.WriteLn(GetList);
    AThread.Connection.Disconnect;
    end
else
if sCommand = 'PIC' then
    begin
    if FileExists(ExtractFileDir(ParamStr(0)) + '\images\' + sAction) then
        Begin
        lstRequests.items.add('Serving up: ' + sAction);
        // open file stream to image requested
        fStream := TFileStream.Create(ExtractFileDir(ParamStr(0)) + '\images\' + sAction,fmOpenRead	+ fmShareDenyNone);
        // copy file stream to write stream
        AThread.Connection.OpenWriteBuffer;
        AThread.Connection.WriteStream(fStream);
        AThread.Connection.CloseWriteBuffer;
        // free the file stream
        FreeAndNil(fStream);
        lstRequests.items.add('File transfer completed');
        End
    else
    AThread.Connection.WriteLn('ERR - Requested file does not exist');
    AThread.Connection.Disconnect;
    End
else
if sCommand = 'SRN' then
    begin
    // in production version you would use a unique file name such as one generated
    // from a tickcount plus clint IP / id etc.
    // take snapshot
    lstRequests.items.add('Taking screen snap shot');
    tBM := TBitmap.Create;
    ScreenShot(0,0,Screen.Width,Screen.height,tBM);
    if fileExists (ExtractFileDir(ParamStr(0)) + '\images\ScreenShot.BMP') then DeleteFile(ExtractFileDir(ParamStr(0)) + '\images\ScreenShot.BMP');
    tBM.SaveToFile(ExtractFileDir(ParamStr(0)) + '\images\ScreenShot.BMP');
    tBm.FreeImage;
    FreeAndNil(tBM);

    lstRequests.items.add('Serving up: SCREENSHOT.BMP');
    // open file stream to image requested
    fStream := TFileStream.Create(ExtractFileDir(ParamStr(0)) + '\images\ScreenShot.BMP',fmOpenRead	+ fmShareDenyNone);
    // copy file stream to write stream
    AThread.Connection.OpenWriteBuffer;
    AThread.Connection.WriteStream(fStream);
    AThread.Connection.CloseWriteBuffer;
    // free the file stream
    FreeAndNil(fStream);
    lstRequests.items.add('File transfer completed');

    AThread.Connection.Disconnect;
    End
else
if (sCommand <> 'LST') and (sCommand <> 'PIC') and (sCommand <> 'SRN') then
    Begin
    AThread.Connection.WriteLn('ERR : Unknown command / action');
    AThread.Connection.Disconnect;
    end;
except
on E : Exception do
ShowMessage(E.Message);
End;
CS.Leave;
end;

procedure TfrmServer.IdTCPServerConnect(AThread: TIdPeerThread);
begin
lstRequests.items.add('Server connected');
end;

// Simple function to search given path and return BMP file names in comma delimited format
// NOTE! .. assumes in demo version there is a sub-folder off executable called 'images" that contains
// sample valid BMP images
Function TfrmServer.GetList : String;
var
    SR : TSearchRec;
    S : String;
Begin
sFilePattern := ExtractFileDir(ParamStr(0)) + '\images\*.bmp';
S := '';
if FindFirst(sFilePattern,faAnyFile,SR) = 0 then
    Begin
    s := SR.Name;
    while FindNext(sr) = 0 do
        s := s + ',' + SR.Name;
    End;
result := s;
End;


// This ScrenShot code taken from the frequent usenet postings of
// Joe C. Hecht <joehecht@gte.net>  http://home1.gte.net/joehecht/index.htm
procedure TfrmServer.ScreenShot(x : integer; y : integer; Width : integer; Height : integer; bm : TBitMap);
var
  dc: HDC; lpPal : PLOGPALETTE;
begin
{test width and height}
  if ((Width = 0) OR (Height = 0)) then exit;
  bm.Width := Width;
  bm.Height := Height;
{get the screen dc}
  dc := GetDc(0);
  if (dc = 0) then exit;
{do we have a palette device?}
  if (GetDeviceCaps(dc, RASTERCAPS) AND
      RC_PALETTE = RC_PALETTE) then
      begin
      {allocate memory for a logical palette}
        GetMem(lpPal, sizeof(TLOGPALETTE) + (255 * sizeof(TPALETTEENTRY)));
      {zero it out to be neat}
        FillChar(lpPal^, sizeof(TLOGPALETTE) + (255 * sizeof(TPALETTEENTRY)), #0);
      {fill in the palette version}
        lpPal^.palVersion := $300;
      {grab the system palette entries}
        lpPal^.palNumEntries :=
          GetSystemPaletteEntries(dc,0,256,lpPal^.palPalEntry);
        if (lpPal^.PalNumEntries <> 0) then
            begin
            {create the palette}
            bm.Palette := CreatePalette(lpPal^);
            end;
        FreeMem(lpPal, sizeof(TLOGPALETTE) + (255 * sizeof(TPALETTEENTRY)));
      end;
{copy from the screen to the bitmap}
BitBlt(bm.Canvas.Handle,0,0,Width,Height,Dc,x,y,SRCCOPY);
{release the screen dc}
ReleaseDc(0, dc);
end;



procedure TfrmServer.FormDestroy(Sender: TObject);
begin
FreeAndNil(CS);
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲人精品午夜| 精品国产一区二区三区忘忧草| 久久精品免视看| 国产福利一区二区三区| 国产精品欧美一区二区三区| 成人理论电影网| 樱花草国产18久久久久| 欧美日韩在线三级| 免费观看在线综合色| 精品国产污网站| 成人白浆超碰人人人人| 亚洲精品v日韩精品| 欧美日韩中文另类| 久久精品国产精品亚洲精品| 久久精品免费在线观看| 91欧美激情一区二区三区成人| 亚洲最新在线观看| 日韩欧美一级精品久久| 成人在线综合网| 亚洲综合色区另类av| 欧美一级二级三级乱码| 国产99一区视频免费| 一级女性全黄久久生活片免费| 91精品国产综合久久久蜜臀图片| 国内精品嫩模私拍在线| 中文字幕一区二区在线观看| 欧美日高清视频| 国产另类ts人妖一区二区| 亚洲欧美一区二区三区极速播放| 欧美喷潮久久久xxxxx| 国产精品456| 一区二区三区鲁丝不卡| 久久日韩粉嫩一区二区三区| 色婷婷香蕉在线一区二区| 另类成人小视频在线| 亚洲色图欧美激情| 日韩欧美卡一卡二| 日本韩国精品一区二区在线观看| 久久精品国产网站| 亚洲国产日韩精品| 国产精品日韩成人| 欧美一级爆毛片| 在线观看日韩毛片| 国产成人8x视频一区二区| 午夜激情综合网| 成人免费小视频| 久久九九99视频| 正在播放一区二区| 色老汉一区二区三区| 国产a区久久久| 六月婷婷色综合| 亚洲亚洲精品在线观看| 中文字幕欧美日韩一区| 日韩一区二区三区观看| 在线免费观看一区| 97se亚洲国产综合自在线| 国产在线精品一区二区| 三级在线观看一区二区| 亚洲免费视频成人| 国产精品久久久久久久久免费相片 | 2023国产精华国产精品| 色一情一乱一乱一91av| 国产成人av影院| 国内精品视频一区二区三区八戒| 成人黄色国产精品网站大全在线免费观看| 亚洲一区二区视频在线| 中文字幕一区免费在线观看| 国产欧美一区二区精品久导航| 欧美一级电影网站| 欧美麻豆精品久久久久久| 欧美最新大片在线看| 色综合久久久久久久久久久| www.色综合.com| 不卡免费追剧大全电视剧网站| 国产成人免费在线| 韩国精品久久久| 久久精品国产99国产精品| 日韩av网站在线观看| 日韩av中文在线观看| 日韩精品电影在线观看| 亚洲不卡一区二区三区| 亚洲午夜电影网| 亚洲第一二三四区| 亚洲gay无套男同| 午夜欧美2019年伦理| 偷拍日韩校园综合在线| 日韩影院精彩在线| 美女尤物国产一区| 国产一区二区三区av电影 | 精品美女一区二区| 久久亚洲精华国产精华液| 精品福利一区二区三区| 久久免费电影网| 中文文精品字幕一区二区| 中文字幕免费不卡| 亚洲久草在线视频| 亚洲国产欧美在线| 日本视频在线一区| 国产美女在线精品| 成人蜜臀av电影| 一本大道av伊人久久综合| 欧美性受xxxx黑人xyx性爽| 欧美精品一区二区久久婷婷| 欧美草草影院在线视频| 国产女同性恋一区二区| 亚洲女人小视频在线观看| 亚洲国产精品久久久久婷婷884 | 蜜臀91精品一区二区三区| 国产在线播精品第三| av在线免费不卡| 欧美挠脚心视频网站| 欧美精品一区二区不卡| 亚洲啪啪综合av一区二区三区| 性做久久久久久久免费看| 精品一区二区在线播放| 成人免费av资源| 91麻豆精品国产自产在线| 久久色.com| 一区二区三区资源| 精品在线免费视频| 91国产精品成人| 精品国产伦一区二区三区免费| 国产精品短视频| 青青草91视频| 色婷婷久久久亚洲一区二区三区 | 一区二区三区中文免费| 乱一区二区av| 在线观看国产一区二区| 精品国产乱码久久久久久闺蜜| 国产精品久线观看视频| 人妖欧美一区二区| 91视频在线看| 国产日韩欧美综合在线| 亚洲成av人片| 91在线国产观看| 亚洲黄色免费电影| 国产精品一区二区在线观看不卡 | 天天操天天干天天综合网| 粉嫩蜜臀av国产精品网站| 欧美日本一道本| 亚洲丝袜美腿综合| 国产最新精品免费| 91精品国产免费久久综合| 亚洲男人电影天堂| 丁香婷婷综合色啪| 日韩精品一区二区三区蜜臀| 亚洲图片有声小说| av网站免费线看精品| 久久久久国产精品麻豆ai换脸 | 蜜桃视频一区二区三区在线观看| 91玉足脚交白嫩脚丫在线播放| 久久夜色精品一区| 蜜桃91丨九色丨蝌蚪91桃色| 欧美优质美女网站| 亚洲欧美一区二区久久| 成人激情免费网站| 久久久青草青青国产亚洲免观| 青青草原综合久久大伊人精品优势| 欧亚一区二区三区| 亚洲色图都市小说| 成人18视频在线播放| 国产日韩欧美在线一区| 韩国视频一区二区| 日韩久久免费av| 久久99国产乱子伦精品免费| 91精品国产麻豆国产自产在线 | 26uuuu精品一区二区| 久久99精品国产麻豆不卡| 日韩精品一区二区三区三区免费 | 美女国产一区二区三区| 欧美高清hd18日本| 日韩二区三区在线观看| 欧美浪妇xxxx高跟鞋交| 丝袜美腿亚洲综合| 日韩一级片网站| 免费在线观看一区二区三区| 欧美一区二区三区在线观看视频 | 成人精品电影在线观看| 欧美激情在线一区二区| 成人av午夜电影| 亚洲欧美激情插 | 日韩亚洲欧美一区二区三区| 麻豆专区一区二区三区四区五区| 日韩久久免费av| 高清不卡一二三区| 亚洲少妇最新在线视频| 欧美日韩你懂的| 久久国产成人午夜av影院| 国产色婷婷亚洲99精品小说| 大白屁股一区二区视频| 亚洲色图视频网| 欧美日本一区二区在线观看| 亚洲高清免费观看高清完整版在线观看| 欧美乱熟臀69xxxxxx| 日韩在线播放一区二区| 久久久九九九九| 成人国产精品免费网站| 综合中文字幕亚洲| 91精品国产综合久久小美女| 精品无人码麻豆乱码1区2区|