Попытка отобразить GIF в PowerShell - PullRequest
2 голосов
/ 28 февраля 2020

Я использую следующее, чтобы показать gif, но он останавливает выполнение остальной части скрипта.

Если я изменяю на $ form.show (), он запускает остальную часть скрипта, но gif не делает работа

Есть идеи?

   [void][reflection.assembly]::LoadWithPartialName("System.Windows.Forms")

$file = (get-item "666.gif")

$img = [System.Drawing.Image]::Fromfile($file);

[System.Windows.Forms.Application]::EnableVisualStyles();
$form = new-object Windows.Forms.Form
$form.Width =  $img.Size.Width;
$form.Height =  $img.Size.Height;
$form.TopMost = $false
$form.FormBorderStyle = $none;
$Form.ControlBox = $False
$pictureBox = new-object Windows.Forms.PictureBox
$pictureBox.Width =  $img.Size.Width;
$pictureBox.Height =  $img.Size.Height;
$pictureBox.Image = $img;
$form.controls.add($pictureBox)
$form.Add_Shown( { $form.Activate() } )
$form.ShowDialog()

Ответы [ 2 ]

1 голос
/ 01 марта 2020

Используйте Показать и правильно установите свойство borderstyle.

Попробуйте это:

[void][reflection.assembly]::LoadWithPartialName("System.Windows.Forms")

$img = [System.Drawing.Image]::Fromfile("666.gif");

[System.Windows.Forms.Application]::EnableVisualStyles();
$form = new-object Windows.Forms.Form
$form.Width =  $img.Size.Width;
$form.Height =  $img.Size.Height;
$form.TopMost = $false
$form.FormBorderStyle = [System.Windows.Forms.BorderStyle]::None;
$Form.ControlBox = $False
$pictureBox = new-object Windows.Forms.PictureBox
$pictureBox.Width =  $img.Size.Width;
$pictureBox.Height =  $img.Size.Height;
$pictureBox.Image = $img;
$form.controls.add($pictureBox)
$form.Add_Shown( { $form.Activate() } )
$form.Show()

1..20 | %{"Continue program {0}" -f $_}
1 голос
/ 28 февраля 2020

Запустив скрипт в другом пространстве выполнения, вы получите ожидаемое поведение.

# Create runspace
$runspace = [RunspaceFactory]::CreateRunspace()
$runspace.Open()

# Add script and run asynchronously
$runspace.CreatePipeline{

    Add-Type -AssemblyName System.Windows.Forms

    $image = [Drawing.Bitmap]"C:\sample.gif"

    $pictureBox = [Windows.Forms.PictureBox]@{ Dock = "Fill"; Image = $image }
    $form = [Windows.Forms.Form]@{ Size = $image.Size; FormBorderStyle = "None" }
    $form.Controls.Add($pictureBox)

    $form.ShowDialog()

}.InvokeAsync()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...