在具有正确设置的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?
提前谢谢。
答案 0 :(得分: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>
答案 1 :(得分:0)
如果NameCtrl答案不符合您的要求,您可以尝试Lync SDK。创建一个使用Automation API打开与给定用户的对话的.NET DLL非常简单。
然后,您需要通过COM公开它,以确保可以从JavaScript调用它。同样,使用.NET的COM Interop功能非常简单。