1

我参考了几个来源,发现无法使用 lync sdk 以编程方式控制屏幕录制。

因此,我采用了 spyxx.exe 方法,以便能够找出对话窗口获取的消息以开始录制(在 lync 2013 中)

如何开始 lync 录制?

先决条件:您应该为您的个人资料启用录音

立即开会 > 通话 > 共享桌面 > 选项 > 开始录制

录制步骤...

所以我开始了我的 spyxx 程序;开始见面对话;在 spyxx 中找到该窗口,并听取其消息。然后只使用键盘我尝试开始录制并随后记录了窗口接收到的窗口消息。

注意:如果你不想让spyxx.exe得到这么多的鼠标移动事件,你可以完全去掉桌面录制部分,直接打电话直接开始录制。

在研究这些消息时,我认为这两条消息应该可以解决问题......

<000155> 002B030E P message:0x0504 [User-defined:WM_USER+260] wParam:00000000 lParam:00000000
<000156> 002B030E P message:0x0507 [User-defined:WM_USER+263] wParam:00000000 lParam:00000000

但是,在尝试将这些消息发送到对话窗口时,它会失败。

这是负责该特定任务的代码存根:

if(win != null)
{
    Console.WriteLine("{0} ({1})",win.title, win.handle);
    uint msg1 = 0x0504;
    uint msg2 = 0x0507;
    Console.WriteLine("Press for applying messages...");
    Console.ReadLine();
    Win32Native.PostMessage(win.handle, msg1);
    Win32Native.PostMessage(win.handle, msg2);
}

此处提供完整代码

4

1 回答 1

0

为此,我使用了 SendKeys.SendWait 和 SetForegroundWindow 的组合。本质上,这不是向“对话”窗口发送消息。相反,我们正在发送击键。不是一个好的解决方法。众所周知,这是有问题的。相关的代码类似于:

Windowing.SetForegroundWindow(win.Handle);
SendKeys.SendWait("{TAB}");
SendKeys.SendWait("{TAB}");
SendKeys.SendWait("{TAB}");
SendKeys.SendWait("{TAB}");
SendKeys.SendWait("{TAB}");
SendKeys.SendWait("{TAB}");
SendKeys.SendWait("{TAB}");
SendKeys.SendWait("{TAB}");
SendKeys.SendWait("{TAB}");
SendKeys.SendWait(" ");
SendKeys.SendWait("r");

对于整个代码,您可以查看我的 git 项目repo。那里的代码还显示了如何使用相同的方法停止录制。

对于 winapi 函数调用,我使用了 FmUtils.Winapi

于 2016-01-28T16:25:58.440 回答