C# 手动加载主可执行程序集时剪贴板不工作

C# 手动加载主可执行程序集时剪贴板不工作,c#,visual-c++,C#,Visual C++,我有一个C项目,我从VC++项目运行它。我在我的C项目中使用了剪贴板;但是当我从VC++运行我的C项目时,它不能正常工作 我的C代码: IDataObject dataObject = Clipboard.GetDataObject(); if (dataObject.GetDataPresent("MyType",true)) //This returns true in both of cases Console.WriteLine("Here"); object obj = d

我有一个C项目,我从VC++项目运行它。我在我的C项目中使用了剪贴板;但是当我从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
显然,我不能在非静态线程的项目中使用剪贴板。我的C项目的入口点是StatThread,但我不知道如何使我的VC++项目成为StatThread


编辑:Application.OleRequired==ApartmentState.STA返回true,我的线程是STAThread。

只需在主[System::STAThread]上方添加即可。

在这个项目中,我正在手动执行一些操作,例如:

通过assembly.Load手动加载我的主可执行程序集。 通过处理AppDomain.CurrentDomain.AssemblyResolve+=发件人,e事件进行程序集解析。 加载主程序集后,它请求自己获取程序集对象。在这种情况下,在加载主可执行程序集后,您应该存储程序集对象并在AssemblyResolve方法中返回它


那是我的问题,难以置信

我的C项目是STAThread;但是我的问题是关于我的VC++项目。@ AlsiePeHiR.KH,S. Spieker提出的解决方案是将属性添加到C++应用程序。@ UweKeim应该添加“使用命名空间系统”;对于我的代码?@S.Spieker,我无法编译我的代码:“系统”:不是类或命名空间name@AliSepehri.Kh您是否添加了对WiWOSBASE的引用?为什么和如何调用C++中的C来调用新进程?你能发布一些代码吗?@nvoigt我正在使用此方法运行我的C项目: