1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Bebbo

Beiträge von Bebbo

  • iniRead Problem

    • Bebbo
    • 27. Juni 2023 um 13:01

    Hallo zusammen,

    vielen vielen Dank, nun tut es.

    Habe jetzt das kopieren der Daten jeweils einer Variable gegeben und diese vorher Global initialisiert.

    Dann habe ich eine Abfrage gemacht, ob der kopiervorgang erfolgreich war und nun kopiert er diese nun erfolgreich.

    Nun habe ich das gleiche Problem mit dem lesen der Ini Daten.

    Werde dort das gleiche versuchen.

    Hoffe mal das es dann tut.

    Grüße

    Bebbo

  • iniRead Problem

    • Bebbo
    • 26. Juni 2023 um 14:25

    Danke euch beiden,

    also der Pfad ist definitiv korrekt.

    anbei das Bild hierzu!

    aber werde mal versuchen, die Flags direkt einsetzen und schauen ob es dann tut.

    Gruß

    Bebbo

  • iniRead Problem

    • Bebbo
    • 26. Juni 2023 um 13:47

    Hallo zusammen,

    im Zusammenhang mit meiner Ini bin ich auf ein weiteres Problem gestoßen, welches für mich aktuell keinen Sinn ergibt.

    Folgendes Problem:

    Grundsätzlich läuft nun alle bei mir, jedoch versuche ich beim Start meines Skripts 2 Dateien aus unterschiedlichen Pfaden n den Skript Dir zu kopieren.

    Jedoch kopiert es immer nur di erste der beiden Dateien.

    Kann ich nicht 2x FileCopy nacheinander ausführen?

    Anbei der Code und danke vorab für eure Expertise :)

    Code
    $verTag = "10" ; Tested with installer version 10.0.38475.0
    $strTrayTitle = "TeamViewer " & $verTag & " Host Auto-Install"
    FileCopy("D:\WPS3\Daten\USER.ini", @ScriptDir, "1")
    FileCopy("D:\Fse\Oberflaeche\Fse.ini", @ScriptDir, "1")
    
    $wTitle = "TeamViewer " & $verTag & " Host Setup"
    $wTitle2 = "Unattended access"
    $wTitle3 = "Unattended access - Step 1 of 2"
    $wTitle4 = "Unattended access - Step 2 of 2"
    $strPassword = IniRead(@ScriptDir & "\tv" & $verTag & "_host.conf", "Setup", "ConnectPassword", "")
    $strUser = IniRead(@ScriptDir & "\USER.ini", "BACKUP_SETUP", "MaschinenNummer", "")
    $strFse  = IniRead(@ScriptDir & "\Fse.ini", "Versionen", "MaschType", "")
    $iDelay = Int(IniRead(@ScriptDir & "\tv" & $verTag & "_host.conf", "Advanced", "SleepDelay", "0"))
    Opt("SendKeyDelay", Int(IniRead(@ScriptDir & "\tv" & $verTag & "_host.conf", "Setup", "SendKeyDelay", "250")) )
    
    $iErr1=0;
    $iErr2=0;
    If $strUser == "" Then
        MsgBox(0, "Fehler!", "Die Maschinennummer konnte nicht in der USER.ini gefunden werden! F Maschine?");
        $strFse = $strUser
        $iErr1 = 1;
    
    EndIf
    If $strFse == "" Then
        MsgBox(0, "Fehler!", "Die Maschine konnte nicht in der FSE.ini gefunden werden!");
        $iErr2 = 1;
    EndIf
    If $iErr1 & $iErr2 == 1 Then
        Exit
    EndIf
    Alles anzeigen
  • iniRead Problem

    • Bebbo
    • 22. Juni 2023 um 14:03

    Glaubst du das ^^....

    Schande über mein Haupt.

    Habe da jetzt schon ewig gesucht und nix gesehen ^^

    Vielen Dank dir für dein Adlerauge :)

    Grüße

    Bebbo

  • iniRead Problem

    • Bebbo
    • 22. Juni 2023 um 13:54

    Hallo Gemeinde :-),

    folgendes Problem plagt mich gerade.

    Ich habe ein Script welches eine Autoinstallation durchführt und hierfür eine .ini Datei nach einem bestimmten Wert ausließt.

    Da ich nun aber auch Geräte habe, wo diese Datei nicht vorhanden ist, möchte ich einen zweite Ini Datei nach einem Wert auslesen.

    Nun zum Problem:

    nur mit der einen ini Datei habe ich keinerlei Probleme, sobald ich aber die 2. Ini einlesen möchte bzw. das Skript dafür anpasse, bekomme ich Fehler.

    Kann mir jemand vllt. auf die sprünge helfen, was ich da falsch mache?!

    Anbei das Script.

    Danke für eure Hilfe.

    Grüße

    Bebbo

    Code
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=Logo.ico
    #AutoIt3Wrapper_Outfile=Teamviewer_Host.exe
    #AutoIt3Wrapper_Compression=4
    #AutoIt3Wrapper_Res_Comment=TeamViewer 10 Host unattented installscript
    #AutoIt3Wrapper_Res_Description=This script automates the TeamViewer 10 Host setup
    #AutoIt3Wrapper_Res_Fileversion=1.4.1.0
    #AutoIt3Wrapper_Res_CompanyName=xxxxxx
    #AutoIt3Wrapper_Res_LegalCopyright=© 2022
    #AutoIt3Wrapper_Res_Language=1031
    #AutoIt3Wrapper_Res_requestedExecutionLevel=requireAdministrator
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    
    $verTag = "10" ; Tested with installer version 10.0.38475.0
    $strTrayTitle = "TeamViewer " & $verTag & " Host Auto-Install"
    FileCopy("D:\WPS3\Daten\USER.ini", @ScriptDir, "1")
    FileCopy("D:\Fse\Oberflaeche\Fse.ini", @ScriptDir, "1")
    
    $wTitle = "TeamViewer " & $verTag & " Host Setup"
    $wTitle2 = "Unattended access"
    $wTitle3 = "Unattended access - Step 1 of 2"
    $wTitle4 = "Unattended access - Step 2 of 2"
    $strPassword = IniRead(@ScriptDir & "\tv" & $verTag & "_host.conf", "Setup", "ConnectPassword", "")
    $strUser = IniRead(@ScriptDir & "\USER.ini", "BACKUP_SETUP", "MaschinenNummer", "")
    $strFse  = IniRead(@ScriptDir & "\Fse.ini", "Versionen", "MaschType,  "")
    $iDelay = Int(IniRead(@ScriptDir & "\tv" & $verTag & "_host.conf", "Advanced", "SleepDelay", "0"))
    Opt("SendKeyDelay", Int(IniRead(@ScriptDir & "\tv" & $verTag & "_host.conf", "Setup", "SendKeyDelay", "250")) )
    
    $iErr1=0;
    If $strUser == "" Then
        MsgBox(0, "Fehler!", "Die Maschinennummer konnte nicht in der USER.ini gefunden werden! F Maschine?");
        $iErr1 = 1;
    EndIf
    If $strFse == "" Then
        MsgBox(0, "Fehler!", "Die Maschine konnte nicht in der FSE.ini gefunden werden!");
        $iErr1 = 1;
    EndIf
    If $iErr1 == 1 Then
        Exit
    EndIf
    
    $iErr = 0;
    If $strPassword == "" Then
        MsgBox(0, "Fehler!", "Das Verbindungs-Passwort ('ConnectPassword') konnte nicht in tv" & $verTag & "_host.conf gefunden werden!");
        $iErr = 1;
    EndIf
    If $iErr == 1 Then
        Exit
    EndIf
    Alles anzeigen

    Dateien

    pasted-from-clipboard.png 31,31 kB – 0 Downloads
  • Win XP - alle Netzwerkadapter und Adressen auslesen ohne WMI

    • Bebbo
    • 25. Mai 2023 um 10:15

    Hallo @ Concara,

    danke für deine Tip.

    Habe nun festgestellt, das ein paar meiner Variablen wie auch schon Oscar gepostet hat, nicht deklariert waren.

    Dies habe ich nun entsprechend angepasst.

    Und nun auch festgestellt, dass unter meiner verwendeten XP Version WMI nicht funktioniert.

    Zu deiner Frage wegen Xp, ja leider benötige ich es dafür und ja es handelt sich um geschlossene Systeme.

    Ich versuche hier ein script zu schreiben, welches mir alle Adapter Namen und zugehörigen Adressen ausliest.

    Nach Auswahl des Adapters soll dann eine von mir definierte Adresse verwendet werden nebst Gateway und Subnetmask.

    Vllt. habt ihr mir einen Tip oder sogar ein beispiel, bei dem ein solches Thema bereits thematisiert wurde?!

    Danke vorab für eure Hilfe.

    Grüße

    Bebbo

  • Win XP - alle Netzwerkadapter und Adressen auslesen ohne WMI

    • Bebbo
    • 25. Mai 2023 um 09:21

    Hallo Oscar,

    vielen Dank für deine Mühe und den bereitgestellten Code.

    Diesen hätte ich auch gehabt, wusste jetzt nur nicht (da neu) ob ich diesen Code hätte bereitstellen sollen...

    Ich habe den Ursprünglichen Code mit dem Stripper durchlaufen lassen um mir den Fehler, welchen ich beim ausführen unter WinXP erhalten habe nachvollziehen zu können.

    mfg Bebbo

  • Win XP - alle Netzwerkadapter und Adressen auslesen ohne WMI

    • Bebbo
    • 25. Mai 2023 um 06:57

    Guten Morgen Musashi,

    danke für deine Antwort.

    Nein, das ist natürlich nicht der komplette Code des Skripts.

    Es handelt sich hier nur um den Ausschnitt, bei welchem der Fehler kommt.

    Ich dachte dieser Teil würde ausreichen.

    anbei der Komplette Code:

    Code
    Global Const $__IPADDRESSCONSTANT_WM_USER = 0X400
    Global Const $IPM_SETADDRESS =($__IPADDRESSCONSTANT_WM_USER + 101)
    Global Const $IPM_GETADDRESS =($__IPADDRESSCONSTANT_WM_USER + 102)
    Global Const $IPN_FIRST =(-860)
    Global Const $IPN_FIELDCHANGED =($IPN_FIRST - 0)
    Global Const $tagNMHDR = "struct;hwnd hWndFrom;uint_ptr IDFrom;INT Code;endstruct"
    Global Const $tagGETIPAddress = "byte Field4;byte Field3;byte Field2;byte Field1"
    Global Const $UBOUND_DIMENSIONS = 0
    Global Const $UBOUND_COLUMNS = 2
    Func _ArraySearch(Const ByRef $aArray, $vValue, $iStart = 0, $iEnd = 0, $iCase = 0, $iCompare = 0, $iForward = 1, $iSubItem = -1, $bRow = False)
    If $iStart = Default Then $iStart = 0
    If $iEnd = Default Then $iEnd = 0
    If $iCase = Default Then $iCase = 0
    If $iCompare = Default Then $iCompare = 0
    If $iForward = Default Then $iForward = 1
    If $iSubItem = Default Then $iSubItem = -1
    If $bRow = Default Then $bRow = False
    If Not IsArray($aArray) Then Return SetError(1, 0, -1)
    Local $iDim_1 = UBound($aArray) - 1
    If $iDim_1 = -1 Then Return SetError(3, 0, -1)
    Local $iDim_2 = UBound($aArray, $UBOUND_COLUMNS) - 1
    Local $bCompType = False
    If $iCompare = 2 Then
    $iCompare = 0
    $bCompType = True
    EndIf
    If $bRow Then
    If UBound($aArray, $UBOUND_DIMENSIONS) = 1 Then Return SetError(5, 0, -1)
    If $iEnd < 1 Or $iEnd > $iDim_2 Then $iEnd = $iDim_2
    If $iStart < 0 Then $iStart = 0
    If $iStart > $iEnd Then Return SetError(4, 0, -1)
    Else
    If $iEnd < 1 Or $iEnd > $iDim_1 Then $iEnd = $iDim_1
    If $iStart < 0 Then $iStart = 0
    If $iStart > $iEnd Then Return SetError(4, 0, -1)
    EndIf
    Local $iStep = 1
    If Not $iForward Then
    Local $iTmp = $iStart
    $iStart = $iEnd
    $iEnd = $iTmp
    $iStep = -1
    EndIf
    Switch UBound($aArray, $UBOUND_DIMENSIONS)
    Case 1
    If Not $iCompare Then
    If Not $iCase Then
    For $i = $iStart To $iEnd Step $iStep
    If $bCompType And VarGetType($aArray[$i]) <> VarGetType($vValue) Then ContinueLoop
    If $aArray[$i] = $vValue Then Return $i
    Next
    Else
    For $i = $iStart To $iEnd Step $iStep
    If $bCompType And VarGetType($aArray[$i]) <> VarGetType($vValue) Then ContinueLoop
    If $aArray[$i] == $vValue Then Return $i
    Next
    EndIf
    Else
    For $i = $iStart To $iEnd Step $iStep
    If $iCompare = 3 Then
    If StringRegExp($aArray[$i], $vValue) Then Return $i
    Else
    If StringInStr($aArray[$i], $vValue, $iCase) > 0 Then Return $i
    EndIf
    Next
    EndIf
    Case 2
    Local $iDim_Sub
    If $bRow Then
    $iDim_Sub = $iDim_1
    If $iSubItem > $iDim_Sub Then $iSubItem = $iDim_Sub
    If $iSubItem < 0 Then
    $iSubItem = 0
    Else
    $iDim_Sub = $iSubItem
    EndIf
    Else
    $iDim_Sub = $iDim_2
    If $iSubItem > $iDim_Sub Then $iSubItem = $iDim_Sub
    If $iSubItem < 0 Then
    $iSubItem = 0
    Else
    $iDim_Sub = $iSubItem
    EndIf
    EndIf
    For $j = $iSubItem To $iDim_Sub
    If Not $iCompare Then
    If Not $iCase Then
    For $i = $iStart To $iEnd Step $iStep
    If $bRow Then
    If $bCompType And VarGetType($aArray[$j][$i]) <> VarGetType($vValue) Then ContinueLoop
    If $aArray[$j][$i] = $vValue Then Return $i
    Else
    If $bCompType And VarGetType($aArray[$i][$j]) <> VarGetType($vValue) Then ContinueLoop
    If $aArray[$i][$j] = $vValue Then Return $i
    EndIf
    Next
    Else
    For $i = $iStart To $iEnd Step $iStep
    If $bRow Then
    If $bCompType And VarGetType($aArray[$j][$i]) <> VarGetType($vValue) Then ContinueLoop
    If $aArray[$j][$i] == $vValue Then Return $i
    Else
    If $bCompType And VarGetType($aArray[$i][$j]) <> VarGetType($vValue) Then ContinueLoop
    If $aArray[$i][$j] == $vValue Then Return $i
    EndIf
    Next
    EndIf
    Else
    For $i = $iStart To $iEnd Step $iStep
    If $iCompare = 3 Then
    If $bRow Then
    If StringRegExp($aArray[$j][$i], $vValue) Then Return $i
    Else
    If StringRegExp($aArray[$i][$j], $vValue) Then Return $i
    EndIf
    Else
    If $bRow Then
    If StringInStr($aArray[$j][$i], $vValue, $iCase) > 0 Then Return $i
    Else
    If StringInStr($aArray[$i][$j], $vValue, $iCase) > 0 Then Return $i
    EndIf
    EndIf
    Next
    EndIf
    Next
    Case Else
    Return SetError(2, 0, -1)
    EndSwitch
    Return SetError(6, 0, -1)
    EndFunc
    Global Const $CBS_AUTOHSCROLL = 0x40
    Global Const $CBS_DROPDOWN = 0x2
    Global Const $WM_NOTIFY = 0x004E
    Global Const $GUI_EVENT_CLOSE = -3
    Global Const $MEM_COMMIT = 0x00001000
    Global Const $MEM_RESERVE = 0x00002000
    Global Const $PAGE_READWRITE = 0x00000004
    Global Const $MEM_RELEASE = 0x00008000
    Global Const $PROCESS_VM_OPERATION = 0x00000008
    Global Const $PROCESS_VM_READ = 0x00000010
    Global Const $PROCESS_VM_WRITE = 0x00000020
    Global Const $SE_DEBUG_NAME = "SeDebugPrivilege"
    Global Const $SE_PRIVILEGE_ENABLED = 0x00000002
    Global Enum $SECURITYANONYMOUS = 0, $SECURITYIDENTIFICATION, $SECURITYIMPERSONATION, $SECURITYDELEGATION
    Global Const $TOKEN_QUERY = 0x00000008
    Global Const $TOKEN_ADJUST_PRIVILEGES = 0x00000020
    Func _WinAPI_GetLastError(Const $_iCallerError = @error, Const $_iCallerExtended = @extended)
    Local $aCall = DllCall("kernel32.dll", "dword", "GetLastError")
    Return SetError($_iCallerError, $_iCallerExtended, $aCall[0])
    EndFunc
    Func _Security__AdjustTokenPrivileges($hToken, $bDisableAll, $tNewState, $iBufferLen, $tPrevState = 0, $pRequired = 0)
    Local $aCall = DllCall("advapi32.dll", "bool", "AdjustTokenPrivileges", "handle", $hToken, "bool", $bDisableAll, "struct*", $tNewState, "dword", $iBufferLen, "struct*", $tPrevState, "struct*", $pRequired)
    If @error Then Return SetError(@error, @extended, False)
    Return Not($aCall[0] = 0)
    EndFunc
    Func _Security__ImpersonateSelf($iLevel = $SECURITYIMPERSONATION)
    Local $aCall = DllCall("advapi32.dll", "bool", "ImpersonateSelf", "int", $iLevel)
    If @error Then Return SetError(@error, @extended, False)
    Return Not($aCall[0] = 0)
    EndFunc
    Func _Security__LookupPrivilegeValue($sSystem, $sName)
    Local $aCall = DllCall("advapi32.dll", "bool", "LookupPrivilegeValueW", "wstr", $sSystem, "wstr", $sName, "int64*", 0)
    If @error Or Not $aCall[0] Then Return SetError(@error + 10, @extended, 0)
    Return $aCall[3]
    EndFunc
    Func _Security__OpenThreadToken($iAccess, $hThread = 0, $bOpenAsSelf = False)
    Local $aCall
    If $hThread = 0 Then
    $aCall = DllCall("kernel32.dll", "handle", "GetCurrentThread")
    If @error Then Return SetError(@error + 20, @extended, 0)
    $hThread = $aCall[0]
    EndIf
    $aCall = DllCall("advapi32.dll", "bool", "OpenThreadToken", "handle", $hThread, "dword", $iAccess, "bool", $bOpenAsSelf, "handle*", 0)
    If @error Or Not $aCall[0] Then Return SetError(@error + 10, @extended, 0)
    Return $aCall[4]
    EndFunc
    Func _Security__OpenThreadTokenEx($iAccess, $hThread = 0, $bOpenAsSelf = False)
    Local $hToken = _Security__OpenThreadToken($iAccess, $hThread, $bOpenAsSelf)
    If $hToken = 0 Then
    Local Const $ERROR_NO_TOKEN = 1008
    If _WinAPI_GetLastError() <> $ERROR_NO_TOKEN Then Return SetError(20, _WinAPI_GetLastError(), 0)
    If Not _Security__ImpersonateSelf() Then Return SetError(@error + 10, _WinAPI_GetLastError(), 0)
    $hToken = _Security__OpenThreadToken($iAccess, $hThread, $bOpenAsSelf)
    If $hToken = 0 Then Return SetError(@error, _WinAPI_GetLastError(), 0)
    EndIf
    Return $hToken
    EndFunc
    Func _Security__SetPrivilege($hToken, $sPrivilege, $bEnable)
    Local $iLUID = _Security__LookupPrivilegeValue("", $sPrivilege)
    If $iLUID = 0 Then Return SetError(@error + 10, @extended, False)
    Local Const $tagTOKEN_PRIVILEGES = "dword Count;align 4;int64 LUID;dword Attributes"
    Local $tCurrState = DllStructCreate($tagTOKEN_PRIVILEGES)
    Local $iCurrState = DllStructGetSize($tCurrState)
    Local $tPrevState = DllStructCreate($tagTOKEN_PRIVILEGES)
    Local $iPrevState = DllStructGetSize($tPrevState)
    Local $tRequired = DllStructCreate("int Data")
    DllStructSetData($tCurrState, "Count", 1)
    DllStructSetData($tCurrState, "LUID", $iLUID)
    If Not _Security__AdjustTokenPrivileges($hToken, False, $tCurrState, $iCurrState, $tPrevState, $tRequired) Then Return SetError(2, @error, False)
    DllStructSetData($tPrevState, "Count", 1)
    DllStructSetData($tPrevState, "LUID", $iLUID)
    Local $iAttributes = DllStructGetData($tPrevState, "Attributes")
    If $bEnable Then
    $iAttributes = BitOR($iAttributes, $SE_PRIVILEGE_ENABLED)
    Else
    $iAttributes = BitAND($iAttributes, BitNOT($SE_PRIVILEGE_ENABLED))
    EndIf
    DllStructSetData($tPrevState, "Attributes", $iAttributes)
    If Not _Security__AdjustTokenPrivileges($hToken, False, $tPrevState, $iPrevState, $tCurrState, $tRequired) Then Return SetError(3, @error, False)
    Return True
    EndFunc
    Global Const $tagMEMMAP = "handle hProc;ulong_ptr Size;ptr Mem"
    Func _MemFree(ByRef $tMemMap)
    Local $pMemory = DllStructGetData($tMemMap, "Mem")
    Local $hProcess = DllStructGetData($tMemMap, "hProc")
    Local $bResult = _MemVirtualFreeEx($hProcess, $pMemory, 0, $MEM_RELEASE)
    DllCall("kernel32.dll", "bool", "CloseHandle", "handle", $hProcess)
    If @error Then Return SetError(@error, @extended, False)
    Return $bResult
    EndFunc
    Func _MemInit($hWnd, $iSize, ByRef $tMemMap)
    Local $aCall = DllCall("user32.dll", "dword", "GetWindowThreadProcessId", "hwnd", $hWnd, "dword*", 0)
    If @error Then Return SetError(@error + 10, @extended, 0)
    Local $iProcessID = $aCall[2]
    If $iProcessID = 0 Then Return SetError(1, 0, 0)
    Local $iAccess = BitOR($PROCESS_VM_OPERATION, $PROCESS_VM_READ, $PROCESS_VM_WRITE)
    Local $hProcess = __Mem_OpenProcess($iAccess, False, $iProcessID, True)
    Local $iAlloc = BitOR($MEM_RESERVE, $MEM_COMMIT)
    Local $pMemory = _MemVirtualAllocEx($hProcess, 0, $iSize, $iAlloc, $PAGE_READWRITE)
    If $pMemory = 0 Then Return SetError(2, 0, 0)
    $tMemMap = DllStructCreate($tagMEMMAP)
    DllStructSetData($tMemMap, "hProc", $hProcess)
    DllStructSetData($tMemMap, "Size", $iSize)
    DllStructSetData($tMemMap, "Mem", $pMemory)
    Return $pMemory
    EndFunc
    Func _MemRead(ByRef $tMemMap, $pSrce, $pDest, $iSize)
    Local $aCall = DllCall("kernel32.dll", "bool", "ReadProcessMemory", "handle", DllStructGetData($tMemMap, "hProc"), "ptr", $pSrce, "struct*", $pDest, "ulong_ptr", $iSize, "ulong_ptr*", 0)
    If @error Then Return SetError(@error, @extended, False)
    Return $aCall[0]
    EndFunc
    Func _MemWrite(ByRef $tMemMap, $pSrce, $pDest = 0, $iSize = 0, $sSrce = "struct*")
    If $pDest = 0 Then $pDest = DllStructGetData($tMemMap, "Mem")
    If $iSize = 0 Then $iSize = DllStructGetData($tMemMap, "Size")
    Local $aCall = DllCall("kernel32.dll", "bool", "WriteProcessMemory", "handle", DllStructGetData($tMemMap, "hProc"), "ptr", $pDest, $sSrce, $pSrce, "ulong_ptr", $iSize, "ulong_ptr*", 0)
    If @error Then Return SetError(@error, @extended, False)
    Return $aCall[0]
    EndFunc
    Func _MemVirtualAllocEx($hProcess, $pAddress, $iSize, $iAllocation, $iProtect)
    Local $aCall = DllCall("kernel32.dll", "ptr", "VirtualAllocEx", "handle", $hProcess, "ptr", $pAddress, "ulong_ptr", $iSize, "dword", $iAllocation, "dword", $iProtect)
    If @error Then Return SetError(@error, @extended, 0)
    Return $aCall[0]
    EndFunc
    Func _MemVirtualFreeEx($hProcess, $pAddress, $iSize, $iFreeType)
    Local $aCall = DllCall("kernel32.dll", "bool", "VirtualFreeEx", "handle", $hProcess, "ptr", $pAddress, "ulong_ptr", $iSize, "dword", $iFreeType)
    If @error Then Return SetError(@error, @extended, False)
    Return $aCall[0]
    EndFunc
    Func __Mem_OpenProcess($iAccess, $bInherit, $iPID, $bDebugPriv = False)
    Local $aCall = DllCall("kernel32.dll", "handle", "OpenProcess", "dword", $iAccess, "bool", $bInherit, "dword", $iPID)
    If @error Then Return SetError(@error, @extended, 0)
    If $aCall[0] Then Return $aCall[0]
    If Not $bDebugPriv Then Return SetError(100, 0, 0)
    Local $hToken = _Security__OpenThreadTokenEx(BitOR($TOKEN_ADJUST_PRIVILEGES, $TOKEN_QUERY))
    If @error Then Return SetError(@error + 10, @extended, 0)
    _Security__SetPrivilege($hToken, $SE_DEBUG_NAME, True)
    Local $iError = @error
    Local $iExtended = @extended
    Local $iRet = 0
    If Not @error Then
    $aCall = DllCall("kernel32.dll", "handle", "OpenProcess", "dword", $iAccess, "bool", $bInherit, "dword", $iPID)
    $iError = @error
    $iExtended = @extended
    If $aCall[0] Then $iRet = $aCall[0]
    _Security__SetPrivilege($hToken, $SE_DEBUG_NAME, False)
    If @error Then
    $iError = @error + 20
    $iExtended = @extended
    EndIf
    Else
    $iError = @error + 30
    EndIf
    DllCall("kernel32.dll", "bool", "CloseHandle", "handle", $hToken)
    Return SetError($iError, $iExtended, $iRet)
    EndFunc
    Func _SendMessage($hWnd, $iMsg, $wParam = 0, $lParam = 0, $iReturn = 0, $wParamType = "wparam", $lParamType = "lparam", $sReturnType = "lresult")
    Local $aCall = DllCall("user32.dll", $sReturnType, "SendMessageW", "hwnd", $hWnd, "uint", $iMsg, $wParamType, $wParam, $lParamType, $lParam)
    If @error Then Return SetError(@error, @extended, "")
    If $iReturn >= 0 And $iReturn <= 4 Then Return $aCall[$iReturn]
    Return $aCall
    EndFunc
    Func _WinAPI_GetModuleHandle($sModuleName)
    If $sModuleName = "" Then $sModuleName = Null
    Local $aCall = DllCall("kernel32.dll", "handle", "GetModuleHandleW", "wstr", $sModuleName)
    If @error Then Return SetError(@error, @extended, 0)
    Return $aCall[0]
    EndFunc
    Global $__g_aInProcess_WinAPI[64][2] = [[0, 0]]
    Global Const $__WINAPICONSTANT_WM_SETFONT = 0x0030
    Func _WinAPI_CreateWindowEx($iExStyle, $sClass, $sName, $iStyle, $iX, $iY, $iWidth, $iHeight, $hParent, $hMenu = 0, $hInstance = 0, $pParam = 0)
    If $hInstance = 0 Then $hInstance = _WinAPI_GetModuleHandle("")
    Local $aCall = DllCall("user32.dll", "hwnd", "CreateWindowExW", "dword", $iExStyle, "wstr", $sClass, "wstr", $sName, "dword", $iStyle, "int", $iX, "int", $iY, "int", $iWidth, "int", $iHeight, "hwnd", $hParent, "handle", $hMenu, "handle", $hInstance, "struct*", $pParam)
    If @error Then Return SetError(@error, @extended, 0)
    Return $aCall[0]
    EndFunc
    Func _WinAPI_GetWindowThreadProcessId($hWnd, ByRef $iPID)
    Local $aCall = DllCall("user32.dll", "dword", "GetWindowThreadProcessId", "hwnd", $hWnd, "dword*", 0)
    If @error Then Return SetError(@error, @extended, 0)
    $iPID = $aCall[2]
    Return $aCall[0]
    EndFunc
    Func _WinAPI_InProcess($hWnd, ByRef $hLastWnd)
    If $hWnd = $hLastWnd Then Return True
    For $iI = $__g_aInProcess_WinAPI[0][0] To 1 Step -1
    If $hWnd = $__g_aInProcess_WinAPI[$iI][0] Then
    If $__g_aInProcess_WinAPI[$iI][1] Then
    $hLastWnd = $hWnd
    Return True
    Else
    Return False
    EndIf
    EndIf
    Next
    Local $iPID
    _WinAPI_GetWindowThreadProcessId($hWnd, $iPID)
    Local $iCount = $__g_aInProcess_WinAPI[0][0] + 1
    If $iCount >= 64 Then $iCount = 1
    $__g_aInProcess_WinAPI[0][0] = $iCount
    $__g_aInProcess_WinAPI[$iCount][0] = $hWnd
    $__g_aInProcess_WinAPI[$iCount][1] =($iPID = @AutoItPID)
    Return $__g_aInProcess_WinAPI[$iCount][1]
    EndFunc
    Func _WinAPI_SetFont($hWnd, $hFont, $bRedraw = True)
    _SendMessage($hWnd, $__WINAPICONSTANT_WM_SETFONT, $hFont, $bRedraw, 0, "hwnd")
    EndFunc
    Global $__g_hGUICtrl_LastWnd
    Func __GUICtrl_SendMsg($hWnd, $iMsg, $iIndex, ByRef $tItem, $tBuffer = 0, $bRetItem = False, $iElement = -1, $bRetBuffer = False, $iElementMax = $iElement)
    If $iElement > 0 Then
    DllStructSetData($tItem, $iElement, DllStructGetPtr($tBuffer))
    If $iElement = $iElementMax Then DllStructSetData($tItem, $iElement + 1, DllStructGetSize($tBuffer))
    EndIf
    Local $iRet
    If IsHWnd($hWnd) Then
    If _WinAPI_InProcess($hWnd, $__g_hGUICtrl_LastWnd) Then
    $iRet = DllCall("user32.dll", "lresult", "SendMessageW", "hwnd", $hWnd, "uint", $iMsg, "wparam", $iIndex, "struct*", $tItem)[0]
    Else
    Local $iItem = DllStructGetSize($tItem)
    Local $tMemMap, $pText
    Local $iBuffer = 0
    If($iElement > 0) Or($iElementMax = 0) Then $iBuffer = DllStructGetSize($tBuffer)
    Local $pMemory = _MemInit($hWnd, $iItem + $iBuffer, $tMemMap)
    If $iBuffer Then
    $pText = $pMemory + $iItem
    If $iElementMax Then
    DllStructSetData($tItem, $iElement, $pText)
    Else
    $iIndex = $pText
    EndIf
    _MemWrite($tMemMap, $tBuffer, $pText, $iBuffer)
    EndIf
    _MemWrite($tMemMap, $tItem, $pMemory, $iItem)
    $iRet = DllCall("user32.dll", "lresult", "SendMessageW", "hwnd", $hWnd, "uint", $iMsg, "wparam", $iIndex, "ptr", $pMemory)[0]
    If $iBuffer And $bRetBuffer Then _MemRead($tMemMap, $pText, $tBuffer, $iBuffer)
    If $bRetItem Then _MemRead($tMemMap, $pMemory, $tItem, $iItem)
    _MemFree($tMemMap)
    EndIf
    Else
    $iRet = GUICtrlSendMsg($hWnd, $iMsg, $iIndex, DllStructGetPtr($tItem))
    EndIf
    Return $iRet
    EndFunc
    Global Const $_UDF_GlobalIDs_OFFSET = 2
    Global Const $_UDF_GlobalID_MAX_WIN = 16
    Global Const $_UDF_STARTID = 10000
    Global Const $_UDF_GlobalID_MAX_IDS = 55535
    Global Const $__UDFGUICONSTANT_WS_TABSTOP = 0x00010000
    Global Const $__UDFGUICONSTANT_WS_VISIBLE = 0x10000000
    Global Const $__UDFGUICONSTANT_WS_CHILD = 0x40000000
    Global $__g_aUDF_GlobalIDs_Used[$_UDF_GlobalID_MAX_WIN][$_UDF_GlobalID_MAX_IDS + $_UDF_GlobalIDs_OFFSET + 1]
    Func __UDF_GetNextGlobalID($hWnd)
    Local $nCtrlID, $iUsedIndex = -1, $bAllUsed = True
    If Not WinExists($hWnd) Then Return SetError(-1, -1, 0)
    For $iIndex = 0 To $_UDF_GlobalID_MAX_WIN - 1
    If $__g_aUDF_GlobalIDs_Used[$iIndex][0] <> 0 Then
    If Not WinExists($__g_aUDF_GlobalIDs_Used[$iIndex][0]) Then
    For $x = 0 To UBound($__g_aUDF_GlobalIDs_Used, $UBOUND_COLUMNS) - 1
    $__g_aUDF_GlobalIDs_Used[$iIndex][$x] = 0
    Next
    $__g_aUDF_GlobalIDs_Used[$iIndex][1] = $_UDF_STARTID
    $bAllUsed = False
    EndIf
    EndIf
    Next
    For $iIndex = 0 To $_UDF_GlobalID_MAX_WIN - 1
    If $__g_aUDF_GlobalIDs_Used[$iIndex][0] = $hWnd Then
    $iUsedIndex = $iIndex
    ExitLoop
    EndIf
    Next
    If $iUsedIndex = -1 Then
    For $iIndex = 0 To $_UDF_GlobalID_MAX_WIN - 1
    If $__g_aUDF_GlobalIDs_Used[$iIndex][0] = 0 Then
    $__g_aUDF_GlobalIDs_Used[$iIndex][0] = $hWnd
    $__g_aUDF_GlobalIDs_Used[$iIndex][1] = $_UDF_STARTID
    $bAllUsed = False
    $iUsedIndex = $iIndex
    ExitLoop
    EndIf
    Next
    EndIf
    If $iUsedIndex = -1 And $bAllUsed Then Return SetError(16, 0, 0)
    If $__g_aUDF_GlobalIDs_Used[$iUsedIndex][1] = $_UDF_STARTID + $_UDF_GlobalID_MAX_IDS Then
    For $iIDIndex = $_UDF_GlobalIDs_OFFSET To UBound($__g_aUDF_GlobalIDs_Used, $UBOUND_COLUMNS) - 1
    If $__g_aUDF_GlobalIDs_Used[$iUsedIndex][$iIDIndex] = 0 Then
    $nCtrlID =($iIDIndex - $_UDF_GlobalIDs_OFFSET) + 10000
    $__g_aUDF_GlobalIDs_Used[$iUsedIndex][$iIDIndex] = $nCtrlID
    Return $nCtrlID
    EndIf
    Next
    Return SetError(-1, $_UDF_GlobalID_MAX_IDS, 0)
    EndIf
    $nCtrlID = $__g_aUDF_GlobalIDs_Used[$iUsedIndex][1]
    $__g_aUDF_GlobalIDs_Used[$iUsedIndex][1] += 1
    $__g_aUDF_GlobalIDs_Used[$iUsedIndex][($nCtrlID - 10000) + $_UDF_GlobalIDs_OFFSET] = $nCtrlID
    Return $nCtrlID
    EndFunc
    Func _WinAPI_MakeLong($iLo, $iHi)
    Return BitOR(BitShift($iHi, -16), BitAND($iLo, 0xFFFF))
    EndFunc
    Func _WinAPI_GetStockObject($iObject)
    Local $aCall = DllCall("gdi32.dll", "handle", "GetStockObject", "int", $iObject)
    If @error Then Return SetError(@error, @extended, 0)
    Return $aCall[0]
    EndFunc
    Global Const $__IPADDRESSCONSTANT_ClassName = "SysIPAddress32"
    Global Const $__IPADDRESSCONSTANT_DEFAULT_GUI_FONT = 17
    Func _GUICtrlIpAddress_Create($hWnd, $iX, $iY, $iWidth = 125, $iHeight = 25, $iStyles = 0x00000000, $iExstyles = 0x00000000)
    If Not IsHWnd($hWnd) Then Return SetError(1, 0, 0)
    If $iStyles = -1 Then $iStyles = 0x00000000
    If $iExstyles = -1 Then $iExstyles = 0x00000000
    Local $iStyle = BitOR($__UDFGUICONSTANT_WS_CHILD, $__UDFGUICONSTANT_WS_VISIBLE, $__UDFGUICONSTANT_WS_TABSTOP, $iStyles)
    Local Const $ICC_INTERNET_CLASSES = 0x0800
    Local $tICCE = DllStructCreate('dword dwSize;dword dwICC')
    DllStructSetData($tICCE, "dwSize", DllStructGetSize($tICCE))
    DllStructSetData($tICCE, "dwICC", $ICC_INTERNET_CLASSES)
    DllCall('comctl32.dll', 'bool', 'InitCommonControlsEx', 'struct*', $tICCE)
    If @error Then Return SetError(@error, @extended, 0)
    Local $nCtrlID = __UDF_GetNextGlobalID($hWnd)
    If @error Then Return SetError(@error, @extended, 0)
    Local $hIPAddress = _WinAPI_CreateWindowEx($iExstyles, $__IPADDRESSCONSTANT_ClassName, "", $iStyle, $iX, $iY, $iWidth, $iHeight, $hWnd, $nCtrlID)
    _WinAPI_SetFont($hIPAddress, _WinAPI_GetStockObject($__IPADDRESSCONSTANT_DEFAULT_GUI_FONT))
    Return $hIPAddress
    EndFunc
    Func _GUICtrlIpAddress_Get($hWnd)
    Local $tIP = _GUICtrlIpAddress_GetEx($hWnd)
    If @error Then Return SetError(2, 2, "")
    Return StringFormat("%d.%d.%d.%d", DllStructGetData($tIP, "Field1"), DllStructGetData($tIP, "Field2"), DllStructGetData($tIP, "Field3"), DllStructGetData($tIP, "Field4"))
    EndFunc
    Func _GUICtrlIpAddress_GetArray($hWnd)
    Local $tIP = _GUICtrlIpAddress_GetEx($hWnd)
    Local $aIP[4]
    $aIP[0] = DllStructGetData($tIP, "Field1")
    $aIP[1] = DllStructGetData($tIP, "Field2")
    $aIP[2] = DllStructGetData($tIP, "Field3")
    $aIP[3] = DllStructGetData($tIP, "Field4")
    Return $aIP
    EndFunc
    Func _GUICtrlIpAddress_GetEx($hWnd)
    Local $tIP = DllStructCreate($tagGETIPAddress)
    __GUICtrl_SendMsg($hWnd, $IPM_GETADDRESS, 0, $tIP, 0, True)
    Return $tIP
    EndFunc
    Func _GUICtrlIpAddress_Set($hWnd, $sAddress)
    Local $aAddress = StringSplit($sAddress, ".")
    If $aAddress[0] = 4 Then
    Local $tIP = DllStructCreate($tagGETIPAddress)
    For $x = 1 To 4
    DllStructSetData($tIP, "Field" & $x, $aAddress[$x])
    Next
    _GUICtrlIpAddress_SetEx($hWnd, $tIP)
    EndIf
    EndFunc
    Func _GUICtrlIpAddress_SetArray($hWnd, $aAddress)
    If UBound($aAddress) = 4 Then
    Local $tIP = DllStructCreate($tagGETIPAddress)
    For $x = 0 To 3
    DllStructSetData($tIP, "Field" & $x + 1, $aAddress[$x])
    Next
    _GUICtrlIpAddress_SetEx($hWnd, $tIP)
    EndIf
    EndFunc
    Func _GUICtrlIpAddress_SetEx($hWnd, $tIP)
    _SendMessage($hWnd, $IPM_SETADDRESS, 0,  _WinAPI_MakeLong(BitOR(DllStructGetData($tIP, "Field4"), 0x100 * DllStructGetData($tIP, "Field3")), BitOR(DllStructGetData($tIP, "Field2"), 0x100 * DllStructGetData($tIP, "Field1"))))
    EndFunc
    Global Const $SS_RIGHT = 0x2
    Global Const $oMyError = ObjEvent("AutoIt.Error", "oMyError")
    $hGUI = GUICreate("IP Test", 423, 123)
    GUISetFont(9, 400, 0, "Arial")
    TrayTip("Information", "Reading network setting. Please wait...", 10, 1)
    $aNetworkAdapters = _WMI_GetNetworkAdapterNames()
    TrayTip("", "",0)
    $iComboBox = GUICtrlCreateCombo("", 220, 15, 180, 20, $CBS_DROPDOWN + $CBS_AUTOHSCROLL)
    Global $sNetworkAdapters, $z
    For $z = 0 To UBound($aNetworkAdapters) -1
    $sNetworkAdapters &= $aNetworkAdapters[$z][0] & "|"
    Next
    GUICtrlSetData($iComboBox, StringTrimRight($sNetworkAdapters, 1), $aNetworkAdapters[0][0])
    $sCurrentIP = GUICtrlCreateLabel("Current IP:", 16, 18, 62, 19, $SS_RIGHT)
    $hCurrenIP = _GUICtrlIpAddress_Create($hGUI, 84, 16, 130, 21)
    _GUICtrlIpAddress_Set($hCurrenIP, $aNetworkAdapters[0][1])
    $sNewIP = GUICtrlCreateLabel("New IP:", 16, 53, 62, 19, $SS_RIGHT)
    $hNewIP = _GUICtrlIpAddress_Create($hGUI, 84, 51, 130, 21)
    _GUICtrlIpAddress_Set($hNewIP, "172.22.10.10")
    $sDefaultGateway = GUICtrlCreateLabel("Gateway:", 16, 85, 62, 19, $SS_RIGHT)
    $hDefaultGateway = _GUICtrlIpAddress_Create($hGUI, 84, 83, 130, 21)
    _GUICtrlIpAddress_Set($hDefaultGateway, "172.22.10.1")
    $iBtnOK = GUICtrlCreateButton("OK", 232, 80, 75, 25)
    GUISetState(@SW_SHOW)
    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    GUIRegisterMsg($WM_NOTIFY, "")
    GUIDelete()
    Exit
    Case $iBtnOK
    MsgBox(0, "Einstellungen werden gesetzt.....", "Interface Name: " & $aNetworkAdapters[_ArraySearch($aNetworkAdapters, GUICtrlRead($iComboBox))][0] & @CRLF & "New IP: " & _GUICtrlIpAddress_Get($hNewIP) & @CRLF & "Default Gateway: " & _GUICtrlIpAddress_Get($hDefaultGateway))
    Case $iComboBox
    _GUICtrlIpAddress_Set($hCurrenIP, $aNetworkAdapters[_ArraySearch($aNetworkAdapters, GUICtrlRead($iComboBox))][1])
    EndSwitch
    WEnd
    Func _WMI_GetNetworkAdapterNames($sHost = ".")
    If $sHost = "." Then $sHost = @ComputerName
    Local $objWMI= ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & $sHost & "\root\cimv2")
    Local $oItems1 = $objWMI.InstancesOf("Win32_NetworkAdapter")
    Local $oItems2, $oTokens1, $oTokens2, $aIP, $sIPAddresses, $aResult[100][2], $i = 0
    For $oTokens1 In $oItems1
    $aResult[$i][0] = $oTokens1.NetConnectionID
    $oItems2 = $objWMI.InstancesOf('Win32_NetworkAdapterConfiguration WHERE Description="' & $oTokens1.Name & '"')
    For $oTokens2 In $oItems2
    $aIP = $oTokens2.IPAddress
    For $j = 0 To UBound($aIP) - 1
    If StringRegExp($aIP[$j], "(\d+\.\d+\.\d+\.\d+)", 0) Then $aResult[$i][1] = $aIP[$j]
    Next
    $i += 1
    Next
    Next
    If $i > 0 Then
    ReDim $aResult[$i][2]
    Return $aResult
    EndIf
    Return SetError(1, 0, 0)
    EndFunc
    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam
    Local $hWndFrom, $iCode, $tNMHDR
    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
    Case $hNewIP
    Switch $iCode
    Case $IPN_FIELDCHANGED
    Local $aIP = _GUICtrlIpAddress_GetArray($hNewIP)
    $aIP[3] = "1"
    _GUICtrlIpAddress_SetArray($hDefaultGateway, $aIP)
    EndSwitch
    Case $hDefaultGateway
    Switch $iCode
    Case $IPN_FIELDCHANGED
    Local $aIP = _GUICtrlIpAddress_GetArray($hDefaultGateway)
    $aIP[3] = "1"
    _GUICtrlIpAddress_SetArray($hDefaultGateway, $aIP)
    EndSwitch
    EndSwitch
    Return "GUI_RUNDEFMSG"
    EndFunc
    Func oMyError()
    ConsoleWrite( @CRLF & @CRLF & "We intercepted a COM Error !" & @CRLF & @CRLF & "err.description is: " & @TAB & $oMyError.Description & @CRLF & "err.windescription:" & @TAB & $oMyError.WinDescription & @CRLF & "err.number is: " & @TAB & Hex($oMyError.Number, 8) & @CRLF & "err.lastdllerror is: " & @TAB & $oMyError.LastDllError & @CRLF & "err.scriptline is: " & @TAB & $oMyError.Scriptline & @CRLF & "err.source is: " & @TAB & $oMyError.Source & @CRLF & "err.helpfile is: " & @TAB & $oMyError.Helpfile & @CRLF & "err.helpcontext is: " & @TAB & $oMyError.HelpContext & @CRLF & @CRLF)
    EndFunc
    Alles anzeigen

    Hier ist es dann ab Zeile 508.

    Danke und Grüße

    Ben

  • Win XP - alle Netzwerkadapter und Adressen auslesen ohne WMI

    • Bebbo
    • 24. Mai 2023 um 15:22

    Hallo zusammen,

    ich hoffe das dieses Thema auch hier her passt, falls nicht bitte nicht prügeln ^^

    Folgendes ich habe ein Script, welches Netzwerkparameter ausließt und dann anzeigt sowie änderbar macht.

    Das funktioniert auch super auf Windows 10, jedoch benötige ich dieses auch auf Windows XP.

    Hier (unter WinXP) erhalte ich nun den Fehler Error: Subscript used on non.accessible variable

    Hier der dazugehörige Code nachdem ich es mit AuStripper compiliert habe.

    Code
    For $z = 0 To UBound($aNetworkAdapters) -1
    $sNetworkAdapters &= $aNetworkAdapters[$z][0] & "|"
    Next
    GUICtrlSetData($iComboBox, StringTrimRight($sNetworkAdapters, 1), $aNetworkAdapters[0][0])
    $sCurrentIP = GUICtrlCreateLabel("Current IP:", 16, 18, 62, 19, $SS_RIGHT)
    $hCurrenIP = _GUICtrlIpAddress_Create($hGUI, 84, 16, 130, 21)
    _GUICtrlIpAddress_Set($hCurrenIP, $aNetworkAdapters[0][1])
    $sNewIP = GUICtrlCreateLabel("New IP:", 16, 53, 62, 19, $SS_RIGHT)
    $hNewIP = _GUICtrlIpAddress_Create($hGUI, 84, 51, 130, 21)
    _GUICtrlIpAddress_Set($hNewIP, "0.0.0.0")
    $sDefaultGateway = GUICtrlCreateLabel("Gateway:", 16, 85, 62, 19, $SS_RIGHT)
    $hDefaultGateway = _GUICtrlIpAddress_Create($hGUI, 84, 83, 130, 21)
    _GUICtrlIpAddress_Set($hDefaultGateway, "0.0.0.254")
    $iBtnOK = GUICtrlCreateButton("OK", 232, 80, 75, 25)
    GUISetState(@SW_SHOW)
    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
    Alles anzeigen

    Den Fehler erhalte ich im Code in der 4.Zeile.

    bin noch sehr neu in der Thematik und bräuchte hier tatkräftige Hilfe ^^


    Danke im Voraus

    Grüße

    Bebbo

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™