![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ошибка [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