如何使用powershell中的函数启动线程。我不想使用Start-job方法。我只需要.Net线程。 我试过这段代码:
function test-function
{
[System.Windows.Forms.MessageBox]::Show("yes")
}
$newthread = New-Object System.Threading.Thread(test-function)
$newthread.Start()
谢谢。
答案 0 :(得分:1)
在这种情况下,您可以使用RunSpace方法:
使用Ryan Witschger撰写的以下脚本..
所有评论都有明确说明如何使用它。
http://...&parent_location=Test&abc=123&&...
希望它有所帮助。
答案 1 :(得分:1)
如果您想获得剪贴板,可以使用以下API:
$getclipboardtext=""
$hwndSelect = $API::GetForegroundWindow()
$openclipboard = $API::OpenClipboard($hwndSelect);
[System.IntPtr]$ClipboardDataPointer = $API::GetClipboardData(13);
if($ClipboardDataPointer -ne $null)
{
[System.IntPtr]$Length = $API::GlobalSize($ClipboardDataPointer);
[System.IntPtr]$gLock = $API::GlobalLock($ClipboardDataPointer);
$Lengthint = [int]$Length
[byte[]] $Buffer = New-Object byte[] $Lengthint;
[System.Runtime.InteropServices.Marshal]::Copy($gLock,$Buffer, 0, $Lengthint);
$closeclipboard = $API::CloseClipboard();
$getclipboardtext =[System.Text.Encoding]::Unicode.GetString($Buffer);
}
你可以打电话给API:
Add-Type -TypeDefinition 'public class API{
[DllImport("user32.dll", SetLastError = true)]
public static extern bool CloseClipboard()};
答案 2 :(得分:0)
PetSer使用了一个线程方法,它完全可以替代Thread Start。
$r=[RunspaceFactory]::CreateRunspace(); $r.ApartmentState='STA';
$r.Open()
为了获得你可以使用的状态:
ApartmentState aps = System.Threading.Thread.CurrentThread.GetApartmentState();
答案 3 :(得分:0)
您可以使用start-job
方法,例如:
start-job -scriptblock {你的脚本,功能,方法或......这里}