Zitat von
Timo:
hi!
ich will ein kleines tool schreiben, dass zum beispiel regedit öffnet
Shellexecute(Form1.Handle, 'open', 'regedit', nil, nil, SW_NORMAL);
Zitat:
oder den computer unter xp abmeldet!
das geht ja über start -> ausführen!
Bei mir kann ich keinen Computer von XP abmelden. Aber wenn das bei dir geht....,
kannst du, wenn du deinen Rechner bei XP abgemeldet hast deinen Laptop dort wieder anmelden oder wie?
Code:
function ExitWin(flag:word): Boolean;
var vi : TOSVersionInfo;
hToken : THandle;
tp : TTokenPrivileges;
h : DWord;
begin
//result := false;
vi.dwOSVersionInfoSize:=SizeOf(vi);
GetVersionEx(vi);
if vi.dwPlatformId = VER_PLATFORM_WIN32_NT then // Windows NT
begin
// Achtung bei Delphi 2 muß @hToken stehen ... !!!! ?????
OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,hToken);
LookupPrivilegeValue(nil,'SeShutdownPrivilege',
tp.Privileges[0].Luid);
tp.PrivilegeCount := 1;
tp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
h := 0;
AdjustTokenPrivileges(hToken,False,
tp,0,PTokenPrivileges(nil)^,h);
CloseHandle(hToken);
result := ExitWindowsEx(flag,0);
end
else // Windows 95
begin
Result := ExitWindowsEx(flag,0);
end;
end;
Und aufruf mit:
Code:
ExitWin(EWX_REBOOT);
oder
ExitWin(EWX_POWEROFF);
oder
ExitWin(EWX_LOGOFF);
oder
ExitWin(EWX_SHUTDOWN);
Zitat:
wie kann ich jetzt zum beispiel den befehl:
%windir%\System32\rundll32.exe user32.dll,LockWorkStation
ausführen?
Ganz einfach, die
API:
LockWorkStation aufrufen, die Funktion erwartet noch nicht mal Parameter.