Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi ShellExecute einer Anwendung die Admin Rechte benötigt minimiert den UAC Request (https://www.delphipraxis.net/189660-shellexecute-einer-anwendung-die-admin-rechte-benoetigt-minimiert-den-uac-request.html)

Shark99 6. Jul 2016 15:37

ShellExecute einer Anwendung die Admin Rechte benötigt minimiert den UAC Request
 
Liste der Anhänge anzeigen (Anzahl: 1)
Wenn ich eine Anwendung starte die Admin Rechte braucht kommt in die Mitte des Bildschirms der übliche UAC Dialog wo ich meine Zustimmung geben muss.

Wenn ich die gleiche Anwendung in einer Delphi App mit ShellExecute() ausführe kommt dieser UAC Dialog nicht in die Bildschirmmitte.
Statt dessen wird er minimiert angezeigt, d.h. der Benutzer muss auf die Taskleiste klicken.

Kann man das irgendwie verhindern damit der Dialog in die Mitte des Bildschirms kommt?

Der schöne Günther 6. Jul 2016 16:07

AW: ShellExecute einer Anwendung die Admin Rechte benötigt minimiert den UAC Request
 
Was gibst du für den ersten Parameter (das HWND) bei
Delphi-Quellcode:
ShellExecute
an?

EWeiss 6. Jul 2016 16:18

AW: ShellExecute einer Anwendung die Admin Rechte benötigt minimiert den UAC Request
 
SW_SHOWNORMAL

gruss

Shark99 6. Jul 2016 16:45

AW: ShellExecute einer Anwendung die Admin Rechte benötigt minimiert den UAC Request
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1342093)
Was gibst du für den ersten Parameter (das HWND) bei
Delphi-Quellcode:
ShellExecute
an?

MainForm.Handle

Application.Handle bringt keinen Unterschied.

Shark99 6. Jul 2016 16:49

AW: ShellExecute einer Anwendung die Admin Rechte benötigt minimiert den UAC Request
 
Zitat:

Zitat von EWeiss (Beitrag 1342094)
SW_SHOWNORMAL

gruss

War natürlich drin. Funktioniert aber nur bei Anwendungen die keine Admin-Rechte benötigen.

Der schöne Günther 6. Jul 2016 16:55

AW: ShellExecute einer Anwendung die Admin Rechte benötigt minimiert den UAC Request
 
Zitat:

Zitat von Shark99 (Beitrag 1342095)
Application.Handle bringt keinen Unterschied.

Sicher? Also das hier
Delphi-Quellcode:
ShellExecute(
   Application.Handle,
   'runas',
   'notepad',
   nil,
   nil,
   SW_SHOWNORMAL
);
macht genau was du schilderst: Der UAC-Dialog ist minimiert und blinkt. Sage ich statt
Delphi-Quellcode:
Application.Handle
nun
Delphi-Quellcode:
Application.MainForm.Handle
kommt direkt der UAC-Dialog und überdeckt alles.

himitsu 6. Jul 2016 17:27

AW: ShellExecute einer Anwendung die Admin Rechte benötigt minimiert den UAC Request
 
Und was ist wohl der Grund dafür? :stupid:

Application (die MessageOnly-Form) ist unsichtbar und die MainForm ist sichtbar.
http://www.delphipraxis.net/104557-m...ml#post1341860 (die #13)

Man kann hier auch
Delphi-Quellcode:
Application.MainFormHandle
oder
Delphi-Quellcode:
Screen.AcriveForm.Handle
oder besser
Delphi-Quellcode:
Self.Handle
(wenn man das aus einer Methode einer Form aufruft) verwenden.


PS: "Früher" war Application halbsichtbar, denn früher war der Eintrag in der Taskleiste das Application und nun ist es die MainForm (sonst zeigt Aero-Peak nur das leere Message-Fenster der Application)

Shark99 6. Jul 2016 17:46

AW: ShellExecute einer Anwendung die Admin Rechte benötigt minimiert den UAC Request
 
Da meine App im Tray Icon läuft (also Form versteckt ist), würde es die Sache erklären.

Shark99 6. Jul 2016 18:00

AW: ShellExecute einer Anwendung die Admin Rechte benötigt minimiert den UAC Request
 
Die Frage ist wie ich das Problem umgehe wenn mein Fenster versteckt ist.

Screen.AcriveForm ist nil.

Ich kam noch auf die Idee GetDesktopForm() als Handle zu nehmen, aber dann ist es immer noch minimiert.

Hat jemand eine andere Idee?

himitsu 6. Jul 2016 18:01

AW: ShellExecute einer Anwendung die Admin Rechte benötigt minimiert den UAC Request
 
Ohne Handle probiert?

Oder im Notfall einfach ein winziges Fenster (1 Pixel, ohne Rahmen und Taskleisteneintrag) erstellen und in den Vordergrund bringen (aktiv machen), bzw. ein Fenster außerhalb des sichtbaren Bereichs.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:17 Uhr.
Seite 1 von 2  1 2   

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf