Hey Leute:
hab mal ne Frage zu folgendem Skript:
script1.au3
[autoit]
#include "ExchangeVariables.au3"
#include <ScreenCapture.au3>
#include <WinAPI.au3>
HotKeySet("{ENTER}", "_SendScreenShot")
Global $bDone = False
_ExchangeVariables_Startup(1, 'ExchangeVariables Send Bitmap Example')
While 1
Sleep(10)
WEnd
Func _SendScreenShot()
Local $hBmp = _ScreenCapture_Capture()
Local $hDC = _WinAPI_GetDC(0)
Local $tBitmapInfo = DllStructCreate($tagBITMAPINFO)
DllStructSetData($tBitmapInfo, "Size", DllStructGetSize($tBitmapInfo))
_WinAPI_GetDIBits($hDC, $hBmp, 0, 0, 0, DllStructGetPtr($tBitmapInfo), 0)
Local $iSize = DllStructGetData($tBitmapInfo, "SizeImage")
Local $iWidth = DllStructGetData($tBitmapInfo, "Width")
Local $iHeight = DllStructGetData($tBitmapInfo, "Height")
DllStructSetData($tBitmapInfo, "Compression", 0); Keine Ahnung, warum man das wieder reseten muß...
Local $sSize = "byte[" & $iSize & "]"
Local $tBits = DllStructCreate($sSize)
Local $iLines = _WinAPI_GetDIBits($hDC, $hBmp, 0, $iHeight, DllStructGetPtr($tBits), DllStructGetPtr($tBitmapInfo), 0)
_WinAPI_DeleteObject($hBmp)
_WinAPI_ReleaseDC(0, $hDC)
_ExchangeVariables_SetVariable(2, "tBitmapInfo", $tBitmapInfo, $tagBITMAPINFO)
_ExchangeVariables_SetVariable(2, "tBits", $tBits, $sSize)
_ExchangeVariables_SetVariable(2, "bSent", True)
$tBits = 0
EndFunc ;==>_SendScreenShot
script2.au3
[autoit]
#include "ExchangeVariables.au3"
#include <GDIPlus.au3>
#include <WinAPI.au3>
$pID = Run(@ScriptDir & "\Script1.exe")
HotKeySet("{ESC}", "_Exit")
Global $tBits, $tBitmapInfo, $bSent = False
_GDIPlus_Startup()
_ExchangeVariables_Startup(2, 'ExchangeVariables Send Bitmap Example', '_VarMsg')
Global $hBitmap
While 1
Sleep(100)
WEnd
_GDIPlus_Shutdown()
Func _VarMsg($hWnd, $iMsg, $wParam, $lparam)
If $bSent = True Then
Local $iWidth = DllStructGetData($tBitmapInfo, "Width")
Local $iHeight = DllStructGetData($tBitmapInfo, "Height")
Local $hDC = _WinAPI_GetDC(0)
Local $hBmp = _WinAPI_CreateCompatibleBitmap($hDC, $iWidth, $iHeight)
_WinAPI_SetDIBits(0, $hBmp, 0, $iHeight, DllStructGetPtr($tBits), DllStructGetPtr($tBitmapInfo), 0)
$hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hBmp)
_GDIPlus_ImageSaveToFile($hBitmap, @ScriptDir & "\Receive.bmp")
_WinAPI_DeleteObject($hBmp)
_WinAPI_ReleaseDC(0, $hDC)
$tBits = 0
$tBitmapInfo = 0
$bSent = False
MsgBox(0, "Bild erhalten", "Script 2 hat ein Bild erhalten und unter: " & @ScriptDir & "\Receive.bmp gespeichert")
_Exit()
EndIf
EndFunc ;==>_VarMsg
Func _Exit()
ProcessClose($pID)
Exit
EndFunc ;==>_Exit
Script1.au3 zuerst als EXE compilieren
Script2.au3 ausführen (startet automatisch Script1.exe)
dann Enter drücken
Vielen dank an: eukalyptus
meine Frage:
_ExchangeVariables_SetVariable(2, "tBits", $tBits, $sSize)
[/autoit]2 ist für die ScriptID-ummer, an die es gesenet wird
tBits ist die Variable, in die es geschrieben wird...
$tBits ist der Wert, der in diese Variable geschrieben wird, ABER WAS ZUM TEUFEL IST $sSize???
Kann mir das jemand erklären??
Vielen dank!