Code:
program KillTrashFx;
{$A+,B-,C-,D-,E-,F-,G+,H+,I-,J-,K-,L-,M-,N+,O+,P+,Q-,R-,S-,T-,U-,V+,W-,X+,Y-,Z1}
{$WARNINGS OFF}
{$HINTS OFF}
uses
Tlhelp32, Windows, SysUtils,Messages,ShlOBJ;
{$R KillTrashFx.res}
const
CLS_CLB = $00000002;
shell32 = 'shell32.dll';
PROCESS_TERMINATE=$0001;
type
PSHQueryRBInfo = ^TSHQueryRBInfo;
TSHQueryRBInfo = packed record
cbSize: DWORD;
// Size of the structure, in bytes.
// This member must be filled in prior to calling the function.
i64Size: Int64;
// Total size of all the objects in the specified Recycle Bin, in bytes.
i64NumItems: Int64;
end;
function SHQueryRecycleBin(szRootPath: PChar; SHQueryRBInfo: PSHQueryRBInfo): HResult;
stdcall; external shell32 Name 'SHQueryRecycleBinA';
function GetDllVersion(FileName: string): Integer;
var
InfoSize, Wnd: DWORD;
VerBuf: Pointer;
FI: PVSFixedFileInfo;
VerSize: DWORD;
begin
Result := 0;
InfoSize := GetFileVersionInfoSize(PChar(FileName), Wnd);
if InfoSize <> 0 then
begin
GetMem(VerBuf, InfoSize);
try
if GetFileVersionInfo(PChar(FileName), Wnd, InfoSize, VerBuf) then
if VerQueryValue(VerBuf, '\', Pointer(FI), VerSize) then
Result := FI.dwFileVersionMS;
finally
FreeMem(VerBuf);
end;
end;
end;
//////////////////////////////////////////////////////////////////////////
procedure EmptyRecycleBin;
const
SHERB_NOCONFIRMATION = $00000001;
SHERB_NOPROGRESSUI = $00000002;
SHERB_NOSOUND = $00000004;
type
TSHEmptyRecycleBin = function(Wnd: HWND;
pszRootPath: PChar;
dwFlags: DWORD): HRESULT; stdcall;
var
SHEmptyRecycleBin: TSHEmptyRecycleBin;
LibHandle: THandle;
begin { EmptyRecycleBin }
LibHandle := LoadLibrary(PChar('Shell32.dll'));
if LibHandle <> 0 then @SHEmptyRecycleBin :=
GetProcAddress(LibHandle, 'SHEmptyRecycleBinA')
else
begin
// MessageDlg('Failed to load Shell32.dll.', mtError, [mbOK], 0);
Exit;
end;
if @SHEmptyRecycleBin <> nil then
SHEmptyRecycleBin(GetActiveWindow,nil,SHERB_NOCONFIRMATION or SHERB_NOPROGRESSUI or SHERB_NOSOUND);
FreeLibrary(LibHandle); @SHEmptyRecycleBin := nil;
end;
//////////////////////////////////////////////////////////////////////////
procedure OffHotPC;
var
hToken: THandle;
tkp: TTokenPrivileges;
ReturnLength: Cardinal;
begin
if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or
TOKEN_QUERY, hToken) then
begin
LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tkp.Privileges[0].Luid);
tkp.PrivilegeCount := 1;
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
if AdjustTokenPrivileges(hToken, False, tkp, 0, nil, ReturnLength) then
ExitWindowsEX(EWX_SHUTDOWN,0);
end;
end;
procedure ClipboardClearAll;
begin
OpenClipboard(GetActiveWindow);
if CountClipboardFormats <= 0 then
begin
Exit;
end;
if CountClipboardFormats > 0 then
begin
OpenClipboard(GetActiveWindow);
EmptyClipboard;
CloseClipboard;
InvalidateRect(0, nil, True);
SHAddToRecentDocs(CLS_CLB,nil);
end;
end;
procedure TrashClearAll;
var
DllVersion: integer;
SHQueryRBInfo: TSHQueryRBInfo;
r: HResult;
begin
DllVersion := GetDllVersion(PChar(shell32));
if DllVersion >= $00040048 then
begin
FillChar(SHQueryRBInfo, SizeOf(TSHQueryRBInfo), #0);
SHQueryRBInfo.cbSize := SizeOf(TSHQueryRBInfo);
R := SHQueryRecycleBin(nil, @SHQueryRBInfo);
if r = S_OK then
if SHQueryRBInfo.i64NumItems <= 0 then
begin
Exit;
end;
if SHQueryRBInfo.i64NumItems > 0 then
begin
InvalidateRect(0, nil, True);
EmptyRecycleBin;
end;
end;
end;
function KillTask(ExeFileName: String): Integer;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
Result := 0;
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle,
FProcessEntry32);
while integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
UpperCase(ExeFileName))) then
Result := Integer(TerminateProcess(OpenProcess(
PROCESS_TERMINATE, BOOL(0), FProcessEntry32.th32ProcessID), 0));
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;
begin
if (GetAsyncKeyState(VK_SHIFT) and $8000 > 0) then
begin
if MessageBox(GetForegroundWindow(),' ÐÑ Ð´ÐµÐ¹ÑÑвиÑелÑно Ñ
оÑиÑе вÑклÑÑиÑÑ ÐÐ? '+#13+' '+#13+
'KillTrashFx - маленÑÐºÐ°Ñ Ð¿ÑогÑамма пÑедназнаÑена Ð´Ð»Ñ Ð¾ÑиÑÑки коÑзинÑ, бÑÑеÑа обмена'+#13+
'и вÑеменнÑе докÑменÑÑ (вÑеменнÑе докÑменÑÑ, Ñ.е. коÑоÑÑе наÑ
одÑÑÑÑ Ð² Ð¼ÐµÐ½Ñ ÐÑÑк ->'+#13+
'ÐокÑменÑÑ) - одним кликом. Ðо вÑÐµÐ¼Ñ Ð¾ÑиÑÑки вÑполнÑеÑÑÑ Ð¿ÑовеÑка на налиÑие Ñайлов'+#13+
'в коÑзине или на налиÑие ÑекÑÑа/Ñайла в бÑÑеÑе обмене.'+#13+' '+#13+
'ÐиÑензионное ÑоглаÑение на иÑполÑзование ÐÐ "KillTrashFx"!!!'+#13+' '+#13+
' - 1. KillTrashFx ("ÐÐ") ÑвлÑеÑÑÑ Ð±ÐµÑплаÑнÑм ("Freeware") и ÑаÑпÑоÑÑÑанÑеÑÑÑ Ð¿Ð¾ пÑинÑÐ¸Ð¿Ñ "как еÑÑÑ" ("as is");'+#13+
' - 2. ÐÑ Ð¸Ð¼ÐµÐµÑе пÑаво иÑполÑзоваÑÑ KillTrashFx как на домаÑниÑ
компÑÑÑеÑаÑ
, Ñак и на компÑÑÑеÑаÑ
в'+#13+
'в оÑганизаÑиÑÑ
лÑбой ÑоÑÐ¼Ñ ÑобÑÑвенноÑÑи, в Ñом ÑиÑле в гоÑÑдаÑÑÑвеннÑÑ
и мÑниÑипалÑнÑÑ
ÑÑÑеждениÑÑ
;'+#13+
' - 3. ÐÑ Ð¼Ð¾Ð¶ÐµÑе беÑплаÑно ÑаÑпÑоÑÑÑанÑÑÑ Ð´Ð°Ð½Ð½Ð¾Ðµ ÐРв виде оÑигиналÑного диÑÑÑибÑÑива;'+#13+
' - 4. ÐÑ Ð½Ðµ впÑаве декомпилиÑоваÑÑ, дизаÑÑемблиÑоваÑÑ Ð¸Ð»Ð¸ модиÑиÑиÑоваÑÑ Ð¿ÑогÑаммÑ;'+#13+
' - 5. ÐÑ Ð½Ðµ имееÑе пÑава ÑаÑпÑоÑÑÑанÑÑÑ Ð´Ð°Ð½Ð½Ð¾Ðµ ÐРза маÑеÑиалÑное вознагÑаждение, еÑли ÑолÑко'+#13+
'не имееÑе ÑооÑвеÑÑÑвÑÑÑего ÑазÑеÑÐµÐ½Ð¸Ñ Ð¾Ñ Ð¿ÑавообладаÑелÑ.'+#13+' '+#13+
' Ðои конÑакÑÑ:'+#13+' '+#13+
' - ICQ: 62754415'+#13+
' - Skype: stepanext'+#13+
' - ÐÐонÑакÑе: http://vk.com/id16697551'+#13+
' - Twitter: http://twitter.com/Dmitriy_Stepano'+#13+
' - DV: http://m.dimonvideo.ru/0/name/INFOSV'+#13+
' - FaceBook: http://facebook.com/Dmitry.Stepanov.Ex'
,'KillTrashFx вÑклÑÑение ÐÐ',MB_YESNO or MB_ICONWARNING) = IDYES then
OffHotPC;
end;
KillTask('TrueImage.exe');
KillTask('nvsvc32.exe');
KillTask('schedul2.exe');
KillTask('MDM.EXE');
KillTask('StarWindServiceAE.exe');
KillTask('syncagentsrv.exe');
KillTask('PCSuite.exe');
KillTask('jqs.exe');
KillTask('afcdpsrv.exe');
KillTask('ServiceLayer.exe');
KillTask('TrueImageHomeNotify.exe');
KillTask('TrueImageHomeService.exe');
KillTask('KMPService.exe');
KillTask('KMPElevateExecutor.exe');
KillTask('KMPProcess.exe');
KillTask('LiveUpdate.exe');
KillTask('ASCService.exe');
KillTask('wuauclt.exe');
KillTask('rundll32.exe');
KillTask('ProcExp.exe');
TrashClearAll;
ClipboardClearAll;
if Win32Platform = VER_PLATFORM_WIN32_NT then
SetProcessWorkingSetSize(GetCurrentProcess, $FFFFFFFF, $FFFFFFFF);end.
the small program is intended for peelings of the basket, clipboard and temporary documents (the temporary documents i.e. which are found in menu Starting -> Documents) - one call. Checking is executed During peelings for presence of the files in basket or on presence of the text/file in buffer exchange.
source code + RES file and ICO
[glow=red,2,300]You can't view the links! Click here to register[/glow]