bebbie
Goto Top

Problem mit Message Box im Skript

Hallo zusammen,

ich habe aus einem Skript eine .exe Datei (Test.exe) erstellt.
Der Abschluss des Skripts wird mit einer Message Box signalisiert.

Nach abgeschlossenem Skript zeigt er mir dann auch die gewünschte Messagebox an. Nach Klick auf ok kommt dann aber noch eine Messagebox mit Titel "Test.exe", Text "OK" und Button "OK".
Warum, ist mir aber nicht klar.
Woran liegt das?
Anbei der Code.

$searchpath = "C:\Test"        
$destinationdir = "C:\Test\fertig"        

# PSWritePDF Modul installieren wenn nicht vorhanden
if (!(Get-Module -ListAvailable -Name PSWritePDF)) {
    Install-Module PSWritePDF -Force
}
# Dateien anhand der Rechnungsnummer im Basename der Datei gruppieren
ls $searchpath -Filter *.pdf -File | group {[regex]::match($_.Basename,'\d+').Value} | %{        
    # wenn es mehr als eine Datei in der Gruppe gibt
    if ($_.Count -gt 1){
        # Dateien der Gruppe anhand ihres Namens absteigend sortieren
        $files = $_.Group | sort Name -Descending
        # Dateien zusammenfassen und als Zieldateiname den der zweiten Datei der Gruppe benutzen
        Merge-PDF -InputFile $files.Fullname -Outputfile (join-path $destinationdir "$($files[1].Name)")    
    }else{
        # nur eine Datei in der Gruppe => verschiebe die Datei nur
        $_.Group | cp -Destination $destinationdir
    }
}
[System.Windows.Forms.MessageBox]::Show("Die abgelegten Dokumente wurden zusammengeführt","Auftrag abgeschlossen")  

Content-ID: 6547292220

Url: https://administrator.de/forum/problem-mit-message-box-im-skript-6547292220.html

Ausgedruckt am: 23.12.2024 um 08:12 Uhr

emeriks
emeriks 15.09.2023 um 10:45:15 Uhr
Goto Top
Hi,
womit hast Du denn das Script zur EXE konvertiert?

E.
Bebbie
Bebbie 15.09.2023 um 11:09:20 Uhr
Goto Top
Hi. Mit dem Modul PS2EXE.
Wenn ich das Skript direkt im Powershell ausführe, kann er gar keine Message Box anzeigen.
Da kommt der Fehler "Der Typ [System.Windows.Forms.MessageBox] wurde nicht gefunden."
emeriks
emeriks 15.09.2023 um 11:24:40 Uhr
Goto Top
Na dann konvertiere doch mal eine simples "Hello World!" Script und teste, ob da auch eine abschließende Messagebox kommt.

Write-Host "Hello World!"  
3063370895
3063370895 15.09.2023 um 11:26:42 Uhr
Goto Top
Zitat von @Bebbie:
Wenn ich das Skript direkt im Powershell ausführe, kann er gar keine Message Box anzeigen.
Da kommt der Fehler "Der Typ [System.Windows.Forms.MessageBox] wurde nicht gefunden."

Weil etwas fehlt:

Add-Type -AssemblyName System.Windows.Forms

Bevor du die MessageBox anzeigst

-Thomas
emeriks
emeriks 15.09.2023 aktualisiert um 11:27:26 Uhr
Goto Top
Ersetze mal
[System.Windows.Forms.MessageBox]::Show("Die abgelegten Dokumente wurden zusammengeführt","Auftrag abgeschlossen")  
durch
$nul = [System.Windows.Forms.MessageBox]::Show("Die abgelegten Dokumente wurden zusammengeführt","Auftrag abgeschlossen")   
3063370895
3063370895 15.09.2023 aktualisiert um 11:32:20 Uhr
Goto Top
Die Extra-Messagebox kommt daher, dass der returnwert der Messagebox auf der Konsole ausgegeben wird.
Dies wird durch PS2EXE in eine MessageBox konvertiert.

Abhilfe schafft:

$ret = [System.Windows.Forms.MessageBox]::Show("Die abgelegten Dokumente wurden zusammengeführt","Auftrag abgeschlossen")  


-Thomas
Bebbie
Bebbie 15.09.2023 um 12:07:23 Uhr
Goto Top
Habe die Lösung von chaoti eingefügt und es hat geklappt.
Danke.
emeriks
emeriks 15.09.2023 um 12:08:20 Uhr
Goto Top
Keine Ursache!