einige fragen zu meinem soucecode/projekt

  • Also,

    ich habe mal meine angefangenes projekt hier gepostet. so ganz komme ich bei einigen dingen noch nciht weiter.
    wäre toll, wenn ihr mir auch weiterhint eure guten tipps zukommen lasst. der source ist eigentlich gut beschrieben, aber vermutlich
    für die profis unter euch sicher etwas "komisch"/umständlich.
    Ich frag mal drauf los:

    - ich würde gerne meine kompletten messageboxen unten in das status/inputfenster lenken... wie stelle ich das an?
    - das inputfenster soll mal dazu dienen ein externes programm zu starten welches eine DOS-ausgabe, diese sollte abgefangen werden.
    ich habe zwar ein beispiel benutzt, aber leider renne ich immer durch die schleifen und weiss nicht so recht wie ich mehrere buttons
    und das fenster aktiv halte... und das am besten mit kaum CPU-auslastung :(
    - ich benötige eine möglichkeit den listvieweintrag "netzwerkname" zu filtern ... im ansatz klappts ... aber ich weiss nicht wie ich den string
    so filtere, dass alles nach einem bestimmten zeichen abgeschnitten wird.

    heir der source:

    [autoit]

    #include <array.au3> ; wird nur für _ArrayDisplay benötigt
    #include <GuiConstantsEx.au3>
    #include <AVIConstants.au3>
    #include <TreeViewConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstants.au3>
    #include <File.au3>
    #include <Date.au3>

    [/autoit][autoit][/autoit][autoit]

    Opt("GUIOnEventMode", 1) ; OnEvent-Mode einschalten

    [/autoit][autoit][/autoit][autoit]

    ; ##### Gui Control ##################################################################
    $Form1 = GuiCreate("Inputfiels", 500, 400)
    GUISetOnEvent($GUI_EVENT_CLOSE, "AForm1Close")
    $output = GUICtrlCreateEdit("", 10, 330, 490, 70, BitOr($GUI_SS_DEFAULT_EDIT,$ES_MULTILINE))
    GUISetState(@SW_SHOW)
    GUICtrlCreateLabel("Status", 10, 310, 34, 17)
    GUICtrlCreateLabel("Virtual LAN Adapters found", 10, 160, 340, 17)
    GuiSetIcon(@SystemDir & "\mspaint.exe", 0)
    $listView = GuiCtrlCreateListView(" Adaptername | Networkname | IP-Adress | Found |", 10, 180, 490, 100)

    [/autoit][autoit][/autoit][autoit]

    Global $networkadapter [1] [3] ; definiere eine global nutzbaren wert fürs array

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    _GetNetworkadapter() ;suche nach Netzwerkadaptern,Namen,Is und schreibt die in ein Array
    _ListNetworks() ;schreibe gefundene Adapter in Liste
    _StartTeknogodsDLL() ;starte externes programm und fange dosausgabe ab

    [/autoit][autoit][/autoit][autoit]

    ;Auslesen der Netzwerkadapter:
    ; Selbstbestimmter Name
    ; int. Beschreibung
    ; IP Adresse
    Func _GetNetworkadapter ()
    $x = 0
    $strComputer = "Localhost"
    $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
    $colComputers = $objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter")
    For $objItem In $colItems
    $networkadapter [$x] [0] = $objitem.Name
    $networkadapter [$x] [1] = $objitem.NetConnectionID
    $x += 1
    Redim $networkadapter [$x + 1] [3]
    Next
    $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
    $colComputers = $objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration")
    For $objItem In $colItems
    For $i = 0 To UBound ($networkadapter) - 1
    If $networkadapter [$i] [0] = $objitem.Description Then
    $networkadapter [$i] [2] = $objitem.IPAddress(0)
    EndIf
    Next
    Next
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    ;Suchen nach Netzwerknamen und zusortieren der Adapter
    Func _SearchNetworknames ($searchstring)
    $sColumn = 0

    [/autoit][autoit][/autoit][autoit]

    $iIndex = _ArraySearch($networkadapter, $searchstring, 0, 0, 0, 1, $sColumn)
    If @error Then
    MsgBox(0, "Note:" ,"No virtual networkadapter found! Please install Hamachi/Tunngle !")
    Else
    Global $networkadaptername = $networkadapter[$iIndex][$sColumn]
    Global $networkname = $networkadapter[$iIndex][$sColumn+1]
    Global $networkip = $networkadapter[$iIndex][$sColumn+2]
    MsgBox(0, "" , $networkadaptername & $networkname & $networkip)

    [/autoit][autoit][/autoit][autoit]

    EndIf
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    ; LIST VIEW
    Func _ListNetworks ()
    ;_SearchNetworknames (" ")
    _SearchNetworknames ("Hamachi")
    $item1 = GUICtrlCreateListViewItem($networkadaptername&"|"&$networkname&"|"&$networkip, $listview)
    _SearchNetworknames ("Tunngle")
    $item2 = GUICtrlCreateListViewItem($networkadaptername&"|"&$networkname&"|"&$networkip, $listview)

    [/autoit][autoit][/autoit][autoit]

    ; $input1 = GUICtrlCreateInput("", 20, 200, 150)
    ; GUICtrlSetState(-1, $GUI_DROPACCEPTED) ; to allow drag and dropping
    GUISetState()
    $button = GUICtrlCreateButton("Use Selected Adapter",100,280,300, 20)
    Do
    $msg = GUIGetMsg()

    Select
    Case $msg = $button
    $tmp = GUICtrlRead(GUICtrlRead($listview))
    $tmp = StringMid($tmp,StringInStr($tmp,"|",1,1)+1)
    $tmp = StringTrimRight($tmp,StringInStr($tmp,"|",1,2))
    MsgBox(0, "listview item",$tmp, 2)
    ; Case $msg = $listview
    ; MsgBox(0, "listview", "clicked=" & GUICtrlGetState($listview), 2)
    EndSelect
    Until $msg = $GUI_EVENT_CLOSE

    [/autoit][autoit][/autoit][autoit]

    EndFunc

    [/autoit][autoit][/autoit][autoit]

    ; externe anwendung und DOS abfangen
    Func _StartTeknogodsDLL ()
    $oldData = ""

    [/autoit][autoit][/autoit][autoit]

    While 1
    ; Path exist in InputField Funktion?
    $hPID = Run("ping heise.de", "", @SW_HIDE, 6)
    While ProcessExists($hPID)
    $readData = StdoutRead($hPID, 1)
    If $readData <> $oldData Then
    GUICtrlSetData($output, GUICtrlRead($output) & @CRLF & $readData)
    $oldData = $readData
    EndIf
    WEnd
    Sleep(100)
    WEnd

    [/autoit][autoit][/autoit][autoit]

    EndFunc

    [/autoit][autoit][/autoit][autoit]

    ; schreibe selektion in die registrierung
    Func _WriteRegistration($slectednetworkname)
    RegWrite("HKEY_CURRENT_USER\Software\Classes\Software\Microsoft\XLive", "ConnectionOverride", "REG_SZ", $selectednetworkname)
    EndFunc

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit]

    Einmal editiert, zuletzt von WhiteLion (8. November 2009 um 18:50)

  • Halllo WhiteLion !

    Ich habe mir mal dein skript angeschaut und muß sagen das du dich über dein wiessen hinaus bewegst ohne überhaupt zu wissen was du willst und was du da machst so sieht dein skript auf jeden fall aus denn ich mußte zu anfang erstmal viele fehler beseitigen das ich ihn überhaupt starten konnte !
    Du weißt vieleicht was du ungefähr willst also arbeite dich doch von ein zum anderen und wenn du nicht weiter kommst dann sind wir hier und werden dir helfen soweit es uns möglich ist aber schmeiß kein code ihr rein der vorne und hinten nicht funkt!
    Ich habe den code erstmal zum laufen bekommen und die cpu leistung ist auch runter also überlege dir wo du anfangen willst dann können wir dir auch weiter helfen.

    Hir erstmal der laufende code!

    Spoiler anzeigen
    [autoit]

    #include <array.au3> ; wird nur für _ArrayDisplay benötigt
    #include <GuiConstantsEx.au3>
    #include <AVIConstants.au3>
    #include <TreeViewConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstants.au3>
    #include <File.au3>
    #include <Date.au3>
    Opt("GUIOnEventMode", 1) ; OnEvent-Mode einschalten

    [/autoit] [autoit][/autoit] [autoit]

    ; ##### Gui Control ##################################################################
    Global $Form1 = GUICreate("Inputfiels", 500, 400)
    GUISetOnEvent(-3, "_Exit")
    Local $output = GUICtrlCreateEdit("", 10, 330, 490, 70, BitOR($GUI_SS_DEFAULT_EDIT, $ES_MULTILINE))
    GUISetState(@SW_SHOW)
    GUICtrlCreateLabel("Status", 10, 310, 34, 17)
    GUICtrlCreateLabel("Virtual LAN Adapters found", 10, 160, 340, 17)
    GUISetIcon(@SystemDir & "\mspaint.exe", 0)
    GUICtrlCreateButton('Test', 20, 20, 50, 20)
    GUICtrlSetOnEvent(-1, '_GetNetworkadapter')
    Local $listView = GUICtrlCreateListView("Adaptername | Networkname | IP-Adress | Found |", 10, 180, 490, 100)
    Global $networkadapter[1][3]
    While 1
    Sleep(1000)
    WEnd
    Func _Exit()
    Exit
    EndFunc ;==>_Exit
    Func _GetNetworkadapter()
    Local $x = 0
    Local $strComputer = "Localhost"
    Local $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
    Local $colComputers = $objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
    Local $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter")
    For $objItem In $colItems
    $networkadapter[$x][0] = $objItem.Name
    $networkadapter[$x][1] = $objItem.NetConnectionID
    $x += 1
    ReDim $networkadapter[$x + 1][3]
    Next
    Local $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
    Local $colComputers = $objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
    Local $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration")
    For $objItem In $colItems
    For $i = 0 To UBound($networkadapter) - 1
    If $networkadapter[$i][0] = $objItem.Description Then
    $networkadapter[$i][2] = $objItem.IPAddress(0)
    EndIf
    Next
    Next
    _StartTeknogodsDLL()
    EndFunc ;==>_GetNetworkadapter

    [/autoit] [autoit][/autoit] [autoit]

    Func _StartTeknogodsDLL()
    Local $oldData = ""
    Local $hPID = Run("ping heise.de", "", @SW_HIDE, 6)
    Do
    $readData = StdoutRead($hPID, 1)
    If $readData <> $oldData Then
    GUICtrlSetData($output, GUICtrlRead($output) & @CRLF & $readData)
    $oldData = $readData
    EndIf
    If ProcessExists("ping.exe") Then
    Else
    _ListNetworks()
    ExitLoop
    EndIf
    Until 0
    EndFunc ;==>_StartTeknogodsDLL
    Func _ListNetworks()
    Dim $networkadaptername, $networkname, $networkip
    _SearchNetworknames("Hamachi")
    $item1 = GUICtrlCreateListViewItem($networkadaptername & "|" & $networkname & "|" & $networkip & '||', $listView)
    _SearchNetworknames("Tunngle")
    $item2 = GUICtrlCreateListViewItem($networkadaptername & "|" & $networkname & "|" & $networkip & '||', $listView)
    GUISetState()
    $button = GUICtrlCreateButton("Use Selected Adapter", 100, 280, 300, 20)
    Do
    $tmp = GUICtrlRead(GUICtrlRead($listView))
    $tmp = StringMid($tmp, StringInStr($tmp, "|", 1, 1) + 1)
    $tmp = StringTrimRight($tmp, StringInStr($tmp, "|", 1, 2))
    MsgBox(0, "listview item", $tmp, 2)
    ExitLoop
    Until 0

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>_ListNetworks
    Func _SearchNetworknames($searchstring)
    Local $sColumn = 0

    [/autoit] [autoit][/autoit] [autoit]

    Local $iIndex = _ArraySearch($networkadapter, $searchstring, 0, 0, 0, 1, $sColumn)
    If @error Then
    MsgBox(0, "Note:", "No virtual networkadapter found! Please install Hamachi/Tunngle !")
    Else
    Local $networkadaptername = $networkadapter[$iIndex][$sColumn]
    Local $networkname = $networkadapter[$iIndex][$sColumn + 1]
    Local $networkip = $networkadapter[$iIndex][$sColumn + 2]
    MsgBox(0, "", $networkadaptername & $networkname & $networkip)

    [/autoit] [autoit][/autoit] [autoit]

    EndIf
    EndFunc ;==>_SearchNetworknames

    [/autoit]

    LG Kleiner

  • hi kleiner :) und danke für das durchforsten!
    ich bin deinem rat gefolgt und nochmal einen schritt zurück als noch alles funktionierte, nämlich bevor ich anhand eines beispiels
    versucht habe die DOS-dinge abzufangen. das implementiere ich dann erst, wenn der rest läuft....
    also ich würde gerne wissen wie ich aus einem string (es geht um zeile 91-93) der z.B. so aussieht:
    (" Adaptername | Networkname | IP-Adress | Found |")
    den inhalt zwischen den beiden | strichen herauslesen und in einen string wandeln kann so dass mein string bei "position 2"
    z.B. "Networkname" ist.

  • Schön das du es verstanden hast! ;)

    Zu deiner fage: wenn ich sie richtig verstanden habe willst du wissen was die überschriften der ListenListView ist die du ja selber festgelegt hast?????? ?( !
    Ich versteh nicht ganz mit "position 2" meinst du ´die überschriften denn da ist doch an zweiter stelle Networkname???!!
    Oder meinst du die MsgBox ? Wenn ja da hast du ja auch die ausgabe selber geschrieben und wenn du da wo du versucht hast die überschriften zu lesen die MsgBox meinst da kannst du dan auch deine eigene ausgabe schrieben wie bei den anderen auch?!!!

    ????Frage über fragen????

    Wenn du schon ein laufendes skript hast poste es doch bitte dann kann ich auch besser verstehen was du meinst und weitere fragen werden einfacher zu klären sein!
    Denn du hast ja nur die hälfte hir rein gestellt!!!!!!

    LG Kleiner

  • hihi ... neeeeeein natürlich möchte ich das nicht aus der beschriftung filtern ... das war ja nur ein beispiel
    ich möchte es aus den darunterliegenden quasi selbsteingefügten werten auslesen, was in dem beispiel auch
    schon ganz gut klappt. der nutzer selektiert/markiert eins der gefundenen netzwerke und dann klickt er den
    button. anschließend schreibt das programm den zweiten wert (also den netzwerknamen) in die registrierung.

    hier gings nocht bis aud die tatsache, dass die filterung (das was in der messagbox steht) nicht klappt.
    da sollte eigentlich der netzwerkname stehen. ... den brauch ich wieder im string um ihn dann in die registrierung
    und schreiben... ich hoffe das war verständlich.

    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_outfile=test.exe
    #AutoIt3Wrapper_Compression=4
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <array.au3> ; wird nur für _ArrayDisplay benötigt
    #include <GuiConstantsEx.au3>
    #include <AVIConstants.au3>
    #include <TreeViewConstants.au3>

    [/autoit][autoit][/autoit][autoit]

    ; GUI
    GuiCreate("Sample GUI", 500, 400)
    GuiSetIcon(@SystemDir & "\mspaint.exe", 0)

    [/autoit][autoit][/autoit][autoit]

    Global $networkadapter [1] [3] ; definiere eine global nutzbaren wert fürs array

    [/autoit][autoit][/autoit][autoit]

    _GetNetworkadapter() ;suche nach Netzwerkadaptern,Namen,Is und schreibt die in ein Array
    _ListNetworks()

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    ;Auslesen der Netzwerkadapter:
    ; Selbstbestimmter Name
    ; int. Beschreibung
    ; IP Adresse
    Func _GetNetworkadapter ()
    $x = 0
    $strComputer = "Localhost"
    $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
    $colComputers = $objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter")
    For $objItem In $colItems
    $networkadapter [$x] [0] = $objitem.Name
    $networkadapter [$x] [1] = $objitem.NetConnectionID
    $x += 1
    Redim $networkadapter [$x + 1] [3]
    Next
    $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
    $colComputers = $objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration")
    For $objItem In $colItems
    For $i = 0 To UBound ($networkadapter) - 1
    If $networkadapter [$i] [0] = $objitem.Description Then
    $networkadapter [$i] [2] = $objitem.IPAddress(0)
    EndIf
    Next
    Next
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    ;Suchen nach Netzwerknamen und zusortieren der Adapter
    Func _SearchNetworknames ($searchstring)
    $sColumn = 0

    [/autoit][autoit][/autoit][autoit]

    $iIndex = _ArraySearch($networkadapter, $searchstring, 0, 0, 0, 1, $sColumn)
    If @error Then
    MsgBox(0, "Note:" ,"No virtual networkadapter found! Please install Hamachi/Tunngle !")
    Else
    Global $networkadaptername = $networkadapter[$iIndex][$sColumn]
    Global $networkname = $networkadapter[$iIndex][$sColumn+1]
    Global $networkip = $networkadapter[$iIndex][$sColumn+2]
    MsgBox(0, "" , $networkadaptername & $networkname & $networkip)

    [/autoit][autoit][/autoit][autoit]

    EndIf
    EndFunc

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Func _WriteRegistration()
    ;_SearchNetworknames ("Hamachi")
    ;RegWrite("HKEY_CURRENT_USER\Software\Classes\Software\Microsoft\XLive", "ConnectionOverride", "REG_SZ", $networkname)
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    ; LIST VIEW
    Func _ListNetworks ()
    ;_SearchNetworknames ("")
    $listView = GuiCtrlCreateListView(" Adaptername | Networkname | IP-Adress | Found |", 10, 200, 490, 140)
    _SearchNetworknames ("L")
    $item1 = GUICtrlCreateListViewItem($networkadaptername&"|"&$networkname&"|"&$networkip, $listview)
    _SearchNetworknames ("D")
    $item2 = GUICtrlCreateListViewItem($networkadaptername&"|"&$networkname&"|"&$networkip, $listview)

    [/autoit][autoit][/autoit][autoit]

    ; $input1 = GUICtrlCreateInput("", 20, 200, 150)
    ; GUICtrlSetState(-1, $GUI_DROPACCEPTED) ; to allow drag and dropping
    GUISetState()
    $button = GUICtrlCreateButton("Use Selected Adapter",10,380,300, 20)
    Do
    $msg = GUIGetMsg()

    Select
    Case $msg = $button
    $tmp = GUICtrlRead(GUICtrlRead($listview))
    $tmp = StringMid($tmp,StringInStr($tmp,"|",1,1)+1)
    $tmp = StringTrimRight($tmp,StringInStr($tmp,"|",1,2))
    MsgBox(0, "listview item",$tmp, 2)
    ; Case $msg = $listview
    ; MsgBox(0, "listview", "clicked=" & GUICtrlGetState($listview), 2)
    EndSelect
    Until $msg = $GUI_EVENT_CLOSE

    [/autoit][autoit][/autoit][autoit]

    EndFunc

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    ; GUI MESSAGE LOOP
    GuiSetState()
    While GuiGetMsg() <> $GUI_EVENT_CLOSE
    WEnd

    [/autoit]
  • Guten Morgen!


    1. Ist das der ganze code????
    2. Gewöhne dir an die Variablen zu Deklarieren!
    3.Versuch anhand meines beispiel dein code neu aufzubauen das nicht gleich alles auf einmal ablaufen kann oder muß ( Gut mußt du am ende wissen ) ;)

    Hir mal was dich weiter bringt:

    [autoit]

    GUICtrlGetHandle() ; das Handle vom Listview wird für
    _GUICtrlListView_SetColumn() ; 1. Spalte = 120 Px breit, rechts ausgerichtet (2.3..... usw.)
    _GUICtrlListView_GetSelectionMark(); auslesen, welcher Listview-Eintrag markiert
    _GUICtrlListView_GetItemTextArray(); die Einträge aus dem Listview in ein Array holen

    [/autoit]

    Jetzt kannst du ein wenig arbeiten lesen Testen! ;)


    Edit: Um dich noch ein wenig auf die sprünge zu helfen!

    [autoit]

    _GUICtrlListView_SetExtendedListViewStyle($listView, $LVS_EX_BORDERSELECT); Markierten Item auslesen

    [/autoit]


    LG Kleiner

    Einmal editiert, zuletzt von kleiner27 (4. November 2009 um 13:23)

  • 1000 Dank! - ich habe fast alles so weit hinbekommen wie ich wollte!
    Jetzt hänge ich noch an kleinigkeiten...

    - meine Reports laufen jetzt über ein statusfenster (inputbox)
    doch leider scrollt das fenster nicht laufend mit :(
    ich dachte " _GUICtrlEdit_Scroll($input, $SB_BOTTOM)"
    hilft, tut es aber leider nicht :(
    - mein größtes problem ist dass ich in der inputbox die DOS-Ausgaben
    des programmes DLLLoader.exe abfangen möchte, was leider nicht klappen
    mag :( evtl kannst du da helfen?
    - kosmetische sachen fehlen natürlich auchnoch

    hier der link mit dem source, der teknogodsdatei und dem compilierten programm von mir.
    http://rapidshare.de/files/48634890…odsDLL.rar.html

    vielen dank für die mühe!


    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_outfile=test\test.exe
    #AutoIt3Wrapper_Compression=4
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <array.au3> ; wird nur für _ArrayDisplay benötigt
    #include <AVIConstants.au3>
    #include <TreeViewConstants.au3>
    #Include <GuiListView.au3>
    #include <GuiEdit.au3>
    #include <GuiStatusBar.au3>
    #include <GuiConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <ScrollBarConstants.au3>

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    ; GUI
    GuiCreate("Sample GUI", 500, 400)
    GuiSetIcon(@SystemDir & "\mspaint.exe", 0)
    global $button1 = GUICtrlCreateButton("Use Selected Adapter",10,130,130, 30)
    global $button2 = GUICtrlCreateButton("Refresh Adapterlist",180,130,130, 30)
    global $button3 = GUICtrlCreateButton("Start Teknogods DLL",360,90,130, 30)
    global $button4 = GUICtrlCreateButton("Restore Default Adapter",360,130,130, 30)
    Global $listView = GuiCtrlCreateListView(" Nr. | Adaptername | Networkname | IP-Adress |", 10, 160, 480, 90)
    Global $input = GUICtrlCreateEdit("Statusreport:", 10, 270, 480, 120, BitOR($ES_WANTRETURN, $WS_VSCROLL))

    [/autoit][autoit][/autoit][autoit]

    Global $networkadapter [1] [3] ; definiere eine global nutzbaren wert fürs array
    Global $networkadaptername=("default")
    Global $networkname=("default")
    Global $networkip=("default")
    Global $SelectedNetworkName=("default")
    Global $processname=("DLLLoad.exe")

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    _GetNetworkadapter() ;suche nach Netzwerkadaptern,Namen,Is und schreibt die in ein Array
    _ListNetworks()

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    ;Auslesen der Netzwerkadapter:
    ; Selbstbestimmter Name
    ; int. Beschreibung
    ; IP Adresse
    Func _GetNetworkadapter ()
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Getting networkadapters of localhost")
    $x = 0
    $strComputer = "Localhost"
    $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
    $colComputers = $objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter")
    For $objItem In $colItems
    $networkadapter [$x] [0] = $objitem.Name
    $networkadapter [$x] [1] = $objitem.NetConnectionID
    $x += 1
    Redim $networkadapter [$x + 1] [3]
    Next
    $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
    $colComputers = $objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration")
    For $objItem In $colItems
    For $i = 0 To UBound ($networkadapter) - 1
    If $networkadapter [$i] [0] = $objitem.Description Then
    $networkadapter [$i] [2] = $objitem.IPAddress(0)
    EndIf
    Next
    Next
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Networkadapters succsessul found on localhost!")
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    ;Suchen nach Netzwerknamen und zusortieren der Adapter
    Func _SearchNetworknames ($searchstring)
    $sColumn = 0

    [/autoit][autoit][/autoit][autoit]

    $iIndex = _ArraySearch($networkadapter, $searchstring, 0, 0, 0, 1, $sColumn)
    If @error Then
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Internet to LAN emulating devive:" & $searchstring & " not found!")
    _GUICtrlEdit_Scroll($input, $SB_PAGEDOWN)
    Else
    Global $networkadaptername = $networkadapter[$iIndex][$sColumn]
    Global $networkname = $networkadapter[$iIndex][$sColumn+1]
    Global $networkip = $networkadapter[$iIndex][$sColumn+2]
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Networkadapter found:" & $searchstring & " Info:"& $networkadaptername & $networkname & $networkip)
    _GUICtrlEdit_Scroll($input, $SB_PAGEDOWN)
    EndIf
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    ;schreibt den selektierten netzwerknamen in die registrierung
    Func _WriteRegistration()
    $SelectedNetworkName = _GUICtrlListView_GetSelectionMark($listview)
    $SelectedNetworkName = _GUICtrlListView_GetItemText($ListView, $SelectedNetworkName,2)
    if $SelectedNetworkName=("") Then
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Error: Nothing selected!" & $SelectedNetworkName)
    else
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Writing (XLive) connectionoverride registrationkey:" & $SelectedNetworkName)
    _GUICtrlEdit_Scroll($input, $SB_BOTTOM)
    RegWrite("HKEY_CURRENT_USER\Software\Classes\Software\Microsoft\XLive", "ConnectionOverride", "REG_SZ", $SelectedNetworkName)
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Writing to registration done!")
    _GUICtrlEdit_Scroll($input, $SB_LINEDOWN)
    EndIf
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    ; LIST VIEW
    Func _ListNetworks ()
    _SearchNetworknames ("Tunngle")
    GUICtrlCreateListViewItem("1 |"&$networkadaptername&"|"&$networkname&"|"&$networkip, $listview)
    _SearchNetworknames ("Hamachi")
    GUICtrlCreateListViewItem("2 |"&$networkadaptername&"|"&$networkname&"|"&$networkip, $listview)

    [/autoit][autoit][/autoit][autoit]

    GUISetState()

    [/autoit][autoit][/autoit][autoit]

    Do
    $msg = GUIGetMsg()

    Select
    Case $msg = $button1
    _WriteRegistration()
    Case $msg = $button2
    $x=0
    Do
    _GUICtrlListView_DeleteItem($ListView, 0)
    $x=$x+1
    Until $x=50
    _ListNetworks()
    Case $msg = $button3
    _StartTeknogodsDLL ()
    Case $msg = $button4
    RegDelete("HKEY_CURRENT_USER\Software\Classes\Software\Microsoft\XLive", "ConnectionOverride")
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "XLive Registrationkey 'ConnectionOverride' deleded using standard IP now!")
    EndSelect
    Until $msg = $GUI_EVENT_CLOSE
    GUIDelete()
    exit
    EndFunc

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Func _StartTeknogodsDLL()
    if FileExists ($processname) Then
    If ProcessExists($processname) Then
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Process is already running:" & $processname & " Cant be started twice!")
    _GUICtrlEdit_Scroll($input, $SB_BOTTOM)
    Else
    Do

    Local $oldData = ""
    Local $hPID = Run("DLLLoad" , "", @SW_HIDE , 6) ;hier können noch parameter hinter den prozessnamen gehängt werden!
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Starting external programm: " & $processname)
    _GUICtrlEdit_Scroll($input, $SB_LINEDOWN)
    $readData = StdoutRead($hPID, 1)
    If $readData <> $oldData Then
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & $readData)
    $oldData = $readData
    EndIf
    ExitLoop
    Until 0
    EndIf
    Else
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "File not found:" & $processname & " It musst be placed in the same directory as this tool!")
    EndIf
    EndFunc ;==>_StartTeknogodsDLL

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    ; GUI MESSAGE LOOP
    GuiSetState()
    While GuiGetMsg() <> $GUI_EVENT_CLOSE
    WEnd

    [/autoit]

    Einmal editiert, zuletzt von WhiteLion (5. November 2009 um 01:54)

  • Hey WhiteLion !


    1. Dein code ist richtig gut geworden!

    Spoiler anzeigen
    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Outfile=test\test.exe
    #AutoIt3Wrapper_Compression=4
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <array.au3> ; wird nur für _ArrayDisplay benötigt
    #include <AVIConstants.au3>
    #include <TreeViewConstants.au3>
    #include <GuiListView.au3>
    #include <GuiEdit.au3>
    #include <GuiStatusBar.au3>
    #include <GuiConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <ScrollBarConstants.au3>
    #include <EditConstants.au3>
    Opt('MustDeclareVars', 1)
    $Debug_Ed = False
    Local $msg, $x, $strComputer, $objWMIService, $colComputers, $colItems, $iLen, $iHoriz = 0, $iVert = 100
    GUICreate("Sample GUI", 500, 400)
    GUISetIcon(@SystemDir & "\mspaint.exe", 0)
    Global $input = GUICtrlCreateEdit("Statusreport:", 10, 270, 480, 120, BitOR($ES_WANTRETURN, $WS_VSCROLL))
    Global $button1 = GUICtrlCreateButton("Use Selected Adapter", 10, 130, 130, 30)
    Global $button2 = GUICtrlCreateButton("Refresh Adapterlist", 180, 130, 130, 30)
    Global $button3 = GUICtrlCreateButton("Start Teknogods DLL", 360, 90, 130, 30)
    Global $button4 = GUICtrlCreateButton("Restore Default Adapter", 360, 130, 130, 30)
    Global $listView = GUICtrlCreateListView(" Nr. | Adaptername | Networkname | IP-Adress |", 10, 160, 480, 90)
    Global $networkadapter[1][3] ; definiere eine global nutzbaren wert fürs array
    Global $networkadaptername = ("default")
    Global $networkname = ("default")
    Global $networkip = ("default")
    Global $SelectedNetworkName = ("default")
    Global $processname = ("DLLLoad.exe")
    _GetNetworkadapter() ;suche nach Netzwerkadaptern,Namen,Is und schreibt die in ein Array
    _ListNetworks()
    Func _GetNetworkadapter()
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Getting networkadapters of localhost")
    $x = 0
    $strComputer = "Localhost"
    $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
    $colComputers = $objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter")
    For $objItem In $colItems
    $networkadapter[$x][0] = $objItem.Name
    $networkadapter[$x][1] = $objItem.NetConnectionID
    $x += 1
    ReDim $networkadapter[$x + 1][3]
    Next
    $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
    $colComputers = $objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration")
    For $objItem In $colItems
    For $i = 0 To UBound($networkadapter) - 1
    If $networkadapter[$i][0] = $objItem.Description Then
    $networkadapter[$i][2] = $objItem.IPAddress(0)
    EndIf
    Next
    Next
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Networkadapters succsessul found on localhost!")
    EndFunc ;==>_GetNetworkadapter
    Func _SearchNetworknames($searchstring)
    Local $sColumn = 0
    Local $iIndex = _ArraySearch($networkadapter, $searchstring, 0, 0, 0, 1, $sColumn)
    If @error Then
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Internet to LAN emulating devive:" & $searchstring & " not found!")
    Else
    Global $networkadaptername = $networkadapter[$iIndex][$sColumn]
    Global $networkname = $networkadapter[$iIndex][$sColumn + 1]
    Global $networkip = $networkadapter[$iIndex][$sColumn + 2]
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Networkadapter found:" & $searchstring & " Info:" & $networkadaptername & $networkname & $networkip)
    EndIf
    EndFunc ;==>_SearchNetworknames

    [/autoit] [autoit][/autoit] [autoit]

    ;schreibt den selektierten netzwerknamen in die registrierung
    Func _WriteRegistration()
    $SelectedNetworkName = _GUICtrlListView_GetSelectionMark($listView)
    $SelectedNetworkName = _GUICtrlListView_GetItemText($listView, $SelectedNetworkName, 2)
    If $SelectedNetworkName = ("") Then
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Error: Nothing selected!" & $SelectedNetworkName)
    Else
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Writing (XLive) connectionoverride registrationkey:" & $SelectedNetworkName)
    RegWrite("HKEY_CURRENT_USER\Software\Classes\Software\Microsoft\XLive", "ConnectionOverride", "REG_SZ", $SelectedNetworkName)
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Writing to registration done!")
    EndIf
    _GUICtrlEdit_LineScroll($input, $iHoriz, $iVert)
    EndFunc ;==>_WriteRegistration
    Func _ListNetworks()
    _SearchNetworknames("Tunngle")
    GUICtrlCreateListViewItem("1 |" & $networkadaptername & "|" & $networkname & "|" & $networkip, $listView)
    _SearchNetworknames("Hamachi")
    GUICtrlCreateListViewItem("2 |" & $networkadaptername & "|" & $networkname & "|" & $networkip, $listView)
    GUISetState()
    _GUICtrlEdit_LineScroll($input, $iHoriz, $iVert)
    Do
    $msg = GUIGetMsg()
    Select
    Case $msg = $button1
    _WriteRegistration()
    Case $msg = $button2
    $x = 0
    Do
    _GUICtrlListView_DeleteItem($listView, 0)
    $x = $x + 1
    Until $x = 50
    _ListNetworks()
    Case $msg = $button3
    _StartTeknogodsDLL()
    Case $msg = $button4
    RegDelete("HKEY_CURRENT_USER\Software\Classes\Software\Microsoft\XLive", "ConnectionOverride")
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "XLive Registrationkey 'ConnectionOverride' deleded using standard IP now!")
    _GUICtrlEdit_LineScroll($input, $iHoriz, $iVert)
    EndSelect
    Until $msg = $GUI_EVENT_CLOSE
    GUIDelete()
    Exit
    EndFunc ;==>_ListNetworks
    Func _StartTeknogodsDLL()
    If FileExists($processname) Then
    If ProcessExists($processname) Then
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Process is already running:" & $processname & " Cant be started twice!")
    Else
    Do
    Local $oldData = ""
    Local $hPID = Run("DLLLoad", "", @SW_HIDE, 6) ;hier können noch parameter hinter den prozessnamen gehängt werden!
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Starting external programm: " & $processname)
    Local $readData = StdoutRead($hPID, 1)
    If $readData <> $oldData Then
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & $readData)
    $oldData = $readData
    EndIf
    ExitLoop
    Until 0
    EndIf
    Else
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "File not found:" & $processname & " It musst be placed in the same directory as this tool!")
    EndIf
    _GUICtrlEdit_LineScroll($input, $iHoriz, $iVert)
    EndFunc ;==>_StartTeknogodsDLL
    GUISetState()
    While GUIGetMsg() <> $GUI_EVENT_CLOSE
    WEnd

    [/autoit]


    2. Das ist die lezte hilfe zu den code und frage auch nicht weiter wegen ( TeknoGods.dll DLLLoad.exe ) lese dir die forenregeln durch! NO Bots!


    Meine hilfestellung ist hirmit beendet!

    LG Kleiner

  • hallo, danke abschließend nochmal für die hilfe :) ... hätte ich ohne dich sicher nicht geschafft!

    aber eins möchte ich noch klarstellen: das ist aber kein BOT!!!
    die teknogods dll ist ein programm was bei spielen die sich über xlive verbinden den ping verbessert!
    xlive blockiert leider von haus aus, dass man spiele über LAN spielen kann wenn der ping unter 30ms ist.
    leider erreicht man diesen ping kaum über Hamachi oder anderes virtuelles LAN-netzwerk.
    das hat nichts mit einem bot zu tun oder !?

    Einmal editiert, zuletzt von WhiteLion (5. November 2009 um 13:37)

  • Ich habe kurz info über 40 seiten aus dem netz geholt, auch übersezen lassen und am ende ligt die datei bei bots in der kategorie in manchen EU ländern wird er als vire gesehn als wurm es soll aber keiner sein aber unter bots zu finden!

    Wenn ich da jetzt falsche infos habe lass ich mich auch gerne eines besseren beleren!


    LG Kleiner

  • kein problem, infos gibt es hier: http://www.teknogods.com
    hier stehts genau:
    http://www.teknogods.com/phpbb/viewtopic.php?f=8&t=94
    zitat:
    I searched around for a way to get RE5 working over Hamachi and I found this. Tried the latest beta and it worked like a charm. But, I'l like to know what this actually is, what it does?

    Is this mod a way to make GFWLive tunnle all traffic to Hamachi or how does it work? What actually happens when you press F12 and then F12 again? Why is this mod necessary? Is there and explanation of this mod and what it actually does?

    Ansewer: It patches the 30ms ping check. So if your ping is over 30ms it won't let you join the game.


    Also ich nutze das tool selber, es schaut alle 10 sekunden ob eins der unterstützten spiele läuft (prozess) und wenn es
    läuft patcht es xlive so wie ich geschrieben habe. im spiel drückt mann dann F12, wenn man keine verbindung bekommt
    das ändert das ping-limit. mein tool ändert die tatsachte, dass man mit xlive einen anderen adapter nutzen kann. das muss man
    sonst von hand machen in der reg...

    ich habs noch nicht getestet, daber wenn ein virus oder so angezeigt wird, dann liegt das sicherlich am packer.
    ich wollte es mal reversen, da ich auch erst nicht wusste was genau passiert.dabei hab ich rausgefunden, dass es mit yodas
    protector gepackt ist, da gibts genau wie bei upx auch mal nen falschalarm vom AV scanner.
    anhand der comunity kannst du aber selber erkennen dass es funktioniert und harmlos ist!

    EDIT: Verdammt ich hab keinen plan warum ich die dosausgaben nicht abfangen kann :(

    [autoit]


    Func _StartTeknogodsDLL()
    If FileExists($processname) Then
    If ProcessExists($processname) Then
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Process is already running:" & $processname & " Cant be started twice!")
    Else
    Local $oldData = ""
    Local $hPID = Run("ping.exe heise.de", "", @SW_HIDE, 6) ;hier können noch parameter hinter den prozessnamen gehängt werden!
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Starting external program: " & $processname)
    Do
    ; GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "loop")
    Local $readData = StdoutRead($hPID, 1)
    If $readData <> $oldData Then
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "loop")
    GUICtrlSetData($input, $input & @CRLF & $readData)
    $oldData = $readData
    else
    ExitLoop
    EndIf
    Until 0
    EndIf
    Else
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "File not found:" & $processname & " It musst be placed in the same directory as this tool!")
    EndIf
    _GUICtrlEdit_LineScroll($input, $iHoriz, $iVert)
    EndFunc ;==>_StartTeknogodsDLL

    [/autoit]

    Einmal editiert, zuletzt von WhiteLion (5. November 2009 um 16:02)

  • Hallo WhiteLion !

    Also ich möchte mich jetzt hier nicht hinreißen lasen. Das die Programme das Ziel haben, Bezahlsoftware ohne Bezahlung nutzbar zu machen ist kein Geheimnis, und illegal ich will dir nicht unterstellen das du illegale sahen machst es ist doch so der eine sagt legal der andere sagt illegal was aber bewiesen ist:

    TR/Crypt.ZPACK.Gen Datei: Tekno_gods_beta12.rar
    TR/Crypt.ZPACK.Gen - Trojan Datei: TeknoGods.dll
    TR/Crypt.XPACK.Gen Datei: DLLLoad.exe

    oder:Schau hir
    und: Noch einer
    Das sind zwei von vielen!
    Die leute machen immer solange weiter bis ihr eigenes system betroffen wurde, am ende mußt du selber wissen ob du dein system offenlegen willst oder nicht!

    Ende!

    LG Kleiner

  • hi kleiner,

    das heisst doch gar nichts, wie gesagt: sogar upx wird von einigen av programmen als schädlich erkannt.
    und da dieses programm gecryptet ist und einen laufenden prozess patcht reicht das der meisten av-software
    aus um den proaktiv-schutz auszulösen.
    es ist vergleichbar mit xp-antispy mit dem man ja z.B. auch das verbindungslimit patchen kann. was ja auch legal ist.

    aber davon mal ganz abgesehen, ich bekomme es in meiner routine ja schon nicht hin, wenn ich ein anderes-dos
    programm nehme... :(

  • Also!


    [autoit]

    ; #include nicht vergessen
    Func _StartTeknogodsDLL()
    Local $oldData = ""
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Starting external program: " & $processname)
    Local $hPID = Run("ping.exe heise.de", "", @SW_HIDE, $STDOUT_CHILD + $STDERR_CHILD)
    ProcessWaitClose($hPID)
    Do
    Local $readData = StdoutRead($hPID)
    If $readData <> $oldData Then
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "loop")
    $oldData = $readData
    EndIf
    ExitLoop
    Until 0
    _GUICtrlEdit_LineScroll($input, $iHoriz, $iVert)
    EndFunc ;==>_StartTeknogodsDLL

    [/autoit]

    so solte es funken!

    Lg Kleiner

  • Sag mal hast du dein code überhaubt selber geschrieben?????????????????????

    Schasu doch mal hin was fehlt denn da an stelle "loop" ??????????????????????????????????????????

    Oder versuchst du die DLLLod.exe ?? tja wie gesagt da helfe ich dir nicht!


    LG Kleiner

  • Sag mal hast du dein code überhaubt selber geschrieben?????????????????????

    Schasu doch mal hin was fehlt denn da an stelle "loop" ??????????????????????????????????????????

    Oder versuchst du die DLLLod.exe ?? tja wie gesagt da helfe ich dir nicht!


    LG Kleiner

    also in der tat habe ich den teil aus einem beispiel.
    weiterhin bin ich von ausgegangen, dass er zumindest zig mal "loop" ins fenster schreibt... was er nicht tut
    normal müsste da nach meinem verständniss "$readData" hin. was natürlich auch nicht klappt.
    und nein,ich habe mit ping.exe probiert...

    der befehl ProcessWaitClose($hPID) ist mir auch unklar ? <- demnach pausiert das script ja nach dem ausführen.
    aber es muss doch noch in die schleife damit es geht !?

    sorry das ist mein drittes programm und ich hatte immer nen jahr pause zwischen deswegen raucht mir ganz schön der kopf
    nachdem ich jetzt schon 3 tage davor sitze.

    Einmal editiert, zuletzt von WhiteLion (5. November 2009 um 22:28)

  • So das ist jetzt mein code erstellt von Kleiner! ;):D

    Spoiler anzeigen
    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Outfile=test\test.exe
    #AutoIt3Wrapper_Compression=4
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <array.au3> ; wird nur für _ArrayDisplay benötigt
    #include <AVIConstants.au3>
    #include <TreeViewConstants.au3>
    #include <GuiListView.au3>
    #include <GuiEdit.au3>
    #include <Constants.au3>
    #include <GuiStatusBar.au3>
    #include <GuiConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <ScrollBarConstants.au3>
    #include <EditConstants.au3>
    Opt('MustDeclareVars', 1)
    $Debug_Ed = False
    Local $msg, $x, $strComputer, $objWMIService, $colComputers, $colItems, $iLen, $iHoriz = 0, $iVert = 100
    GUICreate("Sample GUI", 500, 400)
    GUISetIcon(@SystemDir & "\mspaint.exe", 0)
    Global $input = GUICtrlCreateEdit("Statusreport:", 10, 270, 480, 120, BitOR($ES_WANTRETURN, $WS_VSCROLL))
    Global $button1 = GUICtrlCreateButton("Use Selected Adapter", 10, 130, 130, 30)
    Global $button2 = GUICtrlCreateButton("Refresh Adapterlist", 180, 130, 130, 30)
    Global $button3 = GUICtrlCreateButton("Start Teknogods DLL", 360, 90, 130, 30)
    Global $button4 = GUICtrlCreateButton("Restore Default Adapter", 360, 130, 130, 30)
    Global $listView = GUICtrlCreateListView(" Nr. | Adaptername | Networkname | IP-Adress |", 10, 160, 480, 90)
    Global $networkadapter[1][3] ; definiere eine global nutzbaren wert fürs array
    Global $networkadaptername = ("default")
    Global $networkname = ("default")
    Global $networkip = ("default")
    Global $SelectedNetworkName = ("default")
    Global $processname = ("DLLLoad.exe")
    _GetNetworkadapter() ;suche nach Netzwerkadaptern,Namen,Is und schreibt die in ein Array
    _ListNetworks()
    Func _GetNetworkadapter()
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Getting networkadapters of localhost")
    $x = 0
    $strComputer = "Localhost"
    $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
    $colComputers = $objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter")
    For $objItem In $colItems
    $networkadapter[$x][0] = $objItem.Name
    $networkadapter[$x][1] = $objItem.NetConnectionID
    $x += 1
    ReDim $networkadapter[$x + 1][3]
    Next
    $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
    $colComputers = $objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration")
    For $objItem In $colItems
    For $i = 0 To UBound($networkadapter) - 1
    If $networkadapter[$i][0] = $objItem.Description Then
    $networkadapter[$i][2] = $objItem.IPAddress(0)
    EndIf
    Next
    Next
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Networkadapters succsessul found on localhost!")
    EndFunc ;==>_GetNetworkadapter
    Func _SearchNetworknames($searchstring)
    Local $sColumn = 0
    Local $iIndex = _ArraySearch($networkadapter, $searchstring, 0, 0, 0, 1, $sColumn)
    If @error Then
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Internet to LAN emulating devive:" & $searchstring & " not found!")
    Else
    Global $networkadaptername = $networkadapter[$iIndex][$sColumn]
    Global $networkname = $networkadapter[$iIndex][$sColumn + 1]
    Global $networkip = $networkadapter[$iIndex][$sColumn + 2]
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Networkadapter found:" & $searchstring & " Info:" & $networkadaptername & $networkname & $networkip)
    EndIf
    EndFunc ;==>_SearchNetworknames

    [/autoit] [autoit][/autoit] [autoit]

    ;schreibt den selektierten netzwerknamen in die registrierung
    Func _WriteRegistration()
    $SelectedNetworkName = _GUICtrlListView_GetSelectionMark($listView)
    $SelectedNetworkName = _GUICtrlListView_GetItemText($listView, $SelectedNetworkName, 2)
    If $SelectedNetworkName = ("") Then
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Error: Nothing selected!" & $SelectedNetworkName)
    Else
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Writing (XLive) connectionoverride registrationkey:" & $SelectedNetworkName)
    RegWrite("HKEY_CURRENT_USER\Software\Classes\Software\Microsoft\XLive", "ConnectionOverride", "REG_SZ", $SelectedNetworkName)
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Writing to registration done!")
    EndIf
    _GUICtrlEdit_LineScroll($input, $iHoriz, $iVert)
    EndFunc ;==>_WriteRegistration
    Func _ListNetworks()
    _SearchNetworknames("Tunngle")
    GUICtrlCreateListViewItem("1 |" & $networkadaptername & "|" & $networkname & "|" & $networkip, $listView)
    _SearchNetworknames("Hamachi")
    GUICtrlCreateListViewItem("2 |" & $networkadaptername & "|" & $networkname & "|" & $networkip, $listView)
    GUISetState()
    _GUICtrlEdit_LineScroll($input, $iHoriz, $iVert)
    Do
    $msg = GUIGetMsg()
    Select
    Case $msg = $button1
    _WriteRegistration()
    Case $msg = $button2
    $x = 0
    Do
    _GUICtrlListView_DeleteItem($listView, 0)
    $x = $x + 1
    Until $x = 50
    _ListNetworks()
    Case $msg = $button3
    _StartTeknogodsDLL()
    Case $msg = $button4
    RegDelete("HKEY_CURRENT_USER\Software\Classes\Software\Microsoft\XLive", "ConnectionOverride")
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "XLive Registrationkey 'ConnectionOverride' deleded using standard IP now!")
    _GUICtrlEdit_LineScroll($input, $iHoriz, $iVert)
    EndSelect
    Until $msg = $GUI_EVENT_CLOSE
    GUIDelete()
    Exit
    EndFunc ;==>_ListNetworks
    Func _StartTeknogodsDLL()
    Local $oldData = ""
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Starting external program: " & $processname)
    Local $hPID = Run("ping.exe heise.de", "", @SW_HIDE, $STDOUT_CHILD + $STDERR_CHILD);<-------- für StdoutRead
    ProcessWaitClose($hPID);<-------- pusiert bis die ausgabe fertig gestellt wurde! finde ich besser ansosten mußt du das wie dein ertsten code machen enlich nicht gleich!
    Local $readData = StdoutRead($hPID)
    GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & $readData); brauchst auch keine schleife mehr solange du nicht jede zeile einzelnt sehen willst
    _GUICtrlEdit_LineScroll($input, $iHoriz, $iVert)
    EndFunc ;==>_StartTeknogodsDLL
    GUISetState()
    While GUIGetMsg() <> $GUI_EVENT_CLOSE
    WEnd

    [/autoit]

    Edit: Bitte spoiler benutzen! das scrollen geht mir schon auf den sa...............

    LG Kleiner