【问题标题】:Error: Import DLL from run dialog错误:从运行对话框导入 DLL
【发布时间】:2018-01-23 21:11:14
【问题描述】:

我似乎只在从运行对话框执行以下 powershell 命令时遇到 DLL 导入错误。从打开的 powershell 窗口执行完全相同的命令没有问题。

产生 RUN 对话框命令时出错:

Powershell $k=Add-Type -MemberDefinition '[DllImport("user32.dll")]public static extern bool ShowWindow(IntPtr h, int n);' -Name w -PassThru

打印以下错误:

在已打开的 powershell 窗口中运行相同的代码时不会返回错误:

$k=Add-Type -MemberDefinition '[DllImport("user32.dll")]public static extern bool ShowWindow(IntPtr h, int n);' -Name w
-PassThru;

我觉得这非常令人困惑,因为我认为这两种方法都应该产生相同的结果。为什么会发生这种情况有任何合乎逻辑的理由吗?如何解决此错误?

代码的目的是最小化 powershell 窗口。我知道还有其他方法可以实现这一点。

【问题讨论】:

    标签: powershell dll dllimport showwindow add-type


    【解决方案1】:

    欢迎来到跨不同语言嵌套字符串文字的美妙世界。

    在要由 PowerShell 执行的整个命令行周围加上双引号,并用反斜杠转义嵌套的双引号:

    powershell "$k=Add-Type -MemberDefinition '[DllImport(\"user32.dll\")]pub...;"
    #          ^                                          ^           ^          ^
    

    附录:请注意,当从 PowerShell 控制台调用时,上述命令行将不起作用。在这种情况下,您需要为命令字符串中的 $" 字符提供额外的 (PowerShell) 转义:

    powershell "`$k=Add-Type -MemberDefinition '[DllImport(\`"user32.dll\`")]pub...;"
    #           ^                                           ^            ^
    

    【讨论】:

    猜你喜欢
    • 2015-06-30
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多