1

在具有正确设置的 Win/IE 环境中,您可以启动 .exe 文件。

以下代码可以正常运行以启动 Microsoft Lync(Office Communicator 的新名称)。

...
    <a href="#" onclick="fnShellExecute();">start chat</a>
</body>
</html>
<script type="text/javascript">
    function fnShellExecute()
    {
        var objShell = new ActiveXObject("shell.Application");
        objShell.ShellExecute("communicator.exe", "", "C:\Program Files (x86)\Microsoft Lync", "open", 10);
    }
</script>

但我无法计算出参数(或者如果可能的话)来创建一个快捷方式,该快捷方式将打开 Lync 客户端,同时打开另一个可用用户的聊天框。基本上我知道谁有空,并且我希望能够(在 HTML 中)创建一个简单的链接,该链接将打开一个与该人的聊天窗口(在 WPF 或 Silverlight 或任何内置控件之外)。

有谁知道如何在 javascript 中调整此行以打开指定联系人的 Lync 聊天窗口?

objShell.ShellExecute("communicator.exe", "", "C:\Program Files (x86)\Microsoft Lync", "open", 10);

或者是否有另一种方法可以通过某种快捷方式在聊天模式下打开 Lync?

先感谢您。

4

2 回答 2

3

根据您的要求,最简单的方法是使用现有的NameCtrl角色菜单 - 这是在将鼠标悬停在用户状态图标上时显示在 SharePoint(和其他基于 Web 的应用程序,如 Dynamics CRM)中的弹出菜单。此菜单允许您呼叫用户、开始新对话等。您需要在正在运行的计算机上安装 Office 才能使其工作。

例如,在运行 Office 2007/2010 和 IE 的任何客户端计算机上尝试此操作。将鼠标悬停在“您的联系人”文本上以查看角色菜单:

<script>

var sipUri = "your.contact@your.domain.com";

var nameCtrl = new ActiveXObject('Name.NameCtrl.1');
if (nameCtrl.PresenceEnabled)
{
  nameCtrl.OnStatusChange = onStatusChange;
  nameCtrl.GetStatus(sipUri, "1");
}


function onStatusChange(name, status, id)
{
  // This function is fired when the contacts presence status changes.
  // In a real world solution, you would want to update an image to reflect the users presence
  alert(name + ", " + status + ", " + id);
}

function ShowOOUI()
{
  nameCtrl.ShowOOUI(sipUri, 0, 15, 15);
}

function HideOOUI()
{
  nameCtrl.HideOOUI();
}

</script>

<span onmouseover="ShowOOUI()" onmouseout="HideOOUI()" style="border-style:solid">Your Contact</span>
于 2010-10-25T11:46:58.743 回答
0

如果 NameCtrl 答案不符合您的要求,您可以尝试Lync SDK。创建一个使用自动化 API 打开与给定用户的对话的 .NET DLL 将非常简单。

然后,您需要通过 COM 公开它以确保可以从 JavaScript 调用它。同样,使用 .NET 的 COM 互操作功能非常简单。

于 2010-10-25T11:50:12.720 回答