好的,所以我用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大师都可以向我解释一下吗? 它是一个我必须改变的编译器选项吗?
由于
答案 0 :(得分:2)
尝试按照here所述在您的(VB)主要方法上添加<MTAThread>
属性。
默认情况下,这是C#和VB控制台项目之间的唯一区别。
答案 1 :(得分:1)
你不应该将extern函数声明为public shared
吗?
<DllImport("AltCtrlDelCpp.dll")> _
Public Shared Function SimulateAltControlDel() As Boolean