Kopiert einen angegebenen String zu einem neu allokierten Speicherblock und gibt dessen Zeiger zurück.
#include <WinAPIMem.au3>
_WinAPI_CreateString ( $sString [, $pString = 0 [, $iLength = -1 [, $bUnicode = True [, $bAbort = True]]]] )
$sString | Der Quellstring welcher kopiert werden soll. |
$pString | [optional] Ein Pointer zu einem existierenden String welches mit einem neuen String ersetzt werden soll. Wenn dieser Parameter ein gültiger Stringzeiger ist, so wird der Speicher für den neuen String reallokiert. Jedoch wird der neue Speicher an einer anderen Position allokiert. Deshalb sollte man immer den Zeiger nutzen welche diese Funktion zurückgibt. Dieser Parameter ist 0 (Standard) oder ein ungültiger Stringpointer, so wird die Funktion neuen Speicher allokieren. |
$iLength | [optional] Die benötigte Puffergröße, in TCHARs, ohne nullterminierende Zeichen. Wenn dieser Parameter -1 ist, so wird die Puffergröße gleich der Länge des Quellstrings sein. Wenn $iLength kleiner ist als die Länge des Quellstrings, so wird der String zur angegebenen Länge abgeschnitten. Standard ist 1. |
$bUnicode | [optional] Gibt an, ob ein String Unicode oder ASCII codiert ist. Gültige Werte sind: True - Unicode (Standard). False - ASCII. |
$bAbort | [optional] Gibt an ob das Skript beendet werden soll, wenn nicht genug Speicher zur Verfügung steht. Gültige Werte sind: True - Zeigt eine Fehlermeldung und beendet das Skript mit dem Fehlrecode 1 (Standard). False - Führt das Skript fort und gibt einen Fehler zurück. |
Erfolg: | Der Pointer zum neuerstellten nullterminierenden String. @extended gibt die Länge des Stringpuffers, in TCHARs (ohne dem nullterminierenden Zeichen), zurück. |
Fehler: | 0 |
Wenn ein String nicht länger benötigt wird, so muss er mit der _WinAPI_FreeMemory() Funktion freigegeben werden.
#include <GUIConstantsEx.au3>
#include <SendMessage.au3>
#include <WinAPIMem.au3>
#include <WinAPIMisc.au3>
#include <WinAPISysWin.au3>
Global Const $WM_MYMESSAGE = _WinAPI_RegisterWindowMessage('MyMessage')
_Example()
Func _Example()
Local $hForm = GUICreate('Test ' & StringReplace(@ScriptName, '.au3', '()'), 400, 93)
Local $idInput = GUICtrlCreateInput('', 20, 20, 360, 20)
Local $idButton = GUICtrlCreateButton('Send', 165, 59, 70, 23)
GUIRegisterMsg($WM_MYMESSAGE, 'WM_MYMESSAGE')
GUISetState(@SW_SHOW)
Local $pString
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
Case $idButton
$pString = _WinAPI_CreateString(GUICtrlRead($idInput))
_WinAPI_SetMessageExtraInfo($pString)
_SendMessage($hForm, $WM_MYMESSAGE, 1, 255)
_WinAPI_FreeMemory($pString)
EndSwitch
WEnd
EndFunc ;==>_Example
Func WM_MYMESSAGE($hWnd, $iMsg, $wParam, $lParam)
#forceref $hWnd, $iMsg
Local $pString = _WinAPI_GetMessageExtraInfo()
If _WinAPI_IsMemory($pString) Then
ConsoleWrite('WM_MYMESSAGE | WP = ' & Number($wParam) & ' | LP = ' & Number($lParam) & ' | EXTRA = "' & _WinAPI_GetString($pString) & '"' & @CRLF)
EndIf
EndFunc ;==>WM_MYMESSAGE