错误:从运行对话框导入DLL

时间:2017-08-15 20:59:54

标签: powershell dll dllimport showwindow add-type

只有在从运行对话框执行以下powershell命令时,我才会遇到DLL导入错误。来自open PowerShell窗口的完全相同的命令执行没有问题。

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

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

打印以下错误: powershell error

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

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

我发现这令人困惑,因为我认为这两种方法都应该产生相同的结果。有没有合理的理由说明为什么会这样?如何解决此错误?

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

1 个答案:

答案 0 :(得分:1)

欢迎来到不同语言的嵌套字符串文字的精彩世界。

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

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

附录:请注意,从PowerShell控制台调用时,上述命令行将。在这种情况下,您需要在命令字符串中为$"字符添加其他(PowerShell)转义符:

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