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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? fserver.pas

?? some Indy demo 4
?? PAS
字號:
{ $HDR$}
{**********************************************************************}
{ Unit archived using Team Coherence                                   }
{ Team Coherence is Copyright 2002 by Quality Software Components      }
{                                                                      }
{ For further information / comments, visit our WEB site at            }
{ http://www.TeamCoherence.com                                         }
{**********************************************************************}
{}
{ $Log:  110838: fServer.pas 
{
{   Rev 1.0    26/10/2004 13:04:58  ANeillans    Version: 9.0.17
{ Verified
}
{-----------------------------------------------------------------------------
 Demo Name: ImageServer
 Author:    Allen O'Neill
 Copyright: Indy Pit Crew
 Purpose: *** WINDOWS DEMO ONLY ***
 History:
-----------------------------------------------------------------------------
 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 synchronise safely using Indy

Verified:
  Indy 9:
    D7: 26th Oct 2004 Andy Neillans
}


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 client 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.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩av一二三| 亚洲自拍偷拍网站| 国产精品一级片在线观看| 日韩三级在线免费观看| 日韩福利电影在线观看| 7777精品伊人久久久大香线蕉 | 欧美激情中文字幕一区二区| 另类综合日韩欧美亚洲| 精品国产乱码久久久久久久久| 久久精品国产精品亚洲精品| 欧美不卡一区二区三区四区| 国产一区在线观看视频| 国产女人水真多18毛片18精品视频 | 不卡的电影网站| 亚洲精品老司机| 欧美日韩成人在线一区| 激情综合色播激情啊| 欧美激情中文字幕一区二区| 91美女福利视频| 日日摸夜夜添夜夜添亚洲女人| 精品裸体舞一区二区三区| 国产九九视频一区二区三区| 国产精品对白交换视频| 欧美猛男男办公室激情| 国产一区二区三区观看| 亚洲人成精品久久久久| 69堂亚洲精品首页| 懂色av一区二区三区免费看| 一区二区三区欧美在线观看| 日韩欧美电影一二三| 成人av在线观| 麻豆一区二区三区| 自拍偷自拍亚洲精品播放| 欧美裸体bbwbbwbbw| 国产成人一级电影| 天涯成人国产亚洲精品一区av| 国产无人区一区二区三区| 在线观看一区不卡| 国产成人在线视频播放| 亚洲成人自拍一区| 欧美国产日韩一二三区| 在线播放亚洲一区| 99国产欧美久久久精品| 日本怡春院一区二区| 亚洲欧美日韩久久精品| 久久久激情视频| 884aa四虎影成人精品一区| 成人av网站在线观看| 蜜臀久久99精品久久久画质超高清| 亚洲欧美综合网| 2022国产精品视频| 69av一区二区三区| 91香蕉视频mp4| 国产suv精品一区二区6| 青青草91视频| 亚洲狠狠爱一区二区三区| 日本一区二区三区国色天香| 欧美一区二区三区免费大片| 91久久精品国产91性色tv| 国产成人福利片| 国内精品视频一区二区三区八戒 | 亚洲高清中文字幕| 亚洲嫩草精品久久| 国产精品成人免费精品自在线观看| 日韩午夜小视频| 欧美一二三区在线观看| 欧美日韩一区视频| 欧美体内she精视频| 色综合天天综合色综合av| 国产成人免费在线| 国产高清久久久久| 国产精品自在在线| 国产成人综合亚洲网站| 国产精品1区2区| 国产麻豆精品久久一二三| 激情五月婷婷综合| 国产在线不卡一卡二卡三卡四卡| 免费高清在线一区| 六月婷婷色综合| 国产中文一区二区三区| 久久99深爱久久99精品| 久久er精品视频| 国产精品一级黄| 成人av网站免费观看| 99久久精品久久久久久清纯| www.在线成人| 91久久精品一区二区三| 91久久人澡人人添人人爽欧美| 欧洲精品视频在线观看| 欧美男同性恋视频网站| 欧美一区在线视频| 精品动漫一区二区三区在线观看| 久久亚洲欧美国产精品乐播| 久久综合狠狠综合久久综合88 | 欧美一区二区三区免费观看视频| 日韩欧美一区在线观看| 2023国产精华国产精品| 国产精品欧美一级免费| 亚洲欧美国产高清| 天天综合网天天综合色| 美女在线观看视频一区二区| 国内不卡的二区三区中文字幕| 国产夫妻精品视频| 色婷婷综合五月| 日韩视频免费观看高清完整版 | 亚洲欧美日韩国产综合| 午夜精品福利视频网站| 卡一卡二国产精品| www.欧美日韩国产在线| 欧美综合视频在线观看| 日韩欧美国产系列| 中文字幕一区二区在线观看| 亚洲福利一区二区三区| 经典三级视频一区| 91黄色免费版| 精品国产免费人成电影在线观看四季 | 天堂va蜜桃一区二区三区 | 欧美一级欧美三级| 亚洲国产精品ⅴa在线观看| 亚洲色图制服丝袜| 日本大胆欧美人术艺术动态 | 色综合色综合色综合色综合色综合| 欧美日韩国产小视频| 久久久久久久久久久黄色| 亚洲精品免费一二三区| 精品一区二区影视| 在线这里只有精品| 国产偷国产偷精品高清尤物| 亚洲综合久久久| 国产不卡免费视频| 欧美一区中文字幕| 亚洲美女少妇撒尿| 国产成人综合亚洲网站| 制服丝袜激情欧洲亚洲| 自拍偷在线精品自拍偷无码专区| 精品中文字幕一区二区| 欧日韩精品视频| 国产精品夫妻自拍| 国产福利一区二区三区| 欧美一卡2卡3卡4卡| 亚洲精品日韩综合观看成人91| 久久av中文字幕片| 91精品国产色综合久久不卡蜜臀| 成人欧美一区二区三区白人| 精品一区二区三区免费播放| 精品视频一区二区不卡| 亚洲视频在线一区| 成人少妇影院yyyy| 久久久久久久久久久久电影| 视频一区二区三区在线| 91精品福利视频| 亚洲男女毛片无遮挡| 成人av综合一区| 中文字幕不卡三区| 国内精品免费**视频| 欧美一级久久久久久久大片| 亚洲一二三区在线观看| 91蜜桃在线免费视频| 亚洲欧洲精品一区二区三区| 国产超碰在线一区| 久久综合久久99| 久久国产三级精品| 日韩欧美国产一区二区三区| 日韩精品免费视频人成| 欧美日韩一级片网站| 亚洲专区一二三| 欧美三级韩国三级日本一级| 一区二区三区免费网站| 在线观看不卡视频| 午夜成人在线视频| 在线电影欧美成精品| 日本欧美韩国一区三区| 日韩视频免费直播| 国产一区二区电影| 欧美国产精品劲爆| eeuss影院一区二区三区| 亚洲欧美日韩精品久久久久| 日本高清不卡在线观看| 亚洲综合免费观看高清在线观看| 欧美最新大片在线看| 亚洲va在线va天堂| 日韩一级高清毛片| 国产剧情一区在线| 成人欧美一区二区三区在线播放| 国产在线精品免费av| 国产精品免费网站在线观看| eeuss鲁一区二区三区| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| jlzzjlzz亚洲日本少妇| 亚洲精品视频观看| 欧美一级国产精品| 国产**成人网毛片九色 | 日日夜夜免费精品视频| 日韩丝袜美女视频| 国产白丝精品91爽爽久久| 1024精品合集| 日韩欧美在线1卡| 成人va在线观看| 亚洲国产成人tv| 欧美一区二区三区性视频|