使用WndProc从skype接收消息

时间:2014-04-24 08:36:01

标签: c# winforms skype wndproc

我正努力捕捉&将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()应该按预期工作。感谢

0 个答案:

没有答案