当我手动加载主可执行程序集时,剪贴板不起作用

时间:2014-08-18 05:59:40

标签: c# visual-c++

我有一个C#项目,我从VC ++项目运行它。我在我的C#项目中使用了Clipboard;但是当我从VC ++运行我的C#项目时,它无法正常工作。

我的C#代码:

IDataObject dataObject = Clipboard.GetDataObject();
if (dataObject.GetDataPresent("MyType",true))     //This returns true in both of cases
  Console.WriteLine("Here");
object obj = dataObject.GetData("MyType");    //obj is null
MyType data = obj as MyType;
// When I copy data from normal program to called program (from VC++) this is null

显然我不能在Clipboard的项目中使用STAThread。我的C#项目的切入点是STAThread,但我不知道如何制作我的VC ++项目STAThread

修改:Application.OleRequired() == ApartmentState.STA返回true,我的帖子为STAThread

2 个答案:

答案 0 :(得分:0)

只需在主[System::STAThread]

上方添加

答案 1 :(得分:0)

在这个项目中我手动做了一些事情,例如:

  • 通过Assembly.Load()手动加载我的主可执行程序集。
  • 通过处理AppDomain.CurrentDomain.AssemblyResolve += (sender, e)事件来解决程序集。

加载主程序集后,它请求自己获取Assembly个对象。在这种情况下,在加载主可执行程序集后,您应该存储Assembly对象并以AssemblyResolve方法返回它。

这是我的问题,令人难以置信!