Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在VisualStudio2005中的C.NET项目中添加对COM组件的引用?_C# - Fatal编程技术网

C# 如何在VisualStudio2005中的C.NET项目中添加对COM组件的引用?

C# 如何在VisualStudio2005中的C.NET项目中添加对COM组件的引用?,c#,C#,如何在应用程序中添加COM DLL的引用 我尝试添加kernel32.dll和user32.dll,但它们不支持..user32.dll等不是COM dll。您需要通过[DllImport]使用P/Invoke,例如: user32.dll等不是COM dll。您需要通过[DllImport]使用P/Invoke,例如: 您不需要添加对kernel32.dll或user32.dll的引用。这些DLL是Windows的一部分,可以在代码中导入,而无需添加引用。您可以使用P/Invoke来实现这一点

如何在应用程序中添加COM DLL的引用


我尝试添加kernel32.dll和user32.dll,但它们不支持..

user32.dll等不是COM dll。您需要通过[DllImport]使用P/Invoke,例如:


user32.dll等不是COM dll。您需要通过[DllImport]使用P/Invoke,例如:


您不需要添加对kernel32.dll或user32.dll的引用。这些DLL是Windows的一部分,可以在代码中导入,而无需添加引用。您可以使用P/Invoke来实现这一点

例如,要调用user32.dll中的函数SendMessage,可以使用以下C代码:

[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);
有关这些DLL中方法的更多信息和代码段,请查看


编辑:您还可以查看关于p/Invoking的更多信息,特别是作者关于样式和最佳实践的一些评论。

您不需要添加对kernel32.dll或user32.dll的引用。这些DLL是Windows的一部分,可以在代码中导入,而无需添加引用。您可以使用P/Invoke来实现这一点

例如,要调用user32.dll中的函数SendMessage,可以使用以下C代码:

[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);
有关这些DLL中方法的更多信息和代码段,请查看


编辑:您还可以查看关于p/Invoking的更多信息,特别是作者关于样式和最佳实践的一些评论。

要参考Visual Studio 2005中的COM组件:

从“项目”菜单1中选择“添加引用”。 选择COM选项卡2。 选择要引用的组件,然后单击“确定”。 可能您实际想要做的是调用驻留在DLL中的非托管函数。为此,您需要使用P/Invoke


Marc Gravell的回答涵盖了这方面的语法,但您可以通过查看MSDN上的文档获得更多信息,并快速找到特定函数的正确签名签出Visual Studio 2005中的COM组件:

从“项目”菜单1中选择“添加引用”。 选择COM选项卡2。 选择要引用的组件,然后单击“确定”。 可能您实际想要做的是调用驻留在DLL中的非托管函数。为此,您需要使用P/Invoke


Marc Gravell的回答涵盖了这方面的语法,但您可以通过查看MSDN上的文档获得更多信息,并快速找到特定函数的正确签名签出

您想对这些DLL做什么?它们不是COM DLL。实际上,您想如何处理这些DLL?它们不是COM DLL,只是一个小小的吹毛求疵:您为P/Invoke发布的MSDN文档看起来像是针对Compact框架的,如果这不是asker的目标,那么它可能会有一些细微的差异。然而,我意识到问题并没有具体说明,这可能仍然包含有用的信息。诚然,我没有检查,并将更新链接,以免造成混乱。感谢您指出这一点:只是一个小小的吹毛求疵:您为P/Invoke发布的MSDN文档看起来像是针对Compact框架的,如果这不是asker的目标,那么它可能会有一些细微的差异。然而,我意识到问题并没有具体说明,这可能仍然包含有用的信息。诚然,我没有检查,并将更新链接,以免造成混乱。感谢您指出: