2012-04-02 6 views
0

ich eine einfache Visual Basic inputbox aus einem Powershell-Skript wie folgt darstellen kann:Fokus Fenster von Powershell-Skript erstellt

$null = [reflection.assembly]::loadwithpartialname("microsoft.visualbasic") 
$input = [microsoft.visualbasic.interaction]::inputbox($question, "bla", $text) 

Allerdings ist die inputbox Fenster nicht den Fokus erhalten, die mit der Powershell-Fenster bleibt.

Gibt es eine Möglichkeit, den Fokus auf das Eingabefeldfenster zu legen?

Antwort

1

Sie könnten die InputBox von einem Job aus fokussieren.

Zum Beispiel:

$null = [reflection.assembly]::loadwithpartialname("microsoft.visualbasic") 
$activateWindow = { 
     $null = [reflection.assembly]::loadwithpartialname("microsoft.visualbasic") 
     $isWindowFound = $false 
     while(-not $isWindowFound) { 
      try { 
       [microsoft.visualbasic.interaction]::AppActivate($args[0]) 
       $isWindowFound = $true 
      } 
      catch { 
       sleep -Milliseconds 100 
      } 
     } 
    } 

$job = Start-Job $activateWindow -ArgumentList "Unique Title" 
$input = [microsoft.visualbasic.interaction]::inputbox("What is your answer?", "Unique Title", "none") 
Remove-Job $job -Force 
Write-Host $input -ForegroundColor Yellow 
+0

Dies funktioniert nicht. Das Fenster erhält immer noch keinen Fokus. –

+0

Haben Sie versucht, meinen Code genau so zu kopieren und einzufügen, wie er ist? Wenn dies der Fall ist, versuchen Sie, am Anfang des ScriptBlock-Jobs "sleep 5" zu setzen und nach 5 Sekunden zu sehen, ob die InputBox den Fokus erhält. Wenn ich den Schlaf am Anfang des scriptBlocks platziere, kann ich manuell ein anderes Fenster aktivieren, nachdem die InputBox erscheint, und der Job wird die InputBox nach 5 Sekunden wieder aktivieren. – Rynant

+0

Hey! Es hat jetzt funktioniert. Ich weiß nicht, was ich beim ersten Mal falsch gemacht habe ... Ta. –

Verwandte Themen