Я написал какой -то код в PowerShell, который открывает два документа Word в Word, а затем вызывает обзор - сравните .
Однако мне не нравится, как мне нужно искать указатель Hwnd . Но я не могу использовать $ word.application.hwnd .
Кроме того, мое понимание C# плохое, и хотя $ source работает с Add-Type, как показано ниже, это не очень хорошо. Поэтому я хотел бы узнать более подходящий способ вызвать SetForegroundWindow в PowerShell.
cd ~\Documents\
$OrgDocPath = (Get-ChildItem '.\The first doc.docx').FullName
$RevDocPath = (Get-ChildItem '.\The second doc.docx').FullName
$Source = @"
[DllImport("user32.dll")]
public static extern bool SetForegroundWindow(IntPtr hWnd);
"@
$foregroundWindowHelper = Add-Type `
-MemberDefinition $Source -Name "ForegroundWindowHelper" `
-Namespace "Win32Functions" `
-PassThru
$Word = New-Object -ComObject Word.Application
$OrgDoc1 = $Word.Documents.Open($OrgDocPath, $false, $true) #open hidden
$RevDoc2 = $Word.Documents.Open($RevDocPath, $false, $true) #open hidden
$ComparisonDoc = $Word.CompareDocuments($OrgDoc1, $RevDoc2)
$Doc1.Close($false) #not needed anymore
$Doc2.Close($false) #not needed anymore
$Word.Visible = $true
$ComparisonDoc.Activate()
$Word.ActiveWindow.View.ShowReviewingPane
$WordProc = Get-Process -Name winword |
where MainWindowtitle -like "$($ComparisonDoc.Name)*"
$ForegroundWindowHelper::SetForegroundWindow($WordProc.MainWindowHandle)
Подробнее здесь: https://stackoverflow.com/questions/797 ... of-two-doc