AGB  ·  Datenschutz  ·  Impressum  







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

UAC Steuerungsdialog Win10

Ein Thema von EWeiss · begonnen am 21. Dez 2018 · letzter Beitrag vom 6. Jan 2019
Antwort Antwort
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.918 Beiträge
 
Delphi 12 Athens
 
#1

AW: UAC Steuerungsdialog Win10

  Alt 23. Dez 2018, 06:22
Also was macht Delphi anders als meine Anwendung wenn sie alleine läuft?
Das Arbeitsverzeichnis könnte in Delphi anders gesetzt sein (Start --> Parameter).

Ansonsten benutzen wir für solche Probleme als absolutes Standard-Tool den Process Monitor. Da sieht man in vielen Fällen direkt das Problem und spart sich viel Zeit...
Den sollte jeder Entwickler kennen.

Als Standardfilter bietet es sich an auf "Process Name" zu filtern, "is" auszuwählen und als Filtertext den Namen der Anwendung einzugeben. Meistens reicht das schon. Wenn dann der Fehler passiert ist, einfach eine ggf. angezeigte Fehlermeldung offen lassen und schauen was zuletzt im Process Monitor geloggt wurde.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: UAC Steuerungsdialog Win10

  Alt 23. Dez 2018, 06:28
Also was macht Delphi anders als meine Anwendung wenn sie alleine läuft?
Das Arbeitsverzeichnis könnte in Delphi anders gesetzt sein (Start --> Parameter).

Ansonsten benutzen wir für solche Probleme als absolutes Standard-Tool den Process Monitor. Da sieht man in vielen Fällen direkt das Problem und spart sich viel Zeit...
Den sollte jeder Entwickler kennen.

Als Standardfilter bietet es sich an auf "Process Name" zu filtern, "is" auszuwählen und als Filtertext den Namen der Anwendung einzugeben. Meistens reicht das schon. Wenn dann der Fehler passiert ist, einfach eine ggf. angezeigte Fehlermeldung offen lassen und schauen was zuletzt im Process Monitor geloggt wurde.
JO den kenne ich.
Werde mal schauen was der mir ausspuckt.

Zitat:
Das Arbeitsverzeichnis könnte in Delphi anders gesetzt sein (Start --> Parameter).
Nun ja das ist leer.

Ich habe noch mit keiner Programmiersprache gearbeitet wo die Eigenschaften\Funktionsweise einer Anwendung verändert wird wenn sie alleine außerhalb der Entwicklungsumgebung gestartet wird.
Kann ich mir nicht erklären.

Mit dem Arbeitsverzeichnis hat es nichts zu tun wäre das in meiner Anwendung falsch gesetzt dürfte es auch in der Entwicklungsumgebung nicht funktionieren.
Aber das tut es und ich weis nicht warum es so ist.
Meine Anwendung müsste sich eigentlich genauso verhalten wie in der Entwicklungsumgebung, tut sie aber nicht.
Wenn man sich nicht mal mehr darauf verlassen kann das sich eine Anwendung gleich verhält in und außerhalb der Entwicklungsumgebung was soll das dann noch.
Hmmmmm…..

gruss

Geändert von EWeiss (23. Dez 2018 um 08:34 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.555 Beiträge
 
Delphi 7 Professional
 
#3

AW: UAC Steuerungsdialog Win10

  Alt 23. Dez 2018, 10:07
Eine aus der IDE gestartete Anwendung nutzt das von der IDE genutzte Arbeitsverzeichnis sofern bei Start / Parameter kein Arbeitsverzeichnis gesetzt ist.

Dieses Arbeitsverzeichnis muss nicht mit dem Arbeitsverzeichnis übereinstimmen, dass eine Anwendung nutzt, wenn sie außerhalb der IDE gestartet wird. Das kann zuweilen sehr verwirrend sein.

Eventuell hilft es der "Informationsfindung", wenn Du beim Programmstart mal ein ShowMessage(GetCurrentDir); einbaust und die Ausgabe beim Start aus der IDE mit der Ausgabe beim Start ohne IDE vergleichst.

Statt ShowMessage kannst Du das natürlich auch auf andere Weise protokollieren, ist halt nur eine Info, die eventuell bei der Fehlersuche hilfreich sein könnte.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: UAC Steuerungsdialog Win10

  Alt 23. Dez 2018, 16:15
Zitat:
Eine aus der IDE gestartete Anwendung nutzt das von der IDE genutzte Arbeitsverzeichnis sofern bei Start / Parameter kein Arbeitsverzeichnis gesetzt ist.
Danke..

Wenn ich in der Anwendung das Arbeitsverzeichnis selber setze wird auch in der IDE beim kompilieren\debuggen dieses verwendet.
Was hat das Arbeitsverzeichnis damit zu tun das sich meine Anwendung in der IDE anders verhält als alleine?
Ich benötige auch kein Showmessage um zu wissen welches das ist denn ich setze es ja vorher selbst.

Mal zum Ablauf!
Die Bilder werden nicht von meiner Anwendung sondern von einem Externen Plugin geladen der Pfad dafür ist
"C:\Program Files (x86)\Windows Media Player\Visualizations\MediaPlayer_10.dll"

1. Sie wird gestartet
2. Läd eine Mp3 Datei aus irgendeinen Pfad
3. Übergibt das verwendete Plugin an meinen Visualisierungs Wrapper
4. Dieser Kommuniziert nun mit diversen DLL's vom Windows Media Player
5. Und rendert die Rückgabe des Plugin in einem Window der Anwendung.

PS:
Habe nochmal zwei shots gemacht und dein Message eingebaut obwohl ich mir klar darüber bin das in beiden fällen Der Arbeitspfad der gleiche ist.
IDE funktioniert außerhalb nicht.

Der Process Monitor bringt gar nichts er zeigt mir nur an das verschiedene Bilder vom Plugin nicht gefunden werden.
Aber das ist mir bekannt.
Wenn das also ein Problem wäre.. dürfte das Resultat in dem Fall auch in der IDE nicht True sein. Ist es aber, wie man sieht werden dort die Bilder gerendert.

EDIT:
Fakt ist doch dieser!
Welchen Sinn macht es eine Anwendung zu debuggen wenn das verhalten dieser in der Entwicklungsumgebung anders ist als allein gestartet.
Welcher murks wird da vom Compiler generiert? Das es hier unterschiede gibt.
Eine einfache Berechnung 1+1 muss in der IDE sowie außerhalb das gleiche Ergebnis liefern und nicht wie hier = 3

Wohlbemerkt das Problem tritt nur unter "Windows 10 Alpha" auf.

gruss

Geändert von EWeiss (11. Jul 2019 um 15:55 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.683 Beiträge
 
Delphi 5 Professional
 
#5

AW: UAC Steuerungsdialog Win10

  Alt 23. Dez 2018, 17:11
5. Und rendert die Rückgabe des Plugin in einem Window der Anwendung.
Und wie prüfst du, ob die Rückgabe erfolgreich war, d.h. etwas Benutzbares/Sinnvolles enthält?

Die Datei "C:\Program Files (x86)\Windows Media Player\Visualizations\MediaPlayer_10.dll" gibt's übrigens auf keinem meiner Systeme, weder Win10 noch Win7 (auf letzterem gibt's noch nicht einmal das Verzeichnis Visualizations). Aber das mag damit zusammenhängen, dass ich keinen WMP verwende.

Grüße
Dalai
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: UAC Steuerungsdialog Win10

  Alt 23. Dez 2018, 17:32
5. Und rendert die Rückgabe des Plugin in einem Window der Anwendung.
Die Datei "C:\Program Files (x86)\Windows Media Player\Visualizations\MediaPlayer_10.dll" gibt's übrigens auf keinem meiner Systeme, weder Win10 noch Win7 (auf letzterem gibt's noch nicht einmal das Verzeichnis Visualizations). Aber das mag damit zusammenhängen, dass ich keinen WMP verwende.

Grüße
Dalai
Wenn das Plugin nicht registriert bzw. Installiert wird ist es in meinem Player auch nicht vorhanden.
Von daher ist das erst einmal egal, nur wenn dann muss es auch funktionieren und das hat es bisher unter Win7 immer getan.

Zitat:
Und wie prüfst du, ob die Rückgabe erfolgreich war, d.h. etwas Benutzbares/Sinnvolles enthält?
Delphi-Quellcode:
function TWMPHelper.RenderWindowed(var pData: TimedLevel; fRequiredRender: Bool): Bool;

begin
  Result := False;
  try
    EnterCriticalSection(CritSect);

    if Assigned(_IWmpEffects2) then
      try
        if _IWmpEffects2.RenderWindowed(pData, fRequiredRender) = S_OK then
          Result := True;
      except
        Result := False;
      end;
  finally
    LeaveCriticalSection(CritSect);
  end;

end;
Sorry das ist uninteressant denn wie du sehen kannst wird ja innerhalb der IDE korrekt gerendert.
Aber nochmal.. nicht als eigenständige Exe.
Wenn ich also Debugge und hier true zurück geliefert wird ergibt das schon etwas sinnvolles.
Es ist in der Entwicklungsumgebung auch alles korrekt!
Nur ich kann schwerlich einen "Fehler" finden der in der Entwicklungsumgebung nicht existent ist aber ohne schon.

Zitat:
Mir war nicht klar, dass Du das Arbeitsverzeichnis im Programm explizit setzt. In dem Falle ist / war mein Vorschlag natürlich für die Katz.
Kein Problem bin ja froh über jeden Tip den ich bekommen kann. Danke nochmal.

Zitat:
Man kann dort sehen, ob die Suche nach einer Datei erfolgreich war oder eben nicht.
Das kann der ProcessMonitor auch er teilt mir auch mit das die Datei AlbumArt_{8888F348-E19F-44C3-B158-27605170DC2F}_Large.jpg nicht gefunden wurde.
Trotzdem rendert in der IDE das Plugin korrekt.

Zitat:
Wenn z. B. das Arbeitsverzeichnis der IDE E:\Delphi\ wäre, wäre das Arbeitsverzeichnis des aus der IDE gestartete Programmes ebenfalls E:\Delphi\.
Nicht wenn es als Release erstellt wurde dann hat das gesetzte Arbeitsverzeichnis keine Auswirkung.
Oder?
Zitat:
Gibt es nun Abhängigkeiten zu DLLs, PlugIns oder sonstigen Dateien, so kann es passieren, dass sie, ausgehend vom Arbeitsverzeichnis E:\Delphi\, gefunden würden, aber ausgehend vom Arbeitsverzeichnis G:\MeineProgramme\ nicht.
Ich muss da nix suchen also wo sich die DLL befindet.
Es ist eine ActiveX.dll und wird Systemweit registriert von daher sollte es egal sein welcher Arbeitspfad gesetzt ist.

Zitat:
sondern um irgendein Konfigurations- und/oder Abhängigkeitsproblem, das sich in dieser Form nur unter Windows 10 Alpha ergibt.
Ja leider, es scheint bald so zu sein Alpha halt.
Werde das wohl überarbeiten müssen erklärt aber immer noch nicht warum es in der IDE funktioniert.
Und wie soll man einen Fehler beheben der eigentlich nicht existiert das fuchst mich gewaltig.

gruss

Geändert von EWeiss (23. Dez 2018 um 17:46 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.555 Beiträge
 
Delphi 7 Professional
 
#7

AW: UAC Steuerungsdialog Win10

  Alt 23. Dez 2018, 17:53
Zitat:
Man kann dort sehen, ob die Suche nach einer Datei erfolgreich war oder eben nicht.
Das kann der ProcessMonitor auch er teilt mir auch mit das die Datei AlbumArt_{8888F348-E19F-44C3-B158-27605170DC2F}_Large.jpg nicht gefunden wurde.
Trotzdem rendert in der IDE das Plugin korrekt.
Da muss ich jetzt mal nachfragen:

Wird sowohl aus der IDE als auch ohne IDE die Datei nicht gefunden, aber aus der IDE heraus trotzdem gerendert?
Gibt der ProcessMonitor auch eine Info zum vollständigen Pfad der Datei AlbumArt_{8888F348-E19F-44C3-B158-27605170DC2F}_Large.jpg aus?
Sind die Dateien immer mit absoluten Pfadangaben versehen oder gibt es eventuell auch relative Pfadangaben?

Wenn auch eventuell weit hergeholt:

Könntest Du mal die Umgebungsvariabeln des Programmes aufgerufen aus der IDE mit denen eines "Solo-Aufrufes" vergleichen. Eventuell gibt es da ja in der Path-Variabel ... oder sonstwo einen Unterscheid, der zu diesem seltsamen Seiteneffekt führt.

Der Processmonitor kann einem ja die von 'nem Prozess geladenen Module anzeigen, gibt es dort eventuell Unterschiede?
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.555 Beiträge
 
Delphi 7 Professional
 
#8

AW: UAC Steuerungsdialog Win10

  Alt 23. Dez 2018, 17:15
Neben dem ProcessMonitor gibt es bei SysInternals auch noch ein Programm FileMon.Exe.

Das kann ausführlich protokollieren, welche Datei von einem Prozess gesucht wird, welche geöffnet wird, Lese- und Schreiboperationen ...
Man kann dort sehen, ob die Suche nach einer Datei erfolgreich war oder eben nicht. Hier müsste man mal schauen, ob irgendwas als nicht erfolgreich protokolliert wird, wo gesucht wurde und wo hätte gesucht werden müssen.
Theoretisch müssten die Protokolle ja beim Aufruf aus der IDE und beim Aufruf ohne IDE identisch sein. Frage ist halt, gibt es Unterschiede und wenn ja, wie lassen sie sich begründen.

Weiß nicht, ob FileMon.exe eventuell mehr Infos liefert, als der ProcessMonitor. Man kann sich das Ergebnis in 'ne Datei schreiben lassen und darin dann gezielt suchen, ob es irgendwelche Unstimmigkeiten gibt.

Mir war nicht klar, dass Du das Arbeitsverzeichnis im Programm explizit setzt. In dem Falle ist / war mein Vorschlag natürlich für die Katz.

Zitat:
Was hat das Arbeitsverzeichnis damit zu tun das sich meine Anwendung in der IDE anders verhält als alleine?
Wenn z. B. das Arbeitsverzeichnis der IDE E:\Delphi\ wäre, wäre das Arbeitsverzeichnis des aus der IDE gestartete Programmes ebenfalls E:\Delphi\.
Startet man das Programm aber nicht aus der IDE und die Exe läge z. B. im Verzeichnis G:\MeineProgramme\, so wäre das Arbeitsverzeichnis in diesem Falle G:\MeineProgramme\.
Gibt es nun Abhängigkeiten zu DLLs, PlugIns oder sonstigen Dateien, so kann es passieren, dass sie, ausgehend vom Arbeitsverzeichnis E:\Delphi\, gefunden würden, aber ausgehend vom Arbeitsverzeichnis G:\MeineProgramme\ nicht.
Es könnte sich bei dem von Dir beobachteten Verhalten um eine derartige Konstellation handeln, muss es aber nicht. Es ist halt nur eine Idee für eine mögliche Fehlerursache, aber keinesfalls eine quasi für alle Umstände gültige Aussage.

Ich gehe nicht davon aus, dass es sich um einen Fehler im Compiler bzw. im generierten Code handelt, sondern um irgendein Konfigurations- und/oder Abhängigkeitsproblem, das sich in dieser Form nur unter Windows 10 Alpha ergibt.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.918 Beiträge
 
Delphi 12 Athens
 
#9

AW: UAC Steuerungsdialog Win10

  Alt 23. Dez 2018, 19:45
Neben dem ProcessMonitor gibt es bei SysInternals auch noch ein Programm FileMon.Exe.
FileMon ist der Vorgänger des ProcessMonitors. Damals gab es den neben RegMon usw. einzeln, das kann nun alles der ProcessMonitor.

Kannst du die Logs vielleicht zeigen?
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#10

AW: UAC Steuerungsdialog Win10

  Alt 23. Dez 2018, 19:55
Zitat:
Kannst du die Logs vielleicht zeigen?
Leider nein.. 120MB und aufwärts die letzte ist 364 MB

gruss
  Mit Zitat antworten Zitat
Antwort Antwort


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 19:14 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