Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ошибка [D6, Win2k]


Володя ©   (2005-03-05 15:30:00) 

нехочет закрывать, ругается
[Error] ProcesiSis.pas(48): There is no overloaded version of 'AdjustTokenPrivileges' that can be called with these arguments
[Fatal Error] ProcesiSis1.dpr(5): Could not compile used unit 'ProcesiSis.pas'

код

unit ProcesiSis;
interface
uses
 Windows, Messages, SysUtils,  Dialogs, tlhelp32, psapi, Classes, Forms,
 Controls, StdCtrls;//, Variants, Classes, Graphics, Controls
type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;
var
 Form1: TForm1;
implementation
{$R *.dfm}

function ProcessTerminate(dwPID:Cardinal):Boolean;
{$IFDEF Win32} stdcall; {$ELSE} ; export; {$ENDIF}
var
 hToken:THandle;
 SeDebugNameValue:Int64;
 tkp: TOKEN_PRIVILEGES;
 ReturnLength: Cardinal;
 hProcess: THandle;
begin
         Result:=false;
         if not OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then
          exit;
         if not LookupPrivilegeValue(nil, 'SeDebugPrivilege', SeDebugNameValue) then begin
           CloseHandle(hToken);
           exit;
         end;
         tkp.PrivilegeCount:=1;
         tkp.Privileges[0].Luid:=SeDebugNameValue;
         tkp.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
         if GetLastError()<>ERROR_SUCCESS then
         exit;
         hProcess:=OpenProcess(PROCESS_TERMINATE, FALSE, dwPID);
         if hProcess=0 then
         exit;
         if not TerminateThread(dwPID, DWORD(-1))
         then exit;
         CloseHandle(dwPID);
         tkp.Privileges[0].Attributes:=0;
         AdjustTokenPrivileges(hToken, FALSE, tkp, SizeOf(tkp), ReturnLength);
         if GetLastError() <> ERROR_SUCCESS then
           Exit;
         Result:=true;
end ;

function LocateProcess( const ImageName: String ): Integer;
var
 Snapshot,
 ProcessHandle,
 i, Res: Integer;//
 //Res: Pointer;Cardinal;
 BytesRead: Cardinal;
 ProcessEntry: TProcessEntry32;
 ExeFile: String;
 PIDs: array[0..4095] of DWord;
 ddd:Boolean;

begin
  Res:=0;
  Snapshot :=CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  SetLength(ExeFile, Length(ImageName));
  if Snapshot<>0 then begin
    ShowMessage('Windows 9x, Me, 2000');
    ProcessEntry.dwSize := SizeOf(TProcessEntry32);
    if Process32First(Snapshot, ProcessEntry) then
      repeat
      if ((Pos(ImageName, ExtractFileName(ProcessEntry.szExeFile))>0) OR (Pos('WORD', ExtractFileName(ProcessEntry.szExeFile))>0)) then begin
          Res:=ProcessEntry.th32ProcessID;
          ShowMessage('Res='+IntToStr(Res)+'  '+ExtractFileName(ProcessEntry.szExeFile)+'  Snapshot='+IntToStr(Snapshot));
         ddd:=ProcessTerminate(longInt(Res));
      end;
      until not Process32Next(Snapshot, ProcessEntry);
      CloseHandle(Snapshot);
  end
  else begin
    ShowMessage('Windows NT, 2000 PSAPI');
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  LocateProcess('Word');
  ShowMessage('Close!');
end;

end.


Володя   (2005-03-05 16:29:00) [1]

ладно, помучаюсь далее  ),СПАСИБО ВСЕМ


MU   (2005-03-05 16:27:00) [2]

> Володя   (05.03.05 15:48) [6]
> не срабатывает, но не ругается



> Anatoly Podgoretsky ©   (05.03.05 16:24) [14]
> MU   (05.03.05 16:06) [10]
> У вас разные Д6, у него говорит что нет.


  читайте внимательнее :))


Anatoly Podgoretsky   (2005-03-05 16:25:00) [3]

Fay ©   (05.03.05 16:14) [12]
Какой может быть ответ на вопрос, если он не в состоянии оформить тему.


Anatoly Podgoretsky   (2005-03-05 16:24:00) [4]

MU   (05.03.05 16:06) [10]
У вас разные Д6, у него говорит что нет.


Володя   (2005-03-05 16:23:00) [5]

хочу поток прижать, а он нехочет, как проще сделать?


Fay   (2005-03-05 16:14:00) [6]

2 Anatoly Podgoretsky ©   (05.03.05 15:47) [4]
А чё не так, вАщЕ?


Володя   (2005-03-05 16:06:00) [7]

верю, уже вчера весь день разными потоки мучал, максимум игнорирует, но спасибо всеравно, если сможете подскажите как закрыть


MU   (2005-03-05 16:06:00) [8]

Anatoly Podgoretsky ©
  верю (своему D6) больше, чем вашему :)


Anatoly Podgoretsky   (2005-03-05 16:03:00) [9]

MU   (05.03.05 15:49) [7]
Не веришь компилятору?


Володя   (2005-03-05 15:51:00) [10]

а савет межно по етому поводу, немогу придумать, пробовал другие, незакрывают


MU   (2005-03-05 15:49:00) [11]


> Anatoly Podgoretsky ©   (05.03.05 15:47) [4]
> Ну и напрасно, такой перегруженной версии нет.

?????


Володя   (2005-03-05 15:48:00) [12]

не срабатывает, но не ругается


MU   (2005-03-05 15:48:00) [13]


> Володя   (05.03.05 15:46) [3]
> я так и сделал

И что?


Anatoly Podgoretsky   (2005-03-05 15:47:00) [14]

Ну и напрасно, такой перегруженной версии нет.


Володя   (2005-03-05 15:46:00) [15]

я так и сделал


MU   (2005-03-05 15:45:00) [16]

AdjustTokenPrivileges(hToken, FALSE, tkp, SizeOf(tkp), nil, ReturnLength);


Володя   (2005-03-05 15:44:00) [17]

если несложно, гляньте не могу разобраться с AdjustTokenPrivileges


Наверх

Титульная страница Поиск, карта сайта Написать письмо