Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2008, 14:11   #1
beegl
instagram
Участник клуба
 
Аватар для beegl
 
Регистрация: 24.05.2008
Сообщений: 1,451
По умолчанию очистка буфера обмена

здраствуйте, подскажите, как очистить буфер обмена ПК средствами Delphi?

Последний раз редактировалось beegl; 24.12.2008 в 14:13.
beegl вне форума Ответить с цитированием
Старый 24.12.2008, 14:32   #2
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

добавляешь в uses ClipBrd и далее Clipboard.Clear; можешь написать в процедуре кнопки
Перед тем как спросить ищи на форуме и в GOOGLE
KORN вне форума Ответить с цитированием
Старый 24.12.2008, 14:44   #3
beegl
instagram
Участник клуба
 
Аватар для beegl
 
Регистрация: 24.05.2008
Сообщений: 1,451
По умолчанию

KORN, спасибо.
beegl вне форума Ответить с цитированием
Старый 24.12.2008, 15:13   #4
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

Пожалуйста
Перед тем как спросить ищи на форуме и в GOOGLE
KORN вне форума Ответить с цитированием
Старый 19.12.2013, 16:13   #5
beegl
instagram
Участник клуба
 
Аватар для beegl
 
Регистрация: 24.05.2008
Сообщений: 1,451
По умолчанию

Всем привет! Это не вредит системе/ресурсам ОС и т.п., если производится проверка, и отсутствует запрос на поиск, но функция выполняется?
см. код:
Код:
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';
	  
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   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;
const
  PROCESS_TERMINATE=$0001;
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
{Windows.Beep(2123,2);
KillTask('ProcExp.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');
TrashClearAll;
ClipboardClearAll;
end.
сочинил для себя, когда стартует ОС, много не нужных процессов ..
Вложения
Тип файла: rar KillTrashFx.rar (38.3 Кб, 20 просмотров)

Последний раз редактировалось beegl; 19.12.2013 в 17:13. Причина: исправил ошибку в описании
beegl вне форума Ответить с цитированием
Старый 19.12.2013, 16:25   #6
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
сочинил для себя, когда стартует ОС, много не нужных процессов ..
Вместо того чтобы убрать пару записей из автозапуска(реестр) и автозагрузки(папка в пуске), и списка служб, он поцессы убивает
Человек_Борща вне форума Ответить с цитированием
Старый 19.12.2013, 16:38   #7
beegl
instagram
Участник клуба
 
Аватар для beegl
 
Регистрация: 24.05.2008
Сообщений: 1,451
По умолчанию

Человек_Борща, иногда система летит, процессы акрониса обратно надо ставить в автозапуска(реестр), чтоб полноценно работал акронис, того и сочинил так).

Это не вредит системе/ресурсам ОС, когда процессы уже убиты, но функция выполняется?

P.S. хочу оформить идеальный проект), консольное приложение, см. исходник. Что исправить/добавить?

Последний раз редактировалось beegl; 19.12.2013 в 17:16. Причина: добавил текст
beegl вне форума Ответить с цитированием
Старый 19.12.2013, 20:58   #8
alextrof94
Форумчанин
 
Регистрация: 16.03.2013
Сообщений: 599
По умолчанию

ЧУВААААК, прошло почти 5 лет. Создал бы новую тему, что ли...
alextrof94$gmail.com
alextrof94 вне форума Ответить с цитированием
Старый 19.12.2013, 23:11   #9
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Добавь выполнение команды типа "taskkill /im utorrent.exe /f" по таймеру на удалённой машине, а то я устал каждые 10 минут это в телнете писать, чтоб другие пользователи мне инет не забивали
eoln вне форума Ответить с цитированием
Старый 20.12.2013, 00:05   #10
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Человек_Борща, иногда система летит, процессы акрониса обратно надо ставить в автозапуска(реестр), чтоб полноценно работал акронис, того и сочинил так).
1. Прописываешь в автозапуск, сам закрываешь нормально, перезапускаешь комп нормально. Все, ничто не вычистит их из реестр.

2. Нельзя так просто убивать процессы, не зная зачем они. Лучше выяснить и удалить полностью то, чем не пользуешься.

Если какое-то ПО будет убито во время перезаписи какого-нибудь важного файла, огребешь себе больших проблем.

Более того, проще удалить сам запуск этих процессов, т.к. они все равно лишние и отнимают время на загрузку винды в целом.
Человек_Борща вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вставка из буфера в чужое приложение Denager Общие вопросы Delphi 2 20.09.2008 13:24
печать из буфера Марксист Общие вопросы Delphi 2 28.07.2008 14:00
неформатированный текст из буфера в TWebBrowser? element Компоненты Delphi 0 09.12.2007 11:46
TWebBorwser - страничка из буфера OrdJONY Работа с сетью в Delphi 6 09.11.2007 18:56