使用Powershell最大化Lync窗口?

时间:2015-05-08 14:23:01

标签: powershell lync

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

运行时,脚本会停止视频通话,lync视频通话窗口会闪烁。

我怎样才能让这个窗口最大化并在脚本运行时进入全屏?

非常感谢你的帮助。

以下是我的代码

    $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();

2 个答案:

答案 0 :(得分:1)

我没有Lync,但这样的事情应该有效。我正在使用进程名称(或我猜它是什么)来获取Lync窗口的MainWindowHandle,然后发送一个命令以最大化(cmd = 3,请参阅此处获取完整的值列表:{{3 }})。

如果多个进程按名称匹配,则此代码可能会中断,但它应该让您开始;如果您可以获得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

答案 1 :(得分:0)

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

仍然需要一些调整才能完善它,但它可以完成任务。

调整将指定哪个窗口最大化,因为它有时会最大化lync联系人窗口。

代码

$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