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>
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)
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
;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
;Suchen nach Netzwerknamen und zusortieren der Adapter
Func _SearchNetworknames ($searchstring)
$sColumn = 0
$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)
EndIf
EndFunc
; LIST VIEW
Func _ListNetworks ()
;_SearchNetworknames (" ")
_SearchNetworknames ("Hamachi")
$item1 = GUICtrlCreateListViewItem($networkadaptername&"|"&$networkname&"|"&$networkip, $listview)
_SearchNetworknames ("Tunngle")
$item2 = GUICtrlCreateListViewItem($networkadaptername&"|"&$networkname&"|"&$networkip, $listview)
; $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
EndFunc
[/autoit][autoit][/autoit][autoit]; externe anwendung und DOS abfangen
Func _StartTeknogodsDLL ()
$oldData = ""
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
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