also nach der datei hab ich gefragt, weil die DLLLoad.exe normalerweise in dem verzeichnis liegen muss.
natürlich hab ich die ping.exe anstelle dessen solange ins selbe verzeichnis kopiert. (wobei das natürlich für
das beispiel uninteressant ist)
jetzt der hammer: dein beispielt geht, wenn ich allerdings die komplette funktion in mein original source
einfüge, dann gehts immernoch nicht !? - au man ... der bock muss irgendwo anders sitzen ....
bestimmt eine variable die global ist oder so ... keine ahnung ... so ein mist aber auch
Beiträge von WhiteLion
-
-
tolles tool... mal gucken ób ich meine freundin dazu überreden, kann es zu benutzen
-
-
hmmm, welchen code ich von euch auch einkopiere, es geht nicht
... es gibt auch keine fehlermeldung.
ich poste jetzt mal wie mein code bisher aussieht bzw. wie ich mein tool trotzdem benutzen kann. (hab einfach die meldungen von hand geschrieben)aber es geht ja jetzt nurnoch ums prinzip warum es bei mir nicht geht!
fehlt noch ein include???
hier mal ausschnittweise alle relevanten stellen:
wie gesagt: die meldungen gehen und alles bin ich soooo blöde !?Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#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 <StaticConstants.au3>
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ScrollBarConstants.au3>
#include <EditConstants.au3>
#include <Constants.au3>Opt('MustDeclareVars', 1)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$Debug_Ed = False
Local $msg, $x, $strComputer, $objWMIService, $colComputers, $colItems, $iLen, $iHoriz = 0, $iVert = 100
Global $input = GUICtrlCreateEdit("Starting interface....", 10, 350, 480, 120, BitOR($ES_AUTOVSCROLL , $WS_VSCROLL))Global $processname = ("ping.exe")
[/autoit] [autoit][/autoit] [autoit]Func _StartTeknogodsDLL()
[/autoit]
If FileExists($processname) Then
If ProcessExists($processname) Then
GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Process was already running:" & $processname & " It will be closed and restarted!")
ProcessClose ($processname)
GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Process closed! Will be restarted soon...")
Sleep(5000)
Local $hPID = Run("ping.exe", "", @SW_HIDE, $STDOUT_CHILD + $STDERR_CHILD) ;hier können noch parameter hinter den prozessnamen gehängt werden!
GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Starting external program: " & $processname)
GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "You can run the game now! Remember: Use F12-key in game to activate!")
Else
Local $oldData = ""
Local $hPID = Run("ping.exe", "", @SW_HIDE, $STDOUT_CHILD + $STDERR_CHILD) ;hier können noch parameter hinter den prozessnamen gehängt werden!
GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "Starting external program: " & $processname)
GUICtrlSetData($input, GUICtrlRead($input) & @CRLF & "You can run the game now! Remember: Use F12-key in game to activate!")
ProcessWaitClose($hPID)
Do
Local $readData = StdoutRead($hPID)
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 -
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. -
scheint nicht zu gehen ...
ich habs per copy and paste reingemacht und
die #include <Constants.au3> geadded
der listet in dem fenster nichtmal den text "loop" -
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... -
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]
[/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 -
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 !? -
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 auchnochhier der link mit dem source, der teknogodsdatei und dem compilierten programm von mir.
http://rapidshare.de/files/48634890…odsDLL.rar.htmlvielen dank für die mühe!
[autoit]#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
[/autoit][autoit][/autoit][autoit][/autoit][autoit]
#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>; GUI
[/autoit][autoit][/autoit][autoit]
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))Global $networkadapter [1] [3] ; definiere eine global nutzbaren wert fürs array
[/autoit][autoit][/autoit][autoit][/autoit][autoit]
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
[/autoit][autoit][/autoit][autoit][/autoit][autoit]
_ListNetworks();Auslesen der Netzwerkadapter:
[/autoit][autoit][/autoit][autoit]
; 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;Suchen nach Netzwerknamen und zusortieren der Adapter
[/autoit][autoit][/autoit][autoit]
Func _SearchNetworknames ($searchstring)
$sColumn = 0$iIndex = _ArraySearch($networkadapter, $searchstring, 0, 0, 0, 1, $sColumn)
[/autoit][autoit][/autoit][autoit]
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;schreibt den selektierten netzwerknamen in die registrierung
[/autoit][autoit][/autoit][autoit]
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; LIST VIEW
[/autoit][autoit][/autoit][autoit]
Func _ListNetworks ()
_SearchNetworknames ("Tunngle")
GUICtrlCreateListViewItem("1 |"&$networkadaptername&"|"&$networkname&"|"&$networkip, $listview)
_SearchNetworknames ("Hamachi")
GUICtrlCreateListViewItem("2 |"&$networkadaptername&"|"&$networkname&"|"&$networkip, $listview)GUISetState()
[/autoit][autoit][/autoit][autoit]Do
[/autoit][autoit][/autoit][autoit][/autoit][autoit]
$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
EndFuncFunc _StartTeknogodsDLL()
[/autoit][autoit][/autoit][autoit][/autoit][autoit]
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; GUI MESSAGE LOOP
[/autoit]
GuiSetState()
While GuiGetMsg() <> $GUI_EVENT_CLOSE
WEnd -
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!!!!!!hier das script als es noch lief:
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.
[autoit]
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.#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
[/autoit][autoit][/autoit][autoit]
#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>; GUI
[/autoit][autoit][/autoit][autoit]
GuiCreate("Sample GUI", 500, 400)
GuiSetIcon(@SystemDir & "\mspaint.exe", 0)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
[/autoit][autoit][/autoit][autoit][/autoit][autoit]
_ListNetworks();Auslesen der Netzwerkadapter:
[/autoit][autoit][/autoit][autoit]
; 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;Suchen nach Netzwerknamen und zusortieren der Adapter
[/autoit][autoit][/autoit][autoit]
Func _SearchNetworknames ($searchstring)
$sColumn = 0$iIndex = _ArraySearch($networkadapter, $searchstring, 0, 0, 0, 1, $sColumn)
[/autoit][autoit][/autoit][autoit]
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)EndIf
[/autoit][autoit][/autoit][autoit][/autoit][autoit]
EndFuncFunc _WriteRegistration()
[/autoit][autoit][/autoit][autoit]
;_SearchNetworknames ("Hamachi")
;RegWrite("HKEY_CURRENT_USER\Software\Classes\Software\Microsoft\XLive", "ConnectionOverride", "REG_SZ", $networkname)
EndFunc; LIST VIEW
[/autoit][autoit][/autoit][autoit]
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); $input1 = GUICtrlCreateInput("", 20, 200, 150)
[/autoit][autoit][/autoit][autoit]
; 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_CLOSEEndFunc
[/autoit][autoit][/autoit][autoit][/autoit][autoit]; GUI MESSAGE LOOP
[/autoit]
GuiSetState()
While GuiGetMsg() <> $GUI_EVENT_CLOSE
WEnd -
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. -
hmmm, da hab ich euch wohl mit meinem code erschlagen, was ?
-
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
[/autoit][autoit][/autoit][autoit]
#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 ##################################################################
[/autoit][autoit][/autoit][autoit]
$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)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
[/autoit][autoit][/autoit][autoit]
_ListNetworks() ;schreibe gefundene Adapter in Liste
_StartTeknogodsDLL() ;starte externes programm und fange dosausgabe ab;Auslesen der Netzwerkadapter:
[/autoit][autoit][/autoit][autoit]
; 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;Suchen nach Netzwerknamen und zusortieren der Adapter
[/autoit][autoit][/autoit][autoit]
Func _SearchNetworknames ($searchstring)
$sColumn = 0$iIndex = _ArraySearch($networkadapter, $searchstring, 0, 0, 0, 1, $sColumn)
[/autoit][autoit][/autoit][autoit]
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)EndIf
[/autoit][autoit][/autoit][autoit]
EndFunc; LIST VIEW
[/autoit][autoit][/autoit][autoit]
Func _ListNetworks ()
;_SearchNetworknames (" ")
_SearchNetworknames ("Hamachi")
$item1 = GUICtrlCreateListViewItem($networkadaptername&"|"&$networkname&"|"&$networkip, $listview)
_SearchNetworknames ("Tunngle")
$item2 = GUICtrlCreateListViewItem($networkadaptername&"|"&$networkname&"|"&$networkip, $listview); $input1 = GUICtrlCreateInput("", 20, 200, 150)
[/autoit][autoit][/autoit][autoit]
; 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_CLOSEEndFunc
[/autoit][autoit][/autoit][autoit]; externe anwendung und DOS abfangen
[/autoit][autoit][/autoit][autoit]
Func _StartTeknogodsDLL ()
$oldData = ""While 1
[/autoit][autoit][/autoit][autoit]
; 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)
WEndEndFunc
[/autoit][autoit][/autoit][autoit]; schreibe selektion in die registrierung
[/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit]
Func _WriteRegistration($slectednetworkname)
RegWrite("HKEY_CURRENT_USER\Software\Classes\Software\Microsoft\XLive", "ConnectionOverride", "REG_SZ", $selectednetworkname)
EndFunc -
au man bin ich doooof ... ich wollte die strings weiterverarbeiten und war schon auserhalb einer/der funktion....
wenn ich innerhalb selbiger bleibe gehts natürlich.... verdammt ... so ein ärger wegen sonem blöden fehler!muss ich mir mal das mit den funktionen angucken wie ich werte/strings übergebe bzw ausserhalb der funktion weiterverarbeiten kann.
-
hab nich alles durchgelesen aber etwas zu nem string machen geht mit String()
ja, aber ich glaube bei einem array ist das noch etwas anders oder wozu gibts sonst _arraytostring ?
$string1 = String($string1)
hat jedenfalls nicht funktioniert. -
ich habe das problem gefunden, aber noch keine lösung.
da ich die strings aus einem 2D array definiert habe sinds wohl noch keine echten strings und das ganze funktioniert nicht.
bei mir werden die so definiert, was wohl falsch ist... nur wie gehts richtig bzw wie wandelt man die um?
$string1 = $array1[$xpos][$ypos+1]
msgbox zeigt mir jedenfalls die "zelle" im array richtig an, so dass ich dachte ich kann es auch als string weiterverarbeiten.
_ArrayToString($string1, , 0, 0)
geht ja mit 2D arrays nicht und selbst nach wenn ichs so versuche ist es immernoch kein verwertbarer string ... wie bekomme ich daraus nun einen string? -
was wäre ich nur ohne dieses forum?
also, ich habe leider keine passende lösung gefunden und würde gerne meine list die 3 spalten enthält mit dem inhalt eines strings füllen.
item1 =GUICtrlCreateListViewItem ($string1 & '|' & $string2 & '|' & $string3 , $listview)
das ganze geht aber nicht, strings irgendwie nicht akzeptiert werden... wie bekomme ich da meine werte aus den strings hin!?
-
aha, hat geklappt thanx euch beiden ...
-
Hi... dieses mal hab ich eine kurze frage...
also ich habe ein 2D array mit 3 spalten und 30 zeilen.
jetzt möchte ich den inhalt von spalte 2 / zeile 18 in einen string wandeln und per messagebox ausgeben.
ich schnall nicht wie es geht, da ich 1. nciht weiss wie ich die spalten, also in meinem beispiel $xposition, ansteuere.
2. nicht versehe, warum meine msgbox gar nix wiedergibt obwohl das array definitiv da ist.$xposition=2
$yposition=18$test=_ArrayToString($strassen, , $yposition,$yposition )
MsgBox(0, "Name der Strasse lautet ", '"' & $test & '".')