使用 Powershell 最大化 Lync Window?

Maximizing Lync Window Using Powershell?

我创建了一个脚本,可以自动与我选择的用户发起视频通话。

当 运行 时,脚本使视频通话停靠,同时 lync 视频通话 window 闪烁。

当脚本为 运行 时,我如何才能使这个 window 最大化并进入全屏?

非常感谢您的帮助。

下面是我的代码

    $assemblyPath = “C:\Program Files (x86)\Microsoft Office 2013\LyncSDK\Assemblies\Desktop\Microsoft.Lync.Model.DLL”
    Import-Module $assemblyPath


    $LyncClient = [Microsoft.Lync.Model.LyncClient]::GetClient()

    $StartVideoCallMethod = {
        $Conversation = $this.ConversationManager.AddConversation();
        $contact = $LyncClient.ContactManager.GetContactByUri("useremailhere") 
        [void]$Conversation.AddParticipant($contact);
        [void]$Conversation.Modalities['AudioVideo'].BeginConnect({}, 0);

        };
    Add-Member -InputObject $LyncClient -MemberType ScriptMethod -Name StartVideoCall -Value $StartVideoCallMethod -Force;

    # Initiate the video call
    $Conversation = $LyncClient.StartVideoCall();

我没有 Lync,但像这样的东西应该可以。我正在使用进程名称(或者我猜它是什么)来获取 Lync window 的 MainWindowHandle,然后发送该命令以最大化(cmd=3,请在此处查看完整的值列表: https://msdn.microsoft.com/en-us/library/windows/desktop/ms633548%28v=vs.85%29.aspx)。

如果有多个进程按名称匹配,此代码可能会中断,但它应该可以帮助您入门;如果您可以获得 PID 或其他更好的唯一标识符,请使用它。只要弄乱 Get-Process 的输出,您应该会看到许多选项,请记住,您始终可以使用 Where 子句来过滤输出。或者当然,如果有一些方法可以直接从 $LyncClient 获取 MainWindowHandle,那就更好了。

$w = Get-Process -Name "Lync"
$Win32ShowWindowAsync = Add-Type –memberDefinition ` 
  '[DllImport("user32.dll")] public static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);' `
-name “Win32ShowWindowAsync” -namespace Win32Functions –passThru

$Win32ShowWindowAsync::ShowWindowAsync($w.MainWindowHandle,3) | Out-Null

这里是我到目前为止的代码。

仍然需要一些调整来完善它,但它完成了工作。

调整将指定要最大化的 window,因为它有时会最大化 lync 联系人 window。

代码

$assemblyPath = “C:\Program Files (x86)\Microsoft Office 2013\LyncSDK\Assemblies\Desktop\Microsoft.Lync.Model.DLL”
    Import-Module $assemblyPath
   $exePath = "C:\Program Files\Microsoft Office 15\root\office15\lync.exe"

   if(!(get-process | ?{$_.path -eq $exePath})){
   Start-Process -FilePath $exePath -WindowStyle Maximized
   Start-Sleep -s 10
   }


   $LyncClient = [Microsoft.Lync.Model.LyncClient]::GetClient()

   $StartVideoCallMethod = {
       $Conversation = $this.ConversationManager.AddConversation();
       $contact = $LyncClient.ContactManager.GetContactByUri("ernesto.gomila@quirchfoods.com") 
       [void]$Conversation.AddParticipant($contact);
       [void]$Conversation.Modalities['AudioVideo'].BeginConnect({}, 0);

       };
   Add-Member -InputObject $LyncClient -MemberType ScriptMethod -Name StartVideoCall -Value $StartVideoCallMethod -Force;

   # Initiate the video call
   $Conversation = $LyncClient.StartVideoCall();

   #Maximize window
   $w = Get-Process -Name "lync"
   $Win32ShowWindowAsync = Add-Type –memberDefinition @"
   [DllImport("user32.dll")] public static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow); 
   "@ -name “Win32ShowWindowAsync” -namespace Win32Functions –passThru

   Start-Sleep -s 2

   $Win32ShowWindowAsync::ShowWindowAsync($w.MainWindowHandle,3) | Out-Null