无法捕获 Lync 对话窗口的“NeedsSize”更改事件

Posted

技术标签:

【中文标题】无法捕获 Lync 对话窗口的“NeedsSize”更改事件【英文标题】:Not able to capture "NeedsSize" change event for Lync conversation window 【发布时间】:2012-11-24 12:46:29 【问题描述】:

我正在使用 Lync 2010 SDK 开发示例应用程序。在该应用程序中,我想捕获 Lync IM 窗口调整大小事件。

据我所知,Lync 2010 SDK 确实提供 API 来捕获 Lync IM 窗口的重新调整大小事件。

应用程序已成功启动,并且在启动 IM 窗口时,我确实收到了 Lync Conversation added 事件,但在那之后,我在调整相同 Lync IM 窗口的大小时没有收到 resize 事件。这是示例应用程序的代码。请查看代码,如果缺少某些内容,请告诉我。

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Microsoft.Lync.Model;
using Microsoft.Lync.Model.Conversation;
using Microsoft.Lync.Model.Extensibility;

namespace LyncWpfSample

/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1 : Window

    LyncClient _client = null;

    ConversationManager _conversationManager = null;

    Automation _automation = null;


    public Window1()
    
        InitializeComponent();

        _client = LyncClient.GetClient();

        _conversationManager = _client.ConversationManager;

        _conversationManager.ConversationAdded += new EventHandler<ConversationManagerEventArgs>(ConversationManager_ConversationAdded);
    

    void ConversationManager_ConversationAdded(object sender, ConversationManagerEventArgs e)
    
        Conversation conv = e.Conversation;

        ConversationWindow convWindow = _automation.GetConversationWindow(conv);

        convWindow.NeedsSizeChange += new EventHandler<ConversationWindowNeedsSizeChangeEventArgs>(Conversation_convWindow_NeedsSizeChange);
        convWindow.NeedsAttention+=new EventHandler<ConversationWindowNeedsAttentionEventArgs>(Conversation_convWindowNeedsAttention);

    

    void Conversation_convWindow_NeedsSizeChange(object sender, ConversationWindowNeedsSizeChangeEventArgs e)
    
        MessageBox.Show("Conversation Window Size changed");
    

    void Conversation_convWindowNeedsAttention(object sender, ConversationWindowNeedsAttentionEventArgs e)
    
        MessageBox.Show("Conversation Window Needs Attention");
    

【问题讨论】:

【参考方案1】:

只有当我们使用 Conversation.Dock( [其他窗口句柄] ) 将该 IM 窗口停靠到某个其他窗口时,我们才能获得 Lync IM 调整大小事件。

如果我们没有将此 IM 停靠到另一个窗口,我们将不会收到调整大小事件。

【讨论】:

以上是关于无法捕获 Lync 对话窗口的“NeedsSize”更改事件的主要内容,如果未能解决你的问题,请参考以下文章

Lync NotInitializedException 在 Windows 8 上无法捕获

Lync SDK - 为 Lync 制作插件 - 对话窗口扩展

Lync 2010 API - 禁止 Toast 和对话窗口

将文本添加/修改到 lync 对话窗口的 API 代码

我可以将键盘快捷键转发到停靠在 WPF 窗口中的 lync 对话窗口吗

如何在 lync cwe 托管的 xbap 中获取当前对话?