使用C#.net访问Office剪辑板

时间:2013-06-07 15:21:51

标签: clipboard sta

我使用Visual Studio 2005使用c#.net开发“Windows服务”。我的代码需要访问MS Office剪贴板。但是在尝试访问Clipboard类时,调试器会抛出错误

“在进行OLE调用之前,必须将当前线程设置为单线程单元(STA)模式。确保主函数上标有STAThreadAttribute。”

在运行期间。在检查解决方案时,我发现可以通过在main方法之前添加“[STAThread]”来解决这个问题。但是在添加这个时,我得到了一个编译错误

“找不到类型或命名空间名称'STAThread'(您是否缺少using指令或程序集引用?)”

是否可以使用我当前版本的.NET(.NET 3.0)访问剪贴板?

主方法位于标题为“program.cs”的文件中,逻辑位于标题为“Service.cs”的文件中。 Service.cs使用剪贴板。

/ * Program.cs * /

using System.Collections.Generic;
using System.ServiceProcess;
using System.Text;
using System.Media;
using System.Threading;
namespace WindowsService1
{    
    static class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
#if DEBUG
            Service1 serv = new Service1();
            serv.onDebug();
            System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);                    
#else
            ServiceBase[] ServicesToRun;            
            ServicesToRun = new ServiceBase[] { new Service1() };
            ServiceBase.Run(ServicesToRun);
#endif            
        }
    }
}

/ * Service.cs * /

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Threading;
using System.Timers;
namespace WindowsService1
{
    public partial class Service1 : ServiceBase
    {        
        public Service1()
        {
            InitializeComponent();            
        }        
        public void onDebug()
        {            
            OnStart(null);
        }
        protected override void OnStart(string[] args)
        {                    
            clear_cb();                        
        }
        protected void clear_cb()
        {                     
            Clipboard.Clear();   // This is the line where I get the exception          
        }                
        protected override void OnStop()
        {
            // TODO: To clear the back up Database            
        }
    }
}

0 个答案:

没有答案