Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   XE2 Form bleibt schwarz nach UAC Abfrage (https://www.delphipraxis.net/180210-xe2-form-bleibt-schwarz-nach-uac-abfrage.html)

FatPap 30. Apr 2014 16:01


XE2 Form bleibt schwarz nach UAC Abfrage
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo.

Ich entwickle gerade eine Software mit Delphi XE2. Meine Applikation benötigt Administratorrechte und ich habe deshalb eine manifest Datei eingebunden. Beim starten der EXE dunkelt sich der Bildschirm ab "Secure desktop mode" und der Benutzer wird abgefragt ob er zulassen möchte dass durch dieses Programm Änderungen durchgeführt werden. Der Benutzer klickt auf Ja und die Anwendung startet.

Nun wird die Anwendung minimiert, man startet sie ein weiteres mal (warum auch immer). Die Abfrage kommt wieder und man klickt auf "NEIN" oder "JA"

Wenn man jetzt die Anwendung wiederherstellt ist das ganze Fenster schwarz bis auf den Rahmen.
Ich habe bereits herausgefunden dass man mit "Form1.Recreate" alles wieder schön sauber hinbekommt. Nur wann auslösen? Bzw. muss es doch eine andere saubere Lösung für diese Problem geben?

Je nach Anzahl der Komponenten auf der Form lässt sich das Problem auch dadurch lösen indem man ein weiteres mal minimiert und wiederherstellt. Das funktioniert ziemlich gut bei einer leeren Form, aber nicht (nie) bei meiner Anwendung mit mehr als 200 Controls.

Ich werde wohl irgendwie den "Form1.Onactivate" event verwenden um "Form1.Recreate" auszulösen, nur dann funktioniert das wiederherstellen teilweise nicht mehr und verhält sich sehr komisch.

Anhang 41115

Projekt:
Anhang 41116

hathor 30. Apr 2014 18:38

AW: XE2 Form bleibt schwarz nach UAC Abfrage
 
Liste der Anhänge anzeigen (Anzahl: 1)
1. entfernen
Delphi-Quellcode:
procedure TForm1.FormActivate(Sender: TObject);
begin
Form1.Recreate;
end;
2. Ändern
Delphi-Quellcode:
program BlackScreenTest;
{$R BlackScreenTest.REC}  //einfügen

uses
  FMX.Forms,
  uniFrmStart in 'uniFrmStart.pas' {Form1};

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True; //einfügen
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
3. Anhang (BlackScreenTest.REC) ins Programmverzeichnis einfügen

hathor 2. Mai 2014 08:44

AW: XE2 Form bleibt schwarz nach UAC Abfrage
 
Wozu soll man in diesem Forum noch antworten,
wenn es kein Feedback gibt?!

Sherlock 2. Mai 2014 09:58

AW: XE2 Form bleibt schwarz nach UAC Abfrage
 
Gemach, Gemach! Feiertag gestern, Brückentag heute. Ich würde nicht vor Montag mit einer Antwort rechnen.

Aber was genau tut Deine .rec? Edith hat flink nachgesehen und den Manifest-Anteil erkannt :D Alles klar!

Sherlock

FatPap 2. Mai 2014 10:36

AW: XE2 Form bleibt schwarz nach UAC Abfrage
 
Ich bin echt froh über deine Antwort, keine Sorge ich werde noch berichten sobald ich wieder am Arbeitsplatz bin. :-D

FatPap 5. Mai 2014 07:21

AW: XE2 Form bleibt schwarz nach UAC Abfrage
 
Habe gerade die Änderungen durchgeführt aber am besagten Verhalten hat sich leider nichts verändert. :-(

Immer noch schwarze Form wenn zweite Instanz gestartet wird während erste minimiert ist.

hathor 5. Mai 2014 15:13

AW: XE2 Form bleibt schwarz nach UAC Abfrage
 
Wieviele Instanzen willst Du haben?
Wenn Du nur 1 haben willst, muss Form1.Recreate; entfernt werden.

FatPap 5. Mai 2014 16:44

AW: XE2 Form bleibt schwarz nach UAC Abfrage
 
"recreate" hab ich natürlich entfernt. Ich will nur eine Instanz haben, was aber unwichtig ist. Ich habe in meiner Anwendung (in der .dpr Datei) natürlich schon dafür gesorgt dass man keine zweite Instanz öffnen kann.

Aber den Benutzer daran hindern doch noch eine Instanz zu starten kann ich leider nicht. Sobald er das tut (UAC Abfrage) treten aber die Probleme mit der schwarzen Form und den verschwundenen Controls auf.

Was mir heute noch aufgefallen ist: Meine Anwendung (viele Controls) muss noch nicht mal minimiert sein während dem Startversuch der zweiten Instanz und es treten auch die Probleme auf.

Im Prinzip ist es egal ob er versucht noch eine Instanz zu starten, er könnte genausogut eine andere Anwendung starten die Admin Rechte benötigt und damit den Bildschirm abdunkelt. Selbes verhalten.

Union 5. Mai 2014 20:13

AW: XE2 Form bleibt schwarz nach UAC Abfrage
 
Ich krieg das gar nicht gestartet aus der IDE: "Prozess kann nicht erzeugt werden. Der Vorgang erforder ehöhte Rechte."

Wenn ich das aus dem Explorer heraus starte, kommt die UAC-Abfrage und das Fenster blitzt kurz auf. In der Taskleiste wird die Anwendung auch angezeigt, läßt sich aber nicht in den Vordergrund holen. Geht das nur im Release-Mode?

FatPap 5. Mai 2014 21:23

AW: XE2 Form bleibt schwarz nach UAC Abfrage
 
Du musst deine IDE als Administrator ausführen.

Hab gerade festgestellt dass auf meinem Computer zuhause die Anwendung aus dem "BlackApp" Projekt keine Probleme macht sehr wohl aber die Software für unseren Kunden.

Union 5. Mai 2014 23:11

AW: XE2 Form bleibt schwarz nach UAC Abfrage
 
Also ich kann das beliebig oft starten und habe nach der UAC keinen schwarzen Screen. Vielleicht ein Problem mit Grafikkarte / Treiber?

FatPap 6. Mai 2014 08:42

AW: XE2 Form bleibt schwarz nach UAC Abfrage
 
Ich hab mal schnell ein Video davon gemacht:

http://youtu.be/UFJ1cjVWCMc

Camstudio nimmt die UAC Abfrage nicht auf aber sie ist da nach dem Start der Exe ;-)

hathor 6. Mai 2014 11:31

AW: XE2 Form bleibt schwarz nach UAC Abfrage
 
Ich habe festgestellt, dass mindestens bei EINEM Objekt
DisableFocusEffect:=true sein muss, z.B.

Delphi-Quellcode:
Button1.DisableFocusEffect:=true;
Dann erscheinen die Objekte...

FatPap 6. Mai 2014 12:13

AW: XE2 Form bleibt schwarz nach UAC Abfrage
 
Kann ich nicht nachvollziehen, dafür hab ich wiederrum etwas anderes festgestellt:

Das Property "Transparency" von der Form auf True gesetzt löst alle meine Probleme bis auf den fehlenden Rahmen. :roll:

Union 6. Mai 2014 12:19

AW: XE2 Form bleibt schwarz nach UAC Abfrage
 
Und wenn Du Transparency im FormActivate kurz nacheinander erst auf True und dann auf False setzt?

FatPap 6. Mai 2014 12:51

AW: XE2 Form bleibt schwarz nach UAC Abfrage
 
Funktioniert zwar grundsätzlich aber man muss dann teilweise mehrmals auf die Anwendung in der Taskleiste klicken um sie wiederherzustellen. Verhält sich genauso komisch wie Form1.recreate im Activate.

Sherlock 6. Mai 2014 13:42

AW: XE2 Form bleibt schwarz nach UAC Abfrage
 
Blöde Zwischenfrage...die Applikation ist ja irgendwie geskinned. Wie sieht das aus mit einer Standard-VCL Anwendung?

Sherlock

FatPap 6. Mai 2014 14:20

AW: XE2 Form bleibt schwarz nach UAC Abfrage
 
Die Applikation ist eine Firemonkey HD Anwendung mit Dark.style

VCL Anwendungen sind natürlich nicht betroffen, gerade getestet.

Sherlock 6. Mai 2014 14:27

AW: XE2 Form bleibt schwarz nach UAC Abfrage
 
Sorry ich bin raus.
Meine Erfahrungen ==> Für Windows nur VCL. FMX für alles andere.

:(

Sherlock

Union 6. Mai 2014 15:23

AW: XE2 Form bleibt schwarz nach UAC Abfrage
 
... Selbe Meinung. Und wenn Du unbedingt Firemonkey einsetzen willst, solltest Du immer auf der aktuellsten Version sein. Das ist zwar immer noch eine Großbaustelle, aber es wurde seit XE2 soviel verbessert, dass man es rückblickend nicht mal mehr als beta-Version bezeichnen kann.

FatPap 6. Mai 2014 16:30

AW: XE2 Form bleibt schwarz nach UAC Abfrage
 
Na sag das mal dem Chef hier ;-)
Er hat sich übrigens schon damit abgefunden. "Dann muss man halt die Anwendung neu starten"

Würde zu gern mit einer neueren XE Version arbeiten.

Union 6. Mai 2014 16:30

AW: XE2 Form bleibt schwarz nach UAC Abfrage
 
Mach ihm doch REST, Tethering und Android schmackhaft ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:00 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