Die Anwendung verhält sich beim Start unter Verwendung der zugehörigen Datei unterschiedlich

451
HotN

Ich habe eine benutzerdefinierte Windows-Desktopanwendung, die sich auf einem System mit mehreren Monitoren unerwartet anders verhält, je nachdem, wie es gestartet wurde. Ich gehe davon aus, dass es für jede Startmethode identisch sein sollte. Bei jeder Methode wird eine Datei geöffnet, die der Anwendung zugeordnet wurde.

Hier sind die Methoden des Startens, die ich ausprobiert habe, und das daraus resultierende Verhalten:

  1. Doppelklicken Sie im Datei-Explorer auf eine zugeordnete Datei:

    Die Anwendung wird gestartet, aber die Benutzeroberfläche wird auf dem Monitor geöffnet, auf dem sich der Datei-Explorer befindet, und nicht auf der primären Anzeige. Teile der Benutzeroberfläche fehlen auch, wenn Sie versuchen, mit der Anwendung zu interagieren.

  2. Ziehen Sie eine zugeordnete Datei in das Anwendungsexe im Datei-Explorer und legen Sie sie dort ab:

    Die Anwendung wird auf der richtigen Anzeige geöffnet und verhält sich normal.

  3. Starten Sie die Anwendung an einer Eingabeaufforderung, indem Sie Folgendes ausführen name_of_application.exe "file_to_open":

    Die Anwendung wird auf der richtigen Anzeige geöffnet und verhält sich normal.

  4. Klicken Sie im Datei-Explorer mit der rechten Maustaste auf die zugehörige Datei und wählen Sie "Öffnen mit ...". Navigieren Sie zur installierten Anwendung und wählen Sie sie aus:

    Zunächst scheint überhaupt nichts zu passieren. Nach etwa 5 Minuten öffnet sich die Anwendung auf der richtigen Anzeige und verhält sich normal. Nach dem erneuten Öffnen derselben verknüpften Datei wird dasselbe Verhalten wie in den Methoden 1-3 beschrieben verwendet. Dies hängt wiederum davon ab, wie die Datei geöffnet wird.

Ich bin nicht sicher, ob es wichtig ist, aber dies ist eine .NET-Anwendung, die mit dem WPF-Framework für .NET 4.7.2 geschrieben wurde. Es ist eine 64-Bit-App. Der Code fordert den primären Monitor von .NET an, was den Systemanzeigeeinstellungen des Benutzers entspricht.

Ich habe die relevanten Registrierungseinträge für die Dateizuordnung geprüft und nichts scheint ungewöhnlich. Siehe die folgenden Screenshots (der zugeordnete Dateityp ist .sejs):

Dateitypzuordnung in der Registrierung

Anwendungszuordnung in der Registry

Ich habe auch versucht, den im zweiten Bild angezeigten "Command" -Wert aus der Registrierung zu entfernen, was keine Auswirkungen hatte. Soweit ich das beurteilen kann, ist diese Dateizuordnung nichts Ungewöhnliches, die dieses Verhalten verursachen würde.

Ich habe auch versucht, das Installationsprogramm neu zu erstellen, die Installation zu reparieren und meinen Computer neu zu starten.

Dies führt mich zu ein paar Fragen:

  1. Was würde dazu führen, dass Windows die Anwendung auf verschiedenen Monitoren öffnet, je nachdem, wie die verknüpfte Datei an die Anwendung gesendet wird?
  2. Was würde zu einer langen Verzögerung beim Öffnen der Anwendung führen, wenn ich sie beim erneuten Zuordnen einer Datei öffne?
0
Bitte klären Sie in Ihrem Beitrag die verschiedenen Szenarien und ihre Ergebnisse, im Moment ist alles gemischt. harrymc vor 6 Jahren 0
@ harrymc Ja, ich denke, das wurde ein bisschen chaotisch. Das tut mir leid. Ich habe den Post neu geschrieben, was die Dinge hoffentlich klarer macht. HotN vor 6 Jahren 0

1 Antwort auf die Frage

0
harrymc

Der von Ihnen beschriebene Effekt hängt stark von dem Systemaufruf ab, mit dem die Datei gestartet wird. Der Windows-API-Aufruf zum Ausführen eines Programms hat viele Parameter. Es hängt also alles vom jeweiligen Microsoft-Programmierer ab.

Solche Unterschiede treten häufig bei Windows auf, das eine enorme Codebasis hat, die von vielen Programmierern geschrieben wird. Man muss die Unterschiede lernen und sich anpassen, da Windows ein geschlossenes System ist. Sie können Windows nicht "reparieren".

Könnten Sie näher auf "es kommt auf den fraglichen Microsoft-Programmierer" an? Ich bin der Entwickler der App, die gestartet wird, aber soweit der Code dies erkennen kann, führt ein Doppelklick auf eine verknüpfte Datei im Vergleich zum Ziehen und Ablegen einer Datei auf das Exe zu einem App-Start, bei dem nur ein Startargument von bereitgestellt wird Windows ist der Pfad zur Datei. Nach Ansicht der App sind beide Startmethoden identisch. HotN vor 6 Jahren 0
In diesem Fall ist es normal, nur diesen einen Parameter zu haben. Meine Antwort bezog sich auf die Wahl des Monitors, auf dem die Anzeige stattgefunden hat. In Bezug auf die Verzögerung von 5 Minuten ist dies ein Problem Ihrer App, das nur Sie lösen können. Ich bin nie auf ein solches Problem gestoßen, es sei denn, es wurden nicht vorhandene URLs oder Netzwerkfreigaben referenziert. harrymc vor 6 Jahren 0