PowerShell-4.API调用以及DLL调用
生活随笔
收集整理的这篇文章主要介绍了
PowerShell-4.API调用以及DLL调用
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
PowerShell可以直接调用API,So...这东西完全和cmd不是一回事了...
调用API的时候几乎和C#一样(注意堆栈平衡):
调用MessageBox:
$iii = Add-Type -memberDefinition @" [DllImport("User32")] public static extern int MessageBox ( long hWnd, string lpText, string lpCaption, int uType); "@ -passthru -name XXX$iii::MessageBox(0 ,'test' ,'tit' ,0)
PowerShell 调用我们自己的dll
(下面是网上粘贴的别人的,我本意是要调用C++的dll,但是按照C#的姿势调用失败了,现在采取的方案是通过rundll32来桥接PowerShell调用C++的dll。)
用C#写一段代码编译为DLL文件
namespace Math{public class Methods {public Methods() {}public static int CompareI(int a, int b) {if (a>b) return a;else return b;}public int CompareII(int a, int b) {if (a>b) return a;else return b;}} }[void][reflection.assembly]::LoadFile("G:/Math2.dll") [Math.methods]::CompareI(10,2) $a=New-Object Math.Methods $a.CompareII(2,3) [void][reflection.assembly]::LoadFile("D:/VS2008/VC/Math2.dll") 我们必须以这种形式加载DLL库 [Math.methods]::CompareI(10,2) 我们看到Powershell在调用静态方法的时候必须使用方括号加上双冒号“::”的形式来调用静态方法。 $a=New-Object Math.Methods $a.CompareII(2,3) 而一般方法则不然,必须用New-Object来声明一个对象引用。总结
以上是生活随笔为你收集整理的PowerShell-4.API调用以及DLL调用的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: Windows核心编程 第十七章 -内存
- 下一篇: PowerShell-5.网络请求