C#和VB.NET控制台会话之间的区别

时间:2012-03-06 11:47:29

标签: c# .net vb.net console-application

好的,所以我用C ++编写了this code来调用函数SetThreadDesktop。我在Windows XP上以System用户身份运行时从dll调用此函数。

从C#控制台应用程序调用时,该函数成功,但是从VB.NET控制台应用程序调用时,它不会。使用GetLastError,我看到错误消息是:

SetThreadDesktop failed with error 170: The requested resource is in use (translated from french)

它如何适用于C#控制台应用程序而不适用于VB.NET?顺便说一下,它对winform应用程序也不起作用。任何.NET大师都可以向我解释一下吗? 它是一个我必须改变的编译器选项吗?

由于

2 个答案:

答案 0 :(得分:2)

尝试按照here所述在您的(VB)主要方法上添加<MTAThread>属性。

默认情况下,这是C#和VB控制台项目之间的唯一区别。

答案 1 :(得分:1)

你不应该将extern函数声明为public shared吗?

<DllImport("AltCtrlDelCpp.dll")> _
Public Shared Function SimulateAltControlDel() As Boolean