PowerShell - jak přesunout okno do popředí
Pomocí skriptu v PowerShellu potřebuji vytvořit a otevřít soubor CSV v Excelu. Vše funguje bez problémů kromě jediné věci. Nepřišel jsem na to, jak na závěr okno Excelu přesunout do popředí. Takto se Excel spustí, soubor se otevře, ale zůstane minimalizovaný na liště. Jakým příkazem okno Excelu vyvolám do popředí abych na něj nemusel klikat myší na liště?
$xl = new-object -comobject excel.application
$xl.visible = $true
$Workbook = $xl.workbooks.OpenText("$Soubor")
$Worksheets = $Workbooks.worksheets
Nezkoušel jsem:
http://stackoverflow.com/questions/2556872/how-to- set-foreground-window-from-powershell-event-subscr iber-action
Tady jsem nasel trosku jednodussi reseni:
http://stackoverflow.com/questions/4993926/maximiz e-window-and-bring-it-in-front-with-powershell
V tom prvnim prikladu pouzit ty 2 poslední radky a upravit nazvy promennych
Podařilo se mi to rozhýbat v případě, že se použije NotePad, ale u Excelu mi stále hlásí chyby a nefunguje.
Našel by se tu někdo, kdo by dokázal k těmto třem řádkům, které otevřou nové okno Excelu přidat přesun okna do popředí aby to fungovalo?
$xl = new-object -comobject excel.application
$xl.visible = $true
$Worksheets = $Workbooks.worksheets
Zkus neco takoveho
$a = Get-Process | Where-Object {$_.Name -like "excel"}
[excel.Interaction]::AppActivate($a.ID)
Tohle sice nefunguje, ale dalo mi to inspiraci a posunulo správným směrem.
Funkční je toto:
$excelpid = (Get-Process | Where-Object { $_.MainWindowHandle -eq $excel.Hwnd }).Id
[Microsoft.VisualBasic.Interaction]::AppActivate($ excelpid)
Takže problém je vyřešen, díky.
Vidíš a šlo jen o ty 2 řádky, o kterých jsem psal už v první odpovědi
Takže tady je odzkoušený funkční script pro otevření CSV souboru v Excelu a přesun okna do popředí, kdyby to někdo někdy potřeboval:
#otevře vytvořený CSV soubor v Excelu
$excel = new-object -comobject excel.application
$excel.visible = $true
$Workbook = $excel.workbooks.OpenText("$Nazev_CSV_souboru_s_ce stou")
$Worksheets = $Workbooks.worksheets
#aktivuje okno Excelu
[void][System.Reflection.Assembly]::LoadWithPartia lName("'Microsoft.VisualBasic")
$excelpid = (Get-Process | Where-Object { $_.MainWindowHandle -eq $excel.Hwnd }).Id
[Microsoft.VisualBasic.Interaction]::AppActivate($ excelpid)