gpt4 book ai didi

c# - 在 C# 的 VS 2012 Express for Desktop 中链接到 Windows API 的问题

转载 作者:可可西里 更新时间:2023-11-01 14:45:14 25 4
gpt4 key购买 nike

我是 Windows 桌面编程的新手(或者至少从 Windows 3.0 开始我就没做过)。我已经安装了 VS 2012 Express for Desktop。我创建并运行了一个默认的基于表单的项目。现在我想使用以下行添加 Windows API per pinvoke.net :

[DllImport("user32.dll")]
static extern bool SetLayeredWindowAttributes(IntPtr hwnd, uint crKey, byte bAlpha, uint dwFlags);

这段代码有两个错误:

  1. 修饰符“extern”对此项目无效(在属性的右方括号中)
  2. 预期的类、委托(delegate)、枚举、接口(interface)或结构(在 bool 上)

我做错了什么?

最佳答案

确保将此声明放在类定义中,而不是放在类定义之外。

通常,您会将 P/Invokes 保存在名为 NativeMethods 的静态类中,然后您可以使用 NativeMethods.SetLayeredWindowedAttributes(...) 之类的调用来调用它。例如:

internal static class NativeMethods
{
[DllImport("user32.dll")]
public static extern bool SetLayeredWindowAttributes(IntPtr hwnd, uint crKey, byte bAlpha, uint dwFlags);
}

如果你想在没有类型引用的情况下调用它,那么你需要把它放在你调用它的同一个类中,但除非你确定你不会在其他任何地方使用这个 P/Invoke,我不推荐它。

关于c# - 在 C# 的 VS 2012 Express for Desktop 中链接到 Windows API 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13122547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com