AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Programm als bestimmter Nutzer starten

Ein Thema von Moombas · begonnen am 2. Okt 2018 · letzter Beitrag vom 10. Dez 2018
 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.372 Beiträge
 
Delphi 12 Athens
 
#9

AW: Programm als bestimmter Nutzer starten

  Alt 3. Okt 2018, 00:49
Im Prinzip stimmt es sozusagen schon, aber die IFDEFs können weg, wenn man gleich den passenden Typ verwendet.


compilerabhängig:
Delphi-Quellcode:
function RunAs(const Handle: Hwnd; const Path, Params: string): Boolean;
var
  sei: TShellExecuteInfo;
begin
  FillChar(sei, SizeOf(sei), 0);
  sei.cbSize := SizeOf(sei);
  sei.Wnd := Handle;
  sei.fMask := SEE_MASK_FLAG_DDEWAIT or SEE_MASK_FLAG_NO_UI;
  sei.lpVerb := 'runas';
  sei.nShow := SW_SHOWNORMAL;
  sei.lpFile := PChar(Path);
  sei.lpParameters := PChar(Params);
  Result := ShellExecuteEx(@sei);
end;
String ist ein compilerabhängiger Typ, wie z.B. Integer (früher mal 16 Bit und dann 32 Bit ... allerdings wurde der Integer für 64 Bit-CPUs eingefroren und dafür was Neues erfunden, welches in Delphi sich NativeInt nennt)

fest, immer als ANSI: (das Gleiche bei Unicode, mit Wide/W)
Delphi-Quellcode:
function RunAs(const Handle: Hwnd; const Path, Params: AnsiString): Boolean;
var
  sei: TShellExecuteInfoA;
begin
  FillChar(sei, SizeOf(sei), 0);
  sei.cbSize := SizeOf(sei);
  sei.Wnd := Handle;
  sei.fMask := SEE_MASK_FLAG_DDEWAIT or SEE_MASK_FLAG_NO_UI;
  sei.lpVerb := 'runas';
  sei.nShow := SW_SHOWNORMAL;
  sei.lpFile := PAnsiChar(Path);
  sei.lpParameters := PAnsiChar(Params);
  Result := ShellExecuteExA(@sei);
end;
Windows bietet für fast alle WinAPIs zwei Versionen der Funktionen an (MSDN-Library durchsuchenShellExecuteExA und MSDN-Library durchsuchenShellExecuteExW)
und Delphi stellt schon immer diese APIs auch als compilerabhängige Variante an. (MSDN-Library durchsuchenShellExecuteEx als Alias für ShellExecuteExA oder ShellExecuteExW ... vor D2009 und ab D2009)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 3. Okt 2018 um 00:56 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz