Thema: Delphi "Ausführen"

Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: "Ausführen"

  Alt 6. Jan 2003, 03:32
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat