4

我试图创建一个允许与 Skype 客户端交互的 Windows 服务。

我正在使用 SKYPE4COM.DLL 库。

当我创建一个简单的控制台或 win32 应用程序时,一切正常(我有这个应用程序的 Skype 请求,它运行良好)。但是当我尝试将此应用程序作为服务运行时,出现错误

Service cannot be started. System.Runtime.InteropServices.COMException (0x80040201): Wait timeout.
at SKYPE4COMLib.SkypeClass.Attach(Int32 Protocol, Boolean Wait)
at Commander.Commander.OnStart(String[] args)
at System.ServiceProcess.ServiceBase.ServiceQueuedMainCallback(Object state)

而且我没有关于连接到 Skype 的进程的通知。

你能给我一个建议,如何将服务附加到 Skype 客户端,或者我需要更改我的 Skype 设置吗?

4

2 回答 2

0

我认为由于 Windows 用户 ID 安全限制,这是不可能的。您必须在与 Skype 相同的用户下运行您的应用程序,否则它将无法附加。

于 2013-03-05T17:35:49.720 回答
0

我遇到过同样的问题。通过将其转换为 Windows 应用程序并将其用作系统托盘应用程序来解决它:

[STAThread]
static void Main()
{
    Log.Info("starting app");

    //facade that contains all code for my app
    var facade = new MyAppFacade();

    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);


    using (ProcessIcon icon = new ProcessIcon(facade))
    {
        icon.Display();

        Application.Run();
    }
}

public class ProcessIcon : IDisposable
{
    private readonly MyAppFacade facade;
    private NotifyIcon ni;

    public ProcessIcon(MyAppFacade facade)
    {
        this.facade = facade;
        this.ni = new NotifyIcon();
    }

    public void Display()
    {
        ni.Icon = Resources.Resources.TrayIcon;
        ni.Text = "Skype soccer";
        ni.Visible = true;

        // Attach a context menu.
        ni.ContextMenuStrip = new ContextMenuStrip();

        var start = new ToolStripMenuItem("Start");
        start.Click += (sender, args) => facade.Start();
        ni.ContextMenuStrip.Items.Add(start);

        var stop = new ToolStripMenuItem("Stop");
        stop.Click += (sender, args) => facade.Stop();
        ni.ContextMenuStrip.Items.Add(stop);

        var exit = new ToolStripMenuItem("Exit");
        exit.Click += (sender, args) => Application.Exit();
        ni.ContextMenuStrip.Items.Add(exit);
    }

    public void Dispose()
    {
        ni.Dispose();
    }
}
于 2014-06-19T19:01:15.793 回答