#-Begin-----------------------------------------------------------------
$Au3Script = @'
;-Begin-----------------------------------------------------------------
;-Directives----------------------------------------------------------
#NoTrayIcon
AutoItSetOption("MustDeclareVars", 1)
;-Includes------------------------------------------------------------
#Include
#Include
#Include <WinAPISys.au3">
;-Sub Main------------------------------------------------------------
Func Main()
;-Opens the access the memory mapped file---------------------------
Local $hMapping = _WinAPI_OpenFileMapping("Test")
If Not $hMapping Then Return
;-Reads text from memory mapped file--------------------------------
Local $pAddress = _WinAPI_MapViewOfFile($hMapping)
Local $tData = DllStructCreate('wchar[2048]', $pAddress)
Local $sText = DllStructGetData($tData, 1)
Sleep(250)
MsgBox(0, "AutoIt", $sText)
;-Writes text to memory mapped file---------------------------------
_WinAPI_ZeroMemory($tData, 2048)
DllStructSetData($tData, 1, "AutoIt is cool man")
Sleep(250)
;-Closes the access to memory mapped file---------------------------
_WinAPI_UnmapViewOfFile($pAddress)
_WinAPI_CloseHandle($hMapping)
EndFunc
;-Main----------------------------------------------------------------
Main()
;-End-------------------------------------------------------------------
'@
#-Sub Main------------------------------------------------------------
Function Main() {
#-Creates memory mapped file----------------------------------------
[System.IO.MemoryMappedFiles.MemoryMappedFile]$hFile = `
[System.IO.MemoryMappedFiles.MemoryMappedFile]::CreateOrOpen("Test", `
2048, [System.IO.MemoryMappedFiles.MemoryMappedFileAccess]::ReadWrite);
#-Creates accessor for direct access--------------------------------
[System.IO.MemoryMappedFiles.MemoryMappedViewAccessor]$Accessor = `
$hFile.CreateViewAccessor();
#-Writes text to memory mapped file---------------------------------
[String]$Text = "Hello World"
[Byte[]]$Buffer = [System.Text.ASCIIEncoding]::Unicode.GetBytes($Text);
$Accessor.Write(0, $Buffer.Length);
$Accessor.WriteArray(0, $Buffer, 0, $Buffer.Length);
#-Creates AutoIt script file from Here-String-----------------------
$Au3ScriptFile = "C:\Dummy\Script.ps1.au3"
$Au3Script | Out-File -FilePath $Au3ScriptFile
#-Executes AutoIt script synchronously------------------------------
$Cmd = "C:\AutoIt\AutoIt3.exe"
$Par = $Au3ScriptFile
Start-Process $Cmd -ArgumentList $Par -Wait
#-Deletes AutoIt script file----------------------------------------
Remove-Item $Au3ScriptFile
#-Reads text from memory mapped file--------------------------------
$Buffer = New-Object Byte[] 2048;
[Void]$Accessor.ReadArray(0, $Buffer, 0, $Buffer.Length);
$Text = [System.Text.ASCIIEncoding]::Unicode.GetString($Buffer);
$Text = $Text.Trim(0);
Write-Host ($Text);
#-Deletes accessor--------------------------------------------------
$Accessor.Dispose();
#-Deletes memory mapped file----------------------------------------
$hFile.Dispose();
}
#-Main----------------------------------------------------------------
Main
#-End-------------------------------------------------------------------
#-Begin-----------------------------------------------------------------
$Au3Script = @'
;-Begin-----------------------------------------------------------------
;-Directives----------------------------------------------------------
#NoTrayIcon
AutoItSetOption("MustDeclareVars", 1)
;-Includes------------------------------------------------------------
#Include <WinAPI.au3>
#Include <WinAPIFiles.au3>
#Include <WinAPISys.au3>
;-Function strWinList-------------------------------------------------
Func strWinList($Title = Null)
Local $aList, $i, $sList
If $Title = Null Then
$aList = WinList()
Else
$aList = WinList($Title)
EndIf
For $i = 1 To $aList[0][0]
If $aList[$i][0] = "" Then ContinueLoop
$sList = $sList & $aList[$i][0] & ";" & $aList[$i][1] & @CrLf
Next
Return $sList
EndFunc
;-Sub Main------------------------------------------------------------
Func Main()
;-Opens the access the memory mapped file---------------------------
Local $hMapping = _WinAPI_OpenFileMapping("WinList")
If Not $hMapping Then Return
;-Reads text from memory mapped file--------------------------------
Local $pAddress = _WinAPI_MapViewOfFile($hMapping)
Local $tData = DllStructCreate('byte[16384]', $pAddress)
Local $sText = BinaryToString(DllStructGetData($tData, 1), 2)
If $sText = "" Then
Local $sList = strWinList()
Else
Local $sList = strWinList($sText)
EndIf
Sleep(250)
;-Writes text to memory mapped file---------------------------------
_WinAPI_ZeroMemory($tData, 16384)
DllStructSetData($tData, 1, StringToBinary($sList, 2))
Sleep(250)
;-Closes the access to memory mapped file---------------------------
_WinAPI_UnmapViewOfFile($pAddress)
_WinAPI_CloseHandle($hMapping)
EndFunc
;-Main----------------------------------------------------------------
Main()
;-End-------------------------------------------------------------------
'@
#-Function GetWinList-------------------------------------------------
Function GetWinList([String]$Title = "") {
[System.IO.MemoryMappedFiles.MemoryMappedFile]$hFile = `
[System.IO.MemoryMappedFiles.MemoryMappedFile]::CreateOrOpen("WinList", `
16384, [System.IO.MemoryMappedFiles.MemoryMappedFileAccess]::ReadWrite);
[System.IO.MemoryMappedFiles.MemoryMappedViewAccessor]$Accessor = `
$hFile.CreateViewAccessor();
[String]$Text = $Title
[Byte[]]$Buffer = [System.Text.ASCIIEncoding]::Unicode.GetBytes($Text);
$Accessor.Write(0, $Buffer.Length);
$Accessor.WriteArray(0, $Buffer, 0, $Buffer.Length);
$Au3ScriptFile = "C:\Dummy\WinList.ps1.au3"
$Au3Script | Out-File -FilePath $Au3ScriptFile
$Cmd = "C:\AutoIt\AutoIt3.exe"
$Par = $Au3ScriptFile
Start-Process $Cmd -ArgumentList $Par -Wait
Remove-Item $Au3ScriptFile
$Buffer = New-Object Byte[] 16384;
[Void]$Accessor.ReadArray(0, $Buffer, 0, $Buffer.Length);
$Text = [System.Text.ASCIIEncoding]::Unicode.GetString($Buffer);
$Text = $Text.Trim(0);
$Accessor.Dispose();
$hFile.Dispose();
Return $Text
}
#-Sub Main------------------------------------------------------------
Function Main() {
$Text = GetWinList
Write-Host $Text
}
#-Main----------------------------------------------------------------
Main
#-End-------------------------------------------------------------------
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
8 | |
5 | |
5 | |
4 | |
4 | |
4 | |
4 | |
3 | |
3 | |
3 |