none
Nach Erstellung einer *.exe mit ps2exe keine highlighted buttons RRS feed

  • Frage

  • Hallo,

    ich habe ein Skript mit Buttons und Progressbar das ich Mittels ps2exe in eine *.exe konvertiere.

    Nach der Erstellung der *.exe "highlighten" die Buttons nicht und die Progressbar sieht auch anders aus.

    So sieht es beim Ausführen des Skriptes aus:

    So nach dem konvertieren:

    Liegt das an dem ps2exe Tool, oder kann ich das irgendwie ändern?

    Jemand Erfahrungen damit oder eine Idee?

    Vielen Dank.

    Gruß Christian

    Mittwoch, 19. Februar 2020 19:59

Antworten

  • Für eine Form-GUI benötigt man eine Manifest-Datei "MyApp.exe.manifest", in der diverse EInstellungen hinterlegt sind. Fehlt das Manifest, läuft die App meist im alten XP-Stil.

    https://docs.microsoft.com/en-us/windows/win32/sbscs/application-manifests

    Ggf. reicht auch ein:

    System.Windows.Forms.Application.EnableVisualStyles()

    https://docs.microsoft.com/de-de/dotnet/api/system.windows.forms.application.enablevisualstyles?view=netframework-4.8
    • Bearbeitet Der Suchende Donnerstag, 20. Februar 2020 12:13
    • Als Antwort markiert yelw0rc Donnerstag, 20. Februar 2020 16:00
    Donnerstag, 20. Februar 2020 12:12

Alle Antworten

  • Probier mal das hier: PS2EXE-GUI



    Blog: http://www.bytecookie.de

    Powershell Code Manager: Link
    (u.a. Codesnippets verwalten + komplexe Scripte graphisch darstellen)

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort.

    Mittwoch, 19. Februar 2020 23:20
    Moderator
  • Ich nutze zwar meistens das Konsole-Tool. Die GUI habe ich aber auch bereits getestet, in der Hoffnung, es

    würde einen Unterschied machen. Aber nein!

    Donnerstag, 20. Februar 2020 07:04
  • Moin,

    ich kenne das Tool nicht, aber das Aussehen der Screenshots legt nahe, dass das Tool eine andere (ältere) Version der WinForms einbindet als die, die in PowerShell adressiert wird.


    Evgenij Smirnov

    http://evgenij.smirnov.de

    Donnerstag, 20. Februar 2020 08:50
  • Für eine Form-GUI benötigt man eine Manifest-Datei "MyApp.exe.manifest", in der diverse EInstellungen hinterlegt sind. Fehlt das Manifest, läuft die App meist im alten XP-Stil.

    https://docs.microsoft.com/en-us/windows/win32/sbscs/application-manifests

    Ggf. reicht auch ein:

    System.Windows.Forms.Application.EnableVisualStyles()

    https://docs.microsoft.com/de-de/dotnet/api/system.windows.forms.application.enablevisualstyles?view=netframework-4.8
    • Bearbeitet Der Suchende Donnerstag, 20. Februar 2020 12:13
    • Als Antwort markiert yelw0rc Donnerstag, 20. Februar 2020 16:00
    Donnerstag, 20. Februar 2020 12:12
  • Das Powershell .manifest-Dateien auswerten würde, wäre mir neu.

    Aber die Visualstyles sind ein guter Tipp, damit werden die vom jeweiligen OS unterstützen Themes für die Forms-Elemente aktiviert und ohne sehen bestimmte Elemente (eben Buttons und Fortschrittsanzeiger) in der Tat so aus wie oben.
    Aber es erklärt nicht den Unterschied in der Ausführung mit oder ohne ps2exe, denn ohne .EnableVisualStyles() sieht die UI immer "alt" aus, auch direkt ausgeführt.

    Die benutzte .Net-Version (Winforms-Version) hat hingegen imho keinen Einfluss auf die Optik, es gab nach 2.0 zwar immer wieder mal neue Features (wenige) und Bugfixes, aber die Veränderung der Optik der Elemente über die Zeit wird nur durch das jeweilige OS und seine Themes bestimmt.
    ps2exe nutzt in meinem kurzen Test auch die jeweils aktuelle .Net-Umgebung. (Es sei denn man nutzt einen der switches).

    Christian, ich würde mal Markus über den Q&A-Bereich des GUI-Tools befragen. Er scheint immer recht schnell zu antworten. ps2exe führt das Script mit einem eigenen PoSh-Host aus, wenn dann weiß er am ehesten ob und wenn ja welche spezielle Bedingungen da herrschen.


    Blog: http://www.bytecookie.de

    Powershell Code Manager: Link
    (u.a. Codesnippets verwalten + komplexe Scripte graphisch darstellen)

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort.

    Donnerstag, 20. Februar 2020 14:56
    Moderator
  • Hallo zusammen,

    @Der Suchende hatte wohl den richtigen Tipp.

    Habe dem Skript folgende Zeile hinzugefügt:

    [System.Windows.Forms.Application]::EnableVisualStyles()

    Nach der Konvertierung sieht es dann wie gewünscht aus.

    ---------------

    When you use Windows Forms dialogs and windows, you may have noticed that they show differently, depending on whether you launched your script from within the ISE editor or from the powershell.exe console.

    This is because the ISE editor enables visual styles by default.

    The console falls back to standard appearance.

    To enable visual styles in the PowerShell console as well, add this line to your code:

    [System.Windows.Forms.Application]::EnableVisualStyles()
    

    Donnerstag, 20. Februar 2020 15:52
  • Prima, dann markiere seine Antwort bitte noch.

    Blog: http://www.bytecookie.de

    Powershell Code Manager: Link
    (u.a. Codesnippets verwalten + komplexe Scripte graphisch darstellen)

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort.

    Donnerstag, 20. Februar 2020 15:58
    Moderator
  • Das Manifest wird ja nicht von Pwoershell sondern von Windows beim Start der exe, Forms und ,Net-Runtime ausgewertet.
    Stichwort z.B.. "DPIAware": Korrekte Anpassung der Form bei unterschiedlchen Bildschirmeinstellungen (also z.B. 125% Monitor1, 100% Monitor2).

    Freitag, 21. Februar 2020 10:23