我已经提到了几个来源,并发现无法使用lync sdk以编程方式控制屏幕录制。
所以我采用了spyxx.exe方法,以便能够找出对话窗口为了开始录制而获得的消息(在lync 2013中)
必备: 您应为您的个人资料启用录制
立即见面>致电>分享桌面>选项>开始录制
所以我开始了我的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);
}
完整代码here
答案 0 :(得分: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