2008-09-26 70 views
4

在很多情況下,從PowerShell腳本調用Win32函數或其他DLL會很有用。要考慮下面的函數簽名:如何使用P/Invoke在PowerShell 1.0中調用Win32函數?

bool MyFunction(char* buffer, int* bufferSize) 

我聽到有東西,使在PowerShell中的CTP 2這更容易,但我很好奇這是怎麼使用PowerShell 1.0最好的做法。需要調用的功能正在使用指針可能會影響解決方案(但我不太瞭解)。

所以問題是編寫一個可以調用導出的Win32函數的PowerShell腳本的最佳方式是什麼?

記住PowerShell 1.0。

回答

5

從Powershell的調用非託管代碼,使用由李福爾摩斯創建的調用-Win32函數。你可以找到源here。在那裏,你可以看到如何調用具有指針的函數的例子,但更瑣碎的用法是:

PS C:\> Invoke-Win32 "msvcrt.dll" ([Int32]) "puts" ([String]) "Test" 
Test 
0