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

Beiträge von kunigunde

  • Range Ping

    • kunigunde
    • 22. März 2016 um 10:39

    Ich wollte im lokalen Hausnetz nur schnell alle erreichbaren Teilnehmer angezeigt bekommen ohne ein extra Tool oder ein viel zu komplexes nutzen zu müssen.
    Ich könnte jeden anderen Scanner auch nutzen mit mehr Funktionen, jedoch benötige ich nur die Basics welche das Tool bietet. Außerdem war dies ein recht kleiner und rel. einfacher Start sich mal mit Autoit zu beschäftigen.
    Sicher ist das Script sehr simple gehalten, jedoch benötige ich keine weiteren Funktionen, da ich im lokalen Netz keine deine genannten Probleme habe.

    Und gerade weil das Script so simple ist, kann auch jeder gern dieses nutzen und erweitern für seine Ansprüche.

    Deine Anregungen sind interessant, jedoch schon wieder speziell für besondere Anforderungen.

    Da es ab und an missverstanden wird, hier der obligatorische Hinweis:
    Es handelt sich hierbei nicht um die Aussage das ich deine Anregungen nicht gut finde, sondern lediglich darum erklären zu wollen das dies in meinem Fall nicht benötigt wird.

  • Range Ping

    • kunigunde
    • 21. März 2016 um 14:35

    Hallo, danke dir,
    leider hat bei deiner Version die Fehlerbehandlung nicht mehr funktioniert, dies habe ich jetzt aber behoben. (ich hoffe das ich es richtig gemacht habe :)

    Jetzt ist es auch möglich "0" Adressen zu nutzen
    Somit alles aus dem Eingangs Thema korrigiert.
    Nochmals Danke für deine Unterstützung.

    (Code in Beitrag 1 immer aktuell)

  • Range Ping

    • kunigunde
    • 21. März 2016 um 11:18

    Danke erstmal für dein Feedback.
    ok,
    das $test = 100 / $insgesamt habe ich aus der while genommen
    dann die Bis input gespeichert, somit selbst bei Änderung während des Durchlaufes kein einfluß

    nur wie bekomme ich die while schleife aus der haupt schleife?
    und wie bekomme ich es hin das man auch während des Durchlaufes das Fenster schließen kann?

    (Code in Beitrag 1 immer aktuell)

  • Step7 No-Know-How

    • kunigunde
    • 21. März 2016 um 10:48

    habe hier noch eine Quell datei, welcher Stand das ist weiß ich nicht.

    C
    #NoTrayIcon
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_icon=No-Know-How.ico
    #AutoIt3Wrapper_outfile=Step7 No-Know-How.exe
    #AutoIt3Wrapper_Compression=4
    #AutoIt3Wrapper_Res_Comment=Step7 No-Know-How
    #AutoIt3Wrapper_Res_Description=Step7 No-Know-How
    #AutoIt3Wrapper_Res_Fileversion=2.1.0.0
    #AutoIt3Wrapper_Res_LegalCopyright=Christoph Fankhauser
    #AutoIt3Wrapper_Res_Language=3079
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    ; Projektbeginn 26.04.2008
    ; Version 1.0 09.05.2008 Erste brauchbare Version
    ; Version 1.1 13.05.2008 Symbolikordner variabel gemacht
    ; Version 1.2 15.05.2008 Ordneranzeige eingebunden, noch keine Auswahl
    ; Version 1.3 16.05.2008 Ordnerauswahl implementiert, Symbolik variabel gemacht (723)
    ; Version 1.4 26.05.2008 Filter eingebaut
    ; Version 1.5 31.01.2009 Bibliotheken öffnen eingebaut, Kleinigkeiten ausgebessert, auf "ExpandVarStrings" umgestellt
    ; Version 2.0 23.09.2009 GUI wird vor FileOpenDialog angezeigt
    ;Menü erstellt
    ;Es ist nun möglich mehrmals Projekte zu öffnen
    ;MsgBoxen überarbeitet
    ;Datenbausteine und Organisationsbausteine hinzugefügt
    ;Programm auf GUISetOnEvent-Modus umgestellt
    ;Baustein-Filter verbessert
    ;viele Kleinigkeiten
    ; Version 2.1 25.09.2009 Bausteine über Bausteinnummer 9999 wurden nicht angezeigt
    ;falsche Anzeige von Bausteinen im Sonderfall behoben
    ;
    ; Copyright Christoph Fankhauser aka funkey
    
    
    
    
    #include <Array.au3>
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3>
    #include <ButtonConstants.au3>
    #include <GuiListView.au3>
    #include <GuiListBox.au3>
    #include <GUIConstantsEx.au3>
    
    
    Opt("GUIOnEventMode", 1)
    Opt("ExpandVarStrings", 1)
    
    
    Global $AppName = "Step7 No-Know-How"
    Global $Version = "V2.1.0"
    Global $VersionDate = "Septemper 2009"
    Global $Coder = "Christoph Fankhauser"
    If $CMDLine[0] > 0 Then Exit _Help()
    Global $ProjectDir = RegRead("HKCU\Software\SIEMENS\STEP7\2.0\Applications\s7tgtopx\Settings", "ProjectDir")
    
    
    Global $Ordner, $FC[1][6], $FB[1][6], $OB[1][6], $DB[1][6], $Daten, $Size, $Datenbank, $AktPath
    
    
    Global $FrameHeight = _WinAPI_GetSystemMetrics(4) ; Caption Height
    Global $gui = GUICreate("$AppName$  $Version$", 800, 782 + $FrameHeight, -1, -1, 0x60000)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Ende")
    GUIRegisterMsg($WM_GETMINMAXINFO, "MY_WM_GETMINMAXINFO")
    GUISetHelp(@ScriptFullPath & " /?") ;funktioniert natürlich nur wenn das Skript kompiliert ist
    Global $statuslabel = GUICtrlCreateLabel("Kein Projekt ausgewählt", 0, 744, 800, 16, BitOR($SS_SUNKEN, $SS_CENTERIMAGE, $SS_CENTER))
    GUICtrlSetResizing(-1, 578)
    GUICtrlSetBkColor(-1, 0xA0C3EB)
    Global $menuPrj = GUICtrlCreateMenu("&Projekt")
    GUICtrlCreateMenuItem("Ö&ffnen", $menuPrj)
    GUICtrlSetOnEvent(-1, "_OpenProject")
    GUICtrlCreateMenuItem("Be&enden", $menuPrj)
    GUICtrlSetOnEvent(-1, "_Ende")
    Global $menuInfo = GUICtrlCreateMenu("&Info")
    GUICtrlCreateMenuItem("&Hilfe F1", $menuInfo)
    GUICtrlSetOnEvent(-1, "_Help")
    GUICtrlCreateMenuItem("&Info über $AppName$", $menuInfo)
    GUICtrlSetOnEvent(-1, "_About")
    
    
    Global $OrdnerList = GUICtrlCreateList("", 2, 0, 106, 150)
    GUICtrlSetResizing(-1, 802)
    GUICtrlSetOnEvent(-1, "_ChangePath")
    Global $hOrdnerList = GUICtrlGetHandle(-1)
    
    
    Global $listview = GUICtrlCreateListView("Baustein|Schutz|Symbolischer Name|Symbolkommentar|Author", 110, 0, 688, 740)
    GUICtrlSetResizing(-1, 102)
    Global $hLV = GUICtrlGetHandle(-1)
    Global $button = GUICtrlCreateButton("  Sperren@LF@Entsperren", 2, 195, 106, 40, BitOR($BS_MULTILINE, $BS_DEFPUSHBUTTON))
    GUICtrlSetResizing(-1, 802)
    GUICtrlSetOnEvent(-1, "_Sperren")
    
    
    GUICtrlCreateGroup('Baustein-Filter', 2, 250, 106, 140)
    GUICtrlSetResizing(-1, 802)
    Global $OB_on = GUICtrlCreateCheckbox('OB', 15, 270)
    Global $FB_on = GUICtrlCreateCheckbox('FB', 15, 290)
    Global $FC_on = GUICtrlCreateCheckbox('FC', 60, 290)
    Global $DB_on = GUICtrlCreateCheckbox('DB', 60, 270)
    Global $View_prot = GUICtrlCreateRadio('geschützte', 10, 340, 90)
    Global $View_unprot = GUICtrlCreateRadio('ungeschützte', 10, 360, 90)
    Global $View_all = GUICtrlCreateRadio('alle', 10, 320, 90)
    For $i = $OB_on To $View_all
    GUICtrlSetResizing($i, 802)
    GUICtrlSetState($i, $GUI_CHECKED)
    GUICtrlSetOnEvent($i, "_Filter")
    Next
    
    
    Global $warten = GUICtrlCreateLabel("Bitte warten!", 4, 160, 102, 30, 0x1)
    GUICtrlSetResizing($i, 802)
    GUICtrlSetFont(-1, 14)
    _Wait(True)
    GUICtrlSetState(-1, $GUI_HIDE)
    
    
    GUISetState()
    
    
    _OpenProject()
    
    
    While 1
    Sleep(10000)
    WEnd
    
    
    Func _OpenProject()
    Local $prj = FileOpenDialog("$AppName$ - Projekt auswählen", $ProjectDir, "Step7 Projekt oder Bibliothek (*.s7p; *.s7l)", 3, "", $gui)
    If $prj <> "" Then
    GUICtrlSetState($warten, $GUI_SHOW)
    GUICtrlSetData($statuslabel, "Projekt: " & _ReadPrjName($prj))
    _ReadProject($prj)
    Return 1
    Else
    Return 0
    EndIf
    EndFunc   ;==>_OpenProject
    
    
    Func _ReadPrjName($sPrj)
    Local $titel = StringTrimLeft(FileRead($sPrj, 29), 5)
    Local $test = StringInStr($titel, Chr(02))
    If $test > 0 Then $titel = StringLeft($titel, $test - 1)
    Return $titel
    EndFunc   ;==>_ReadPrjName
    
    
    Func _ReadProject($sPrj)
    Local $Index = 0
    $AktPath = ""
    Global $Size[1]
    $Ordner = _getPrj()
    GUICtrlSetData($OrdnerList, "")
    For $i = 0 To UBound($Ordner) - 1
    GUICtrlSetData($OrdnerList, $Ordner[$i])
    Next
    $Index = _ArrayMaxIndex($Size)
    If _GUICtrlListBox_SetCurSel($hOrdnerList, _ArrayMaxIndex($Size)) >= 0 Then
    _ChangePath()
    Else
    MsgBox(16, "Fehler", "Ein unerwarteter Fehler ist aufgetreten!")
    EndIf
    EndFunc   ;==>_ReadProject
    
    
    Func _AddBlocks($aBlocks, $sBlock)
    Local $Item
    For $k = 0 To UBound($aBlocks) - 1
    $Item = ""
    If $aBlocks[$k][2] = "0x33" Then
    $Schutz = "ja"
    ElseIf $aBlocks[$k][2] = "0x30" Then
    $Schutz = "nein"
    Else
    ContinueLoop
    EndIf
    If $aBlocks[$k][0] <> "" Or ($aBlocks[$k][0] = "0" And ($sBlock = 'FC' Or $sBlock = 'FB')) Then
    If BitAND(GUICtrlRead($View_all), $GUI_CHECKED) Then
    $Item = $sBlock & $aBlocks[$k][0] & "|" & $Schutz & "|" & $aBlocks[$k][4] & "|" & $aBlocks[$k][5] & "|" & $aBlocks[$k][3]
    ElseIf BitAND(GUICtrlRead($View_prot), $GUI_CHECKED) Then
    If $Schutz = 'ja' Then $Item = $sBlock & $aBlocks[$k][0] & "|" & $Schutz & "|" & $aBlocks[$k][4] & "|" & $aBlocks[$k][5] & "|" & $aBlocks[$k][3]
    Else
    If $Schutz = 'nein' Then $Item = $sBlock & $aBlocks[$k][0] & "|" & $Schutz & "|" & $aBlocks[$k][4] & "|" & $aBlocks[$k][5] & "|" & $aBlocks[$k][3]
    EndIf
    EndIf
    If $Item <> "" Then GUICtrlCreateListViewItem($Item, $listview)
    Next
    EndFunc   ;==>_AddBlocks
    
    
    Func _Sperren()
    Local $Adresse, $Zeile, $pressed = GUICtrlRead($listview), $text = GUICtrlRead($pressed)
    If $text = '0' Then
    MsgBox(64, "Auswählen", "Bitte wählen Sie einen Baustein aus")
    Return 0
    EndIf
    $Zeile = StringSplit($text, "|", 2)
    Switch StringLeft($Zeile[0], 2)
    Case "OB"
    For $i = 0 To UBound($OB) - 1
    If $OB[$i][0] = StringTrimLeft($Zeile[0], 2) Then
    $Adresse = $OB[$i][1]
    ExitLoop
    EndIf
    Next
    Case "FB"
    For $i = 0 To UBound($FB) - 1
    If $FB[$i][0] = StringTrimLeft($Zeile[0], 2) Then
    $Adresse = $FB[$i][1]
    ExitLoop
    EndIf
    Next
    Case "FC"
    For $i = 0 To UBound($FC) - 1
    If $FC[$i][0] = StringTrimLeft($Zeile[0], 2) Then
    $Adresse = $FC[$i][1]
    ExitLoop
    EndIf
    Next
    Case "DB"
    For $i = 0 To UBound($DB) - 1
    If $DB[$i][0] = StringTrimLeft($Zeile[0], 2) Then
    $Adresse = $DB[$i][1]
    ExitLoop
    EndIf
    Next
    Case Else
    MsgBox(16, "Fehler", "Ein unerwarteter Fehler ist aufgetreten!")
    Return 1
    EndSwitch
    $Date_Teil1 = StringLeft($Daten, $Adresse + 86)
    $Date_Teil2 = StringTrimLeft($Daten, $Adresse + 87)
    If StringInStr($text, "|nein|") Then
    $Bindeglied = Chr(51)
    GUICtrlSetData($pressed, "|ja")
    If StringLeft($Zeile[0], 2) = "FC" Then
    $FC[$i][2] = '0x33'
    ElseIf StringLeft($Zeile[0], 2) = "FB" Then
    $FB[$i][2] = '0x33'
    ElseIf StringLeft($Zeile[0], 2) = "DB" Then
    $DB[$i][2] = '0x33'
    ElseIf StringLeft($Zeile[0], 2) = "OB" Then
    $OB[$i][2] = '0x33'
    EndIf
    ElseIf StringInStr($text, "|ja|") Then
    $Bindeglied = Chr(48)
    GUICtrlSetData($pressed, "|nein")
    If StringLeft($Zeile[0], 2) = "FC" Then
    $FC[$i][2] = '0x30'
    ElseIf StringLeft($Zeile[0], 2) = "FB" Then
    $FB[$i][2] = '0x30'
    ElseIf StringLeft($Zeile[0], 2) = "DB" Then
    $DB[$i][2] = '0x30'
    ElseIf StringLeft($Zeile[0], 2) = "OB" Then
    $OB[$i][2] = '0x30'
    EndIf
    Else
    MsgBox(16, "Fehler", "Ein unerwarteter Fehler ist aufgetreten!")
    Return 1
    EndIf
    If IsDeclared("Bindeglied") Then
    $NewDaten = $Date_Teil1 & $Bindeglied & $Date_Teil2
    $Open = FileOpen($Datenbank, 18)
    FileWrite($Open, $NewDaten)
    FileClose($Open)
    EndIf
    $Open = FileOpen($Datenbank, 4)
    $Daten = FileRead($Datenbank, FileGetSize($Datenbank))
    FileClose($Open)
    EndFunc   ;==>_Sperren
    
    
    Func _Filter()
    _Wait(True)
    _GUICtrlListView_DeleteAllItems($hLV)
    If BitAND(GUICtrlRead($OB_on), $GUI_CHECKED) Then _AddBlocks($OB, "OB")
    If BitAND(GUICtrlRead($FB_on), $GUI_CHECKED) Then _AddBlocks($FB, "FB")
    If BitAND(GUICtrlRead($FC_on), $GUI_CHECKED) Then _AddBlocks($FC, "FC")
    If BitAND(GUICtrlRead($DB_on), $GUI_CHECKED) Then _AddBlocks($DB, "DB")
    _GUICtrlListView_SetColumnWidth($hLV, 2, $LVSCW_AUTOSIZE)
    _GUICtrlListView_SetColumnWidth($hLV, 3, $LVSCW_AUTOSIZE)
    _Wait(False)
    EndFunc   ;==>_Filter
    
    
    Func _getPrj()
    Local $aOrdner[1]
    Local $search = FileFindFirstFile(@WorkingDir & "/ombstx/offline/000*")
    Local $m = 0
    While 1
    $aOrdner[$m] = FileFindNextFile($search)
    If @error Then ExitLoop
    $Size[$m] = FileGetSize(@WorkingDir & "/ombstx/offline/" & $aOrdner[$m] & "/SUBBLK.DBF")
    If $Size[$m] > 1000 Then
    ReDim $aOrdner[UBound($aOrdner) + 1]
    ReDim $Size[UBound($Size) + 1]
    $m += 1
    EndIf
    WEnd
    If UBound($aOrdner) > 1 Then ReDim $aOrdner[UBound($aOrdner) - 1]
    If UBound($Size) > 1 Then ReDim $Size[UBound($Size) - 1]
    Return $aOrdner
    EndFunc   ;==>_getPrj
    
    
    Func _FileGetSource($sFile, $sDesc)
    If $sFile = "" And $sDesc = "Symbolik-Datei" Then Return MsgBox(64, 'Info', 'Die Symbolik-Datei ist zu groß und wird aus Geschwindigkeitsgründen nicht geladen!', 3)
    Local $sResult, $hFile = FileOpen($sFile, 0)
    If $hFile = -1 Then
    MsgBox(16, "Fehler", "Fehler beim Öffnen der $sDesc$")
    Return ""
    EndIf
    $sResult = FileRead($hFile)
    FileClose($hFile)
    Return $sResult
    EndFunc   ;==>_FileGetSource
    
    
    Func _getBlockInfos($sDaten, $sSymbolik, $sType, $sName)
    Local $aBlock[1][6], $msg = "", $Nr = ""
    Local $i = 0
    While 1
    $iAdresse = StringInStr($sDaten, $sType, 1, $i + 1)
    If $iAdresse <> 0 Then
    $Nr = StringLeft(StringTrimLeft($sDaten, $iAdresse + 4), 5)
    $aBlock[UBound($aBlock) - 1][0] = Int($Nr) ;Bausteinnummer
    $aBlock[UBound($aBlock) - 1][1] = $iAdresse ;Adresse
    $aBlock[UBound($aBlock) - 1][2] = Binary(StringLeft(StringTrimLeft($sDaten, $iAdresse + 86), 1)) ;Schutz
    $aBlock[UBound($aBlock) - 1][3] = StringLeft(StringTrimLeft($sDaten, $iAdresse + 87), 8) ;Author
    If StringLeft(StringTrimLeft($sDaten, $iAdresse - 18), 1) <> "*" And ($aBlock[UBound($aBlock) - 1][2] = "0x30" Or $aBlock[UBound($aBlock) - 1][2] = "0x33") And StringIsInt($Nr) Then
    $msg = ""
    For $k = 7 To StringLen($aBlock[UBound($aBlock) - 1][0]) + 1 Step -1
    $msg &= " "
    Next
    $Sym_Adr = StringInStr($sSymbolik, $sName & $msg & $aBlock[UBound($aBlock) - 1][0] & "   " & $sName & $msg & $aBlock[UBound($aBlock) - 1][0])
    If $Sym_Adr <> 0 Then
    $aBlock[UBound($aBlock) - 1][4] = StringLeft(StringTrimLeft($sSymbolik, $Sym_Adr - 25), 24) ;Name
    $aBlock[UBound($aBlock) - 1][5] = StringLeft(StringTrimLeft($sSymbolik, $Sym_Adr + 157), 62) ;Symbolik
    Else
    $aBlock[UBound($aBlock) - 1][4] = "" ;Name
    $aBlock[UBound($aBlock) - 1][5] = "" ;Symbolik
    EndIf
    
    
    ReDim $aBlock[UBound($aBlock) + 1][6]
    EndIf
    $i += 1
    Else
    If UBound($aBlock) > 1 Then
    ReDim $aBlock[UBound($aBlock) - 1][6]
    Else
    $aBlock[UBound($aBlock) - 1][0] = ""
    EndIf
    ExitLoop
    EndIf
    WEnd
    Return $aBlock
    EndFunc   ;==>_getBlockInfos
    
    
    Func _ChangePath()
    If $AktPath = GUICtrlRead($OrdnerList) Then Return
    _Wait(True)
    _GUICtrlListView_DeleteAllItems($hLV)
    $AktPath = GUICtrlRead($OrdnerList)
    $Datenbank = @WorkingDir & "\ombstx\offline\" & $AktPath & "\SUBBLK.DBF"
    $Daten = _FileGetSource($Datenbank, "Datenbank")
    $Symboliken = @WorkingDir & "\YDBs\SYMLISTS.DBF"
    $Symauswahl = _FileGetSource($Symboliken, "Symbolik-Auswahldatei")
    $Symordner = StringLeft(StringTrimLeft($Symauswahl, 723 * _GUICtrlListBox_GetCurSel($hOrdnerList) + 391), 5) + 0
    $Symdatei = @WorkingDir & "\YDBs\" & $Symordner & "\SYMLIST.DBF"
    If FileGetSize($Symdatei) > 1000000 Then $Symdatei = "" ;--> keine Symbolik bei großen Projekten ;)
    $Symbolik = _FileGetSource($Symdatei, "Symbolik-Datei")
    
    
    $OB = _getBlockInfos($Daten, $Symbolik, "00008", "OB")
    _ArraySort($OB)
    $DB = _getBlockInfos($Daten, $Symbolik, "00010", "DB")
    _ArraySort($DB)
    $FC = _getBlockInfos($Daten, $Symbolik, "00012", "FC")
    _ArraySort($FC)
    $FB = _getBlockInfos($Daten, $Symbolik, "00014", "FB")
    ;~  _ArraySort($FB)
    
    
    If BitAND(GUICtrlRead($OB_on), $GUI_CHECKED) Then _AddBlocks($OB, "OB")
    If BitAND(GUICtrlRead($FB_on), $GUI_CHECKED) Then _AddBlocks($FB, "FB")
    If BitAND(GUICtrlRead($FC_on), $GUI_CHECKED) Then _AddBlocks($FC, "FC")
    If BitAND(GUICtrlRead($DB_on), $GUI_CHECKED) Then _AddBlocks($DB, "DB")
    
    
    _GUICtrlListView_SetColumnWidth($hLV, 2, $LVSCW_AUTOSIZE)
    _GUICtrlListView_SetColumnWidth($hLV, 3, $LVSCW_AUTOSIZE)
    _Wait(False)
    EndFunc   ;==>_ChangePath
    
    
    Func _Wait($iWait)
    If $iWait Then
    GUICtrlSetState($button, $GUI_DISABLE)
    GUICtrlSetBkColor($statuslabel, 0xA0C3EB)
    GUICtrlSetState($warten, $GUI_SHOW)
    GUICtrlSetState($OrdnerList, $GUI_DISABLE)
    For $i = $OB_on To $View_all
    GUICtrlSetState($i, $GUI_DISABLE)
    Next
    Else
    GUICtrlSetState($button, $GUI_ENABLE)
    GUICtrlSetBkColor($statuslabel, 0x00FFFF)
    GUICtrlSetState($warten, $GUI_HIDE)
    GUICtrlSetState($OrdnerList, $GUI_ENABLE)
    For $i = $OB_on To $View_all
    GUICtrlSetState($i, $GUI_ENABLE)
    Next
    EndIf
    EndFunc   ;==>_Wait
    
    
    Func MY_WM_GETMINMAXINFO($hWnd, $msg, $wParam, $lParam)
    $minmaxinfo = DllStructCreate("int;int;int;int;int;int;int;int;int;int", $lParam)
    DllStructSetData($minmaxinfo, 7, 507) ; min X
    DllStructSetData($minmaxinfo, 8, 437 + $FrameHeight) ; min Y
    DllStructSetData($minmaxinfo, 9, 900) ; max X
    DllStructSetData($minmaxinfo, 10, 900) ; max Y
    Return 0
    EndFunc   ;==>MY_WM_GETMINMAXINFO
    
    
    Func _About()
    MsgBox(64, "$AppName$  $Version$    ©$Coder$    $VersionDate$", "$AppName$ ist Freeware.@CRLF@" & _
    "Das Programm darf frei kopiert werden. Es darf jedoch nicht ohne meine Genehmigung verändert werden.@CRLF@" & _
    "Ich übernehme im Falle von Datenverlust oder anderen Schäden keine Haftung.@CRLF@@CRLF@" & _
    "Kontakt: Christoph Fankhauser@CRLF@ funkey80 [at] hotmail [dot] com@CRLF@ $VersionDate$")
    EndFunc   ;==>_About
    
    
    Func _Help()
    MsgBox(64, "$AppName$  $Version$    ©$Coder$    $VersionDate$", "Mit diesem Programm " & _
    "kann der Know-How-Schutz von Bausteinen in Step7-Projekten gesetzt und rückgesetzt werden.@CRLF@" & _
    "Unterstützte Bausteine sind Organisationsbausteine (OB), Funktionsbausteine (FB), Funktionen (FC) und Datenbausteine (DB) .@CRLF@" & _
    "Obwohl das Programm sorgfältig getestet ist, kann ich nicht ausschließen, dass es zu Fehlfunktionen kommen kann.@CRLF@" & _
    "Machen Sie deshalb immer eine Sicherheitskopie Ihres Step7-Projektes bevor Sie es mit diesem Programm bearbeiten.@CRLF@" & _
    "Wenn es Probleme mit z.B. der Anzeige der Symbolik gibt, kann eine Reorganisation des Projektes dies im Normalfall beheben.@CRLF@" & _
    "Ich übernehme im Falle von Datenverlust oder anderen Schäden keine Haftung.@CRLF@@CRLF@" & _
    "Kontakt: Christoph Fankhauser@CRLF@ funkey80 [at] hotmail [dot] com@CRLF@ $VersionDate$")
    EndFunc   ;==>_Help
    
    
    Func _Ende()
    Exit
    EndFunc   ;==>_Ende
    Alles anzeigen
  • Range Ping

    • kunigunde
    • 21. März 2016 um 10:01

    mein erstes Autoit Script, seid also nicht so streng mit mir ;)

    damit kann man einen Bereich scannen.
    Entweder Ip manuell eingeben, oder per Dropdown Adapter auswählen.


    C
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=C:\Program Files (x86)\AutoIt3\Icons\MyAutoIt3_Green.ico
    #AutoIt3Wrapper_Res_Language=1031
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    ;----------------------------------------------------------------------------------------------------
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <GuiIPAddress.au3>
    #include <GuiStatusBar.au3>
    #include <ProgressConstants.au3>
    #include <ComboConstants.au3>
    ;----------------------------------------------------------------------------------------------------
    $Fenstertitel = "made by www.Ib-RuP.de"
    $default_bis = 255
    ;----------------------------------------------------------------------------------------------------
    Local $setIParray[4] = [0,0,0,0]
    Local $aParts[2] = [100, -1]
    Local $sComboRead = ""
    ;GUI zusammenbasteln
    $GUI = GUICreate($Fenstertitel, 260, 800)
    $Combo1 = GUICtrlCreateCombo("", 60, 5, 200, 25, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL))
    ; Fenster 1. Zeile
    GUICtrlCreateLabel("Ping-von:", 5, 35, 50, 20)
    $IPAddress1 = _GUICtrlIpAddress_Create($GUI, 60, 35, 150, 20)
    _GUICtrlIpAddress_SetArray($IPAddress1, $setIParray)
    ; Fenster 2. Zeile
    GUICtrlCreateLabel("Ping-bis", 5, 60, 50, 20)
    $IP_input_bis = GUICtrlCreateInput($default_bis, 180, 60, 25, 20, BitOR($ES_CENTER, $ES_NUMBER))
    ; Fenster 3. Zeile
    GUICtrlCreateLabel("Timeout:", 5, 85, 50, 20)
    $input_Timeout = GUICtrlCreateInput("1000", 60, 85, 30, 20, BitOR($ES_CENTER, $ES_NUMBER))
    ; Fenster Button
    $Hidden_Text = GUICtrlCreateLabel("Scan läuft. Bitte Warten", 5, 110, 250, 40, $ES_CENTER)
    GUICtrlSetState($Hidden_Text, $GUI_HIDE)
    $Button_start = GUICtrlCreateButton("Start Ping", 5, 110, 250, 40)
    ; Fenster ListView
    $ListView = GUICtrlCreateListView("Adresse|Antwortzeit [MSec.]", 5, 155, 250, 620)
    $ListView_Handle = GUICtrlGetHandle($ListView)
    _GUICtrlListView_SetColumnWidth($ListView_Handle, 0, 100)
    _GUICtrlListView_SetColumnWidth($ListView_Handle, 1, 100)
    $ListView_Handle = GUICtrlGetHandle($ListView)
    ;Statusbar
    $StatusBar = _GUICtrlStatusBar_Create($GUI, $aParts)
    $progressbar = GUICtrlCreateProgress(0, 0, -1, -1, $PBS_SMOOTH)
    _GUICtrlStatusBar_EmbedControl($StatusBar, 1, GUICtrlGetHandle($progressbar))
    GUISetState(@SW_SHOW, $GUI)
    ;##########
    ;Netzwerkadapter auslesen und Combo Box zusammenbasteln
    $tagIP_ADDRESS_STRING = "char String[16];"
    $tagIP_MASK_STRING = $tagIP_ADDRESS_STRING
    $tagIP_ADDR_STRING = "ptr Next;" & $tagIP_ADDRESS_STRING & $tagIP_MASK_STRING & "DWORD Context;"
    $tagIP_ADAPTER_INFO = "long_ptr Next; DWORD ComboIndex; char AdapterName[260];char Description[132]; UINT AddressLength; BYTE Address[8]; dword Index; UINT Type;" & _
    		" UINT DhcpEnabled; ptr CurrentIpAddress; ptr NextIpAddressList; char IpAddressListADDRESS[16]; char IpAddressListMASK[16]; DWORD IpAddressListContext; " & _
    		"ptr GatewayListList; char GatewayListADDRESS[16]; char GatewayListMASK[16]; DWORD GatewayListContext; " & _
    		"ptr DhcpServerList; char DhcpServerADDRESS[16]; char DhcpServerMASK[16]; DWORD DhcpServerContext; " & _
    		"int HaveWins; " & _
    		"ptr PrimaryWinsServerList; char PrimaryWinsServerADDRESS[16]; char PrimaryWinsServerMASK[16]; DWORD PrimaryWinsServerContext; " & _
    		"ptr SecondaryWinsServerList; char SecondaryWinsServerADDRESS[16]; char SecondaryWinsServerMASK[16]; DWORD SecondaryWinsServerContext; " & _
    		"DWORD LeaseObtained; DWORD LeaseExpires;"
    $dll = DllOpen("Iphlpapi.dll")
    $ret = DllCall($dll, "dword", "GetAdaptersInfo", "ptr", 0, "dword*", 0)
    $adapterBuffer = DllStructCreate("byte[" & $ret[2] & "]")
    $adapterBuffer_pointer = DllStructGetPtr($adapterBuffer)
    $return = DllCall($dll, "dword", "GetAdaptersInfo", "ptr", $adapterBuffer_pointer, "dword*", $ret[2])
    $adapter = DllStructCreate($tagIP_ADAPTER_INFO, $adapterBuffer_pointer)
    $combo_string = ""
    Do
    	If _Get($adapter, "IpAddressListADDRESS") = "0.0.0.0" Then
    		;do nothing
    	Else
    		$combo_string = $combo_string & "|" & _Get($adapter, "IpAddressListADDRESS")
    		ConsoleWrite("Description: " & _Get($adapter, "Description") & @CRLF)
    		ConsoleWrite("IpAddressListADDRESS: " & _Get($adapter, "IpAddressListADDRESS") & @CRLF)
    		ConsoleWrite("-------------------------------------" & @CRLF)
    	EndIf
    	$ptr = DllStructGetData($adapter, "Next")
    	$adapter = DllStructCreate($tagIP_ADAPTER_INFO, $ptr)
    Until @error
    GUICtrlSetData($Combo1, $combo_string)
    $adapterBuffer = ""
    $adapterBuffer_pointer = ""
    DllClose($dll)
    Func _Get(ByRef $adapter, $ID)
    	Return DllStructGetData($adapter, $ID)
    EndFunc   ;==>_Get
    ;ENDE Netzwerkadapter auslesen und Combo Box zusammenbasteln
    ;#######
    ;----------------------------------------------------------------------------------------------------
    
    
    Global $IPSearching = False, $IPStart, $IPEnd, $IPInsgesamt, $IPFertig, $IPOnline, $IPPercent, $IPPercentPart
    
    
    While True
    	Switch GUIGetMsg()
    		Case $Combo1
    			$sComboRead = GUICtrlRead($Combo1)
    			$IP_value = StringSplit($sComboRead, ".")
    			Local $setIParray_1[4] = [$IP_value[1], $IP_value[2], $IP_value[3], 1]
    			_GUICtrlIpAddress_SetArray($IPAddress1, $setIParray_1)
    		Case $Button_start
    			_searchIps()
    		Case $GUI_EVENT_CLOSE
    			Exit
    	EndSwitch
    	If $IPSearching Then
    		_pingIPs()
    	EndIf
    WEnd
    
    
    
    
    ;error: 1 -> Ein Feld ist leer
    ;       2 -> Wert darf nur zwischen 1 und 255 liegen
    ;       3 -> Start größer als Ende
    Func _searchIps()
    	$IPStart = _GUICtrlIpAddress_GetArray($IPAddress1)
    	$IPEnd = GUICtrlRead($IP_input_bis)
    	;#####Fehlerbehandlung       ####################
    	;alle Felder voll?
    	If ($IPEnd = "" Or GUICtrlRead($input_Timeout) = "") Then
    		SetError(1)
    		;IP zwischen 1-255?
    	ElseIf ($IPStart[0] < 0 Or $IPStart[0] > 255 Or $IPStart[1] < 0 Or $IPStart[1] > 255 Or $IPStart[2] < 0 Or $IPStart[2] > 255 Or $IPStart[3] < 1 Or $IPStart[3] > 255 Or $IPEnd < 1 Or $IPEnd > 255) Then
    		SetError(2)
    		;Ende ist größer Anfang?
    	ElseIf ($IPStart[3] > $IPEnd) Then
    		SetError(3)
    	EndIf
    	;#####Ende Fehlerbehandlung       ################
    
    
    	If @error Then
    		Switch @error
    			Case 1
    				MsgBox(0 + 16 + 0 + 0 + 262144, "Fehler", "bis oder Timeout keinen Wert eingetragen!")
    			Case 2
    				MsgBox(0 + 16 + 0 + 0 + 262144, "Fehler", "xxx.xxx.xxx.ZZZ" & @crlf & "xxx nur von 0-255 " & @crlf & "ZZZ nur von 1-255 " )
    			Case 3
    				MsgBox(0 + 16 + 0 + 0 + 262144, "Fehler", "bis muß größer als von sein")
    		EndSwitch
    	Else
    		;Button ausblenden
    		GUICtrlSetState($Button_start, $GUI_HIDE)
    		;Text einblenden
    		GUICtrlSetState($Hidden_Text, $GUI_SHOW)
    		;ListView leeren
    		_GUICtrlListView_DeleteAllItems($ListView_Handle)
    		;INITS
    		$IPInsgesamt = $IPEnd - $IPStart[3]
    		$IPFertig = 0
    		$IPOnline = 0
    		$IPPercentPart = 100 / $IPInsgesamt
    		$IPSearching = True
    	EndIf
    EndFunc   ;==>_searchIps
    
    
    Func _pingIPs()
    	If $IPStart[3] > $IPEnd Then
    		$IPSearching = False
    		;#### alles fertig
    		Beep(1000, 500)
    		;Text ausblenden
    		GUICtrlSetState($Hidden_Text, $GUI_HIDE)
    		;Button wieder einblenden
    		GUICtrlSetState($Button_start, $GUI_SHOW)
    		;Progressbar zurücksetzen
    		GUICtrlSetData($progressbar, 0)
    		;Anzahl der gefundenen Teilnehmer ausgeben
    		_GUICtrlStatusBar_SetText($StatusBar, $IPOnline & " Online")
    		ConsoleWrite("-------------------------------------" & @CRLF)
    		ConsoleWrite($IPOnline & " Online" & @CRLF)
    		ConsoleWrite("-------------------------------------" & @CRLF)
    		ConsoleWrite("-------------------------------------" & @CRLF)
    	Else
    		$Ping_IP = Ping($IPStart[0] & "." & $IPStart[1] & "." & $IPStart[2] & "." & $IPStart[3], $input_Timeout)
    		;in Listview eintragen
    		If @error = 0 Then
    			GUICtrlCreateListViewItem($IPStart[0] & "." & $IPStart[1] & "." & $IPStart[2] & "." & $IPStart[3] & "|" & $Ping_IP, $ListView)
    			ConsoleWrite($IPStart[0] & "." & $IPStart[1] & "." & $IPStart[2] & "." & $IPStart[3] & @CRLF)
    			$IPOnline += 1
    			Beep(1000, 100)
    		EndIf
    		_GUICtrlStatusBar_SetText($StatusBar, $IPFertig & " von " & $IPInsgesamt & " fertig")
    		;Prozentanzeige aktualisieren
    		If $IPPercent <> Int($IPFertig * $IPPercentPart) Then
    			$IPPercent = Int($IPFertig * $IPPercentPart)
    			GUICtrlSetData($progressbar, $IPPercent)
    		EndIf
    		$IPStart[3] += 1
    		$IPFertig += 1
    	EndIf
    EndFunc   ;==>_pingIPs
    Alles anzeigen

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™