none
Oder Funktion über Text eingabe RRS feed

  • Frage

  • Guten Morgen,

    ich wollte kurz Fragen, ob die Möglichkeit besteht eine oder funktion in die Text eingabe zu legen.

    Sprich: Werden Buchstaben einegeben, so soll eine Dokumenten suche öffnen, in der man auch die Datei öffnen kann.
                Werden Zahlen einegen, so soll sich direkt das Dokument öffnen.

    Mein aktueller Quellcode:

    Add-Type -AssemblyName System.Windows.Forms
    Add-Type -AssemblyName System.Drawing
    
    $form = New-Object System.Windows.Forms.Form
    $form.Text = 'Gefahrstoff Ausgabe'
    $form.Size = New-Object System.Drawing.Size(300,200)
    $form.StartPosition = 'CenterScreen'
    
    $okButton = New-Object System.Windows.Forms.Button
    $okButton.Location = New-Object System.Drawing.Point(75,120)
    $okButton.Size = New-Object System.Drawing.Size(75,23)
    $okButton.Text = 'OK'
    $okButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
    $form.AcceptButton = $okButton
    $form.Controls.Add($okButton)
    
    $cancelButton = New-Object System.Windows.Forms.Button
    $cancelButton.Location = New-Object System.Drawing.Point(150,120)
    $cancelButton.Size = New-Object System.Drawing.Size(75,23)
    $cancelButton.Text = 'Cancel'
    $cancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
    $form.CancelButton = $cancelButton
    $form.Controls.Add($cancelButton)
    
    $label = New-Object System.Windows.Forms.Label
    $label.Location = New-Object System.Drawing.Point(10,20)
    $label.Size = New-Object System.Drawing.Size(280,20)
    $label.Text = 'Bitte gib einen Namen ein oder Scanne den Barcode'
    $form.Controls.Add($label)
    
    $textBox = New-Object System.Windows.Forms.TextBox
    $textBox.Location = New-Object System.Drawing.Point(10,40)
    $textBox.Size = New-Object System.Drawing.Size(260,20)
    $form.Controls.Add($textBox)
    
    $form.Topmost = $true
    
    $form.Add_Shown({$textBox.Select()})
    $result = $form.ShowDialog()
    
    if ($result -eq [System.Windows.Forms.DialogResult]::OK)
    {
        $x = $textBox.Text
        $x = Start-Process  "C:\Program Files\Tracker Software\PDF Editor\PDFXEdit.exe" "C:\Users\Fabbi\Documents\$x.pdf"
        $x = Start-Process  "C:\Users\Fabbi\Desktop\Stop.bat"
    }

    Die Batch Stop Killt PDFXEdit und startet das Powershell programm neu.

    Grüße

    Fabian

    Mittwoch, 29. Juli 2020 06:41

Antworten

  • Es gibt da meherer Möglichkeiten:
    https://stackoverflow.com/questions/10928030/in-powershell-how-can-i-test-if-a-variable-holds-a-numeric-value

    Da die EIngabe aber in ein Zeichenfeld passiert, wird die RegEx-Variante die beste sein:

    $testvar -match '^[0-9]+$'
    $testvar -match '^\d+$'

    Mittwoch, 29. Juli 2020 18:23