Funktionreferenz


_WinAPI_CreateString

Beschreibung anzeigen in

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]]]] )

Parameter

$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.

Rückgabewert

Erfolg: Der Pointer zum neuerstellten nullterminierenden String. @extended gibt die Länge des Stringpuffers, in TCHARs (ohne dem nullterminierenden Zeichen), zurück.
Fehler: 0

Bemerkungen

Wenn ein String nicht länger benötigt wird, so muss er mit der _WinAPI_FreeMemory() Funktion freigegeben werden.

Verwandte Funktionen

_WinAPI_FreeMemory

Beispiel

#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