我正努力捕捉&将Skype会话保存到文件。我通过本教程 http://galratner.com/blogs/net/archive/2011/08/27/how-to-record-skype-voice-conversations.aspx 也会根据我运行的源代码下载wpf并获得成功。
我遵循一切,但我的申请不起作用。主要问题是通过WndProc()
函数从Skype接收消息。我的WndProc()
函数只调用一次但是我在那里下载的应用程序看到他们的WndProc()
函数重复调用以从skype获取消息。我很长时间都在尝试捕捉Skype对话,但仍然没有运气。
我已经发布了一些关于在这个论坛中捕获Skype对话的问题,但没有得到任何预期的线索。在这里,我附上我的win应用程序的链接,即https://onedrive.live.com/#cid=C4A6F16F34D7540A&id=C4A6F16F34D7540A!126只需下载skypecalltest并运行它,并且明确注意到WndProc()
函数正在重复调用以从Skype获取消息。
这是我的WndProc()
正文
protected override void WndProc(ref Message m)
{
Boolean handled = false;
if (m.Msg == NativeCalls.APIAttach && (uint)m.LParam == NativeCalls.SKYPECONTROLAPI_ATTACH_SUCCESS)
{
// Get the current handle to the Skype window
NativeCalls.HWND_BROADCAST = m.WParam;
handled = true;
m.Result = new IntPtr(1);
}
// Skype sends our program messages using WM_COPYDATA. the data is in lParam
if (m.Msg == NativeCalls.WM_COPYDATA && m.WParam == NativeCalls.HWND_BROADCAST)
{
COPYDATASTRUCT data = (COPYDATASTRUCT) Marshal.PtrToStructure(m.LParam, typeof(COPYDATASTRUCT));
StatusTextBox.Items.Add(data.lpData + Environment.NewLine);
// Check for connection
//if (data.lpData.IndexOf("CONNSTATUS ONLINE") > -1)
// ConnectButton.IsEnabled = false;
// Check for calls
IsCallInProgress(data.lpData);
handled = true;
m.Result = new IntPtr(1);
}
m.Result = IntPtr.Zero;
if (handled) DefWndProc(ref m); else base.WndProc(ref m);
}
请帮助我解决问题并指导我需要纠正的地方WndProc()
应该按预期工作。感谢