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

Beiträge von BugFix

  • Laufwerksbuchstaben ändern

    • BugFix
    • 31. März 2010 um 15:39

    Was hast du für ein Betriebssystem? Bei XP klappt es problemlos.
    Bei Vista und 7 weiß ich nicht.
    Durch das Erscheinen der Sicherheitsabfrage geht natürlich der Rest der Befehle verloren und somit passiert nix. Mußt also dein OS dazu bewegen dich nicht zu fragen, wenn du auf der Console Befehle verarbeiten willst.

  • IP-Scanner Algorithmus

    • BugFix
    • 31. März 2010 um 15:24

    Hast recht, das war nicht optimal - naja, da war ich noch jung und ungeduldig :D.

    Hier eine überarbeitete und verbesserte Version.

    Spoiler anzeigen
    [autoit]

    ;-------------------------------------------------------------------------------------------------
    ; Function _GenerateIPsInRange($IPstart, $IPend, $iRetType=0, $sDelim=Default, $fBroadcast=False)
    ; Description Erstellt alle möglichen IP's zwischen $IPstart und $IPend
    ; Parameter $IPstart erste IP im Bereich
    ; $IPend letzte IP im Bereich
    ; $iRetType Return-Type 0-Array (Standard), 1-String, trennzeichenbasiert
    ; $sDelim Trennzeichen bei Stringausgabe, Default= Zeichen von Opt("GuiDataSeparatorChar")
    ; Return Succes Array 1D (Anzahl in $a[0]) oder String mit allen erstellten IP's
    ; Failure 0 und set @error 1 : übergebene IP nicht korrekt
    ; Author BugFix ([email='bugfix@autoit.de'][/email])
    ;----------------------------------------------------------------------------------------------------------------------
    Func _GenerateIPsInRange($IPstart, $IPend, $iRetType=0, $sDelim=Default, $fBroadcast=False)
    If IsKeyword($sDelim) Then $sDelim = Opt("GuiDataSeparatorChar")
    Local $pattern = '(\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.'& _
    '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b)'
    If ( Not StringRegExp($IPstart, $pattern, 0) Or _
    Not StringRegExp($IPend, $pattern, 0) ) Then
    SetError(1)
    Return 0
    EndIf
    Local $var = StringSplit($IPstart, '.')
    Local $o1 = $var[1], $o2 = $var[2], $o3 = $var[3], $o4 = $var[4]
    $var = StringSplit($IPend, '.')
    Local $e1 = $var[1], $e2 = $var[2], $e3 = $var[3], $e4 = $var[4]
    Local $sOut = '', $start = 1, $end = 255
    If $fBroadcast Then
    $start = 0
    $end = 256
    EndIf
    While $o1 <= $e1
    While ($o2 <= $e2) Or ($o1 < $e1)
    If $o2 = $end Then
    $o1 += 1
    $o2 = $start
    EndIf
    While ($o3 <= $e3) Or ($o2 < $e2) Or ($o1 < $e1)
    If $o3 = $end Then
    $o2 += 1
    $o3 = $start
    EndIf
    While True
    $sOut &= $o1 &'.'& $o2 &'.'& $o3 &'.'& $o4 & $sDelim
    If ($o1 = $e1) And ($o2 = $e2) And ($o3 = $e3) And ($o4 = $e4) Then
    If $iRetType Then
    Return $sOut
    Else
    Return StringSplit(StringTrimRight($sOut, StringLen($sDelim)), $sDelim, 1)
    EndIf
    EndIf
    $o4 += 1
    If $o4 = $end Then
    $o3 += 1
    $o4 = $start
    EndIf
    WEnd
    WEnd
    WEnd
    WEnd
    EndFunc ;==>_GenerateIPsInRange

    [/autoit]

    Edit:
    - Broadcastadressen optional (Default ohne)
    - Rückgabearray enthält in $a[0] die Anzahl der Elemente

    Edit2:
    noch einen Bug gefixed

    Dateien

    _GenerateIPsInRange.au3 2,4 kB – 431 Downloads
  • Laufwerksbuchstaben ändern

    • BugFix
    • 31. März 2010 um 13:52

    Es gibt auch einen anderen Weg zur Laufwerksumbenennung: Diskpart
    Hier ein Bsp. um einem USB-Stick einen anderen Lw-Buchstaben zuzuweisen. Ist sofort wirksam.
    Es gibt eine Fehlermeldung (Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.) beim Aushängen und beim Neueinhängen, die aber ignoriert werden kann.

    Spoiler anzeigen
    [autoit]

    #include <Constants.au3>
    Local $Lw_old = 'G', $Lw_new = 'F'
    Local $foo = Run("cmd", @SystemDir, @SW_HIDE, $STDIN_CHILD + $STDOUT_CHILD)
    Local $sCMD = 'diskpart' & @CRLF & _
    "select Volume " & $Lw_old & @CRLF & _
    "remove" & @CRLF & _
    "assign letter=" & $Lw_new & @CRLF & _
    "exit" & @CRLF
    StdinWrite($foo, $sCMD)
    StdinWrite($foo)
    ConsoleWrite('Fertig' & @CRLF)

    [/autoit]

    Edit: Ging noch kürzer :)

  • Suchen im 2D Array

    • BugFix
    • 31. März 2010 um 09:21

    Wie wärs denn mit: _ArraySearch()

    Oder such doch direkt in deinem Excel:

    Spoiler anzeigen
    [autoit]

    Local $sFilePath = 'Pfad.xls'
    Local $sSuchbegriff = 'Suche'

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

    Local $oExcel = ObjCreate("Excel.Application")
    $oExcel.Visible = 0
    Local $oBook = $oExcel.Workbooks.Open($sFilePath)
    Local $oSheet = $oBook.Sheets(1)

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

    Local $Zelle, $Address = 0
    $Zelle = $oSheet.UsedRange.Find($sSuchbegriff)
    If $Zelle <> '' Then $Address = $Zelle.Address

    [/autoit]
  • Process Abschießen unmöglich machen

    • BugFix
    • 31. März 2010 um 08:55

    Laß dein Programm als Dienst laufen. Wenn du es als Systemdienst einstufst, kann es auch nicht in der Dienstverwaltung beendet werden (Aber läuft dann immer! - Soll das gewollt sein?). Für "Eigenes Skript als Dienst" einfach die SuFu nutzen. Hier oder im EN-Forum wirst du fündig.

  • Mouse Icon

    • BugFix
    • 31. März 2010 um 00:04

    _WinAPI_SetCursor() sollte dich zum Ziel bringen. Mit _WinAPI_LoadImage() kannst du das Bild für den Cursor laden.

  • Mal wieder ListView Probleme

    • BugFix
    • 30. März 2010 um 23:51
    Zitat von MrB

    Gibt mir immer den Inhalt der ersten Spalte aus. Wie kann ich das auf die dritte Spalte ändern

    Das beachtet?

    Zitat von BugFix

    Ganz wichtig: Unbedingt Ex-Style "$LVS_EX_FULLROWSELECT" für das Listview, sonst erhältst du keine Item-Notifikation beim Klick auf ein SubItem!

  • String Fragen

    • BugFix
    • 30. März 2010 um 23:26
    [autoit]

    $str = "11 2222 abcd efgh 4 6 dada"
    $str = StringRegExpReplace($str, '\s+', '/')
    ConsoleWrite('Ersetzungen: ' & @extended & @CRLF)
    ConsoleWrite($str & @CRLF)

    [/autoit]
  • memory enträge am Beispiel Teamspeak2

    • BugFix
    • 30. März 2010 um 22:10
    Zitat von chrisbyRRC

    Da ist es sogar schon verboten ne andere AutoIt Seite zu nennen.


    Ja, und was stört dich dadran? Wir haben nunmal Regeln. Und diese sind nicht grundlos erstellt worden.
    Dein Wunsch zu Helfen in allen Ehren, aber auch das im Rahmen unserer Regeln. ;)

  • String Fragen

    • BugFix
    • 30. März 2010 um 21:00

    @black_scorpi: Dein Bsp. ist zwar simpel aber berücksicht auch nur einen ganz spezifischen Fall. Der benannte String war nur ein Bsp. Es ging um allgemeingültige Lösungen. Das geht mit deiner Variante nicht.

  • DllCall will nicht so richtig

    • BugFix
    • 30. März 2010 um 20:48

    Ich werds mal testen.

    Edit.
    Ah, falscher Returntyp im DllCall. Nicht 'char', sondern 'long' oder 'int'.

    [autoit]

    $aReturn = DllCall("User32", 'long', "LoadKeyboardLayout", "ptr", DllStructGetPtr($Buffer_Struct), "uint", $KLF_ACTIVATE)

    [/autoit]
  • String Fragen

    • BugFix
    • 30. März 2010 um 20:45

    Mach aus deinem ""/D" ein "\D". :P

  • DllCall will nicht so richtig

    • BugFix
    • 30. März 2010 um 20:37

    Ich glaub, die Layoutkennung muß mit Nullstring abgeschlossen werden und natürlich verlangt der letzte Parameter auch ein uint.:

    [autoit]

    Func _LoadKeyboardLayout($HKL)
    $KLF_ACTIVATE = 0x1
    $Buffer_Struct = DllStructCreate("char[10];")
    DllStructSetData($Buffer_Struct, 1, $HKL & Chr(0))
    $pBuffer_Struct = DllStructGetPtr($Buffer_Struct)
    $aReturn = DllCall("User32", "char", "LoadKeyboardLayout", "ptr", $pBuffer_Struct, "uint", $KLF_ACTIVATE)
    Return SetError($aReturn, 0, $aReturn)
    EndFunc

    [/autoit]
  • Ini mit richtiger Codierung öffnen

    • BugFix
    • 30. März 2010 um 20:09

    Umformatieren kannst du mit _WinAPI_WideCharToMultiByte(), geht aber sich auch nicht kürzer als die aufgezeigte Lösung.

  • Problem mit _ExcelWriteArray

    • BugFix
    • 30. März 2010 um 13:25

    Schnitzel, du hast völlig recht. Das ist wieder ein typisches Bsp., wie man eine UDF nicht schreiben sollte. An eine Tabelle (2D-Array) kann nur ein 1D-Array übergeben werden. Oh, wie sinnvoll... :S
    Diese Funktion ermöglicht also nur Zeilen oder Spalten Inhalte in einem Array zu übergeben. Sicher ist das auch nützlich, aber geht weit vorbei an einer sinnvollen, komplexen Funktion. :thumbdown:

    Zitat

    Write an array to a row or column on the active worksheet of the specified Excel object.

  • memory enträge am Beispiel Teamspeak2

    • BugFix
    • 30. März 2010 um 12:18
    Zitat von Darter

    sonst einer ne gute andresse wo ich nachlesen kann?

    Wenn du sowieso mit CheatEngine hantierst, dann gib einfach mal den Begriff in Google ein. Da findest du ganz konkrete Tuts.
    Hier sicher nicht.
    Die Überwachung des eigenen TS-Servers ist völlig legitim, nur leider wird die Arbeit mit Memory zu sehr zweckentfremdet genutzt und deshalb halten wir uns hier mit Support dafür sehr zurück.

  • Excel Zeilen einlesen und auf Array speichern

    • BugFix
    • 30. März 2010 um 11:46
    Zitat von autoitinstallermaker

    Und wo muss ich das einfügen?


    Du hast die aktuelle Version, somit mußt du nichts weiter ändern. Weshalb der Fehler weiterhin auftaucht ist mir im Moment unklar.

  • Mal wieder ListView Probleme

    • BugFix
    • 30. März 2010 um 11:41

    So kannst du den Inhalt ausgeben:

    Spoiler anzeigen
    [autoit]

    #include <ListViewConstants.au3>
    #include <StructureConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GUIListView.au3>

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

    $gui = GUICreate('test')
    $hListView = GUICtrlCreateListView('Spalte1|Spalte2', 10, 10, 300, 200, -1, BitOR($LVS_EX_TRACKSELECT,$LVS_EX_FULLROWSELECT))
    _GUICtrlListView_SetColumnWidth($hListView, 0, 146)
    _GUICtrlListView_SetColumnWidth($hListView, 1, $LVSCW_AUTOSIZE_USEHEADER)
    For $i = 1 To 10
    GUICtrlCreateListViewItem('Zeile ' & $i & ' Spalte 1|Zeile ' & $i & ' Spalte 2', $hListView)
    Next
    GUISetState()
    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

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

    Do
    $msg = GUIGetMsg()
    Until $msg = $GUI_EVENT_CLOSE

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

    Func _LeftDblClick($Info)
    MsgBox(0, 'Text in Spalte', _GUICtrlListView_GetItemText($Info[0], $Info[1], $Info[2]) )
    EndFunc

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

    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView
    $hWndListView = $hListView
    If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView)
    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    If $hWndFrom = $hWndListView And $iCode = $NM_DBLCLK Then
    Local $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    Local $aInfo[3] = [$hWndFrom,DllStructGetData($tInfo, "Index"),DllStructGetData($tInfo, "SubItem")]
    _LeftDblClick($aInfo)
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

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

    Ganz wichtig: Unbedingt Ex-Style "$LVS_EX_FULLROWSELECT" für das Listview, sonst erhältst du keine Item-Notifikation beim Klick auf ein SubItem!

  • ListView, Ausgewähltes Element ausgeben

    • BugFix
    • 29. März 2010 um 23:02
    Zitat von tkausl

    Ich nehme an, die Subitems fangen nicht bei 0 an...


    Jein. SubItem 0 wäre die erste Spalte und somit das Item. Alle Indexe sind 0-basiert.

    - _GUICtrlListView_GetSelectedIndices gibt den Index der markierten Zeile zurück
    - _GUICtrlListView_GetItemText gibt dir den Text des Item/SubItem zurück

  • ListView, Ausgewähltes Element ausgeben

    • BugFix
    • 29. März 2010 um 22:33
    Zitat von tkausl

    die möglichkeit, nur den inhalt einer bestimmten spalte auszulesen gibt es nicht zufällig, oder?


    Doch, du brauchst den Index der Zeile (ItemIndex) und den Index der Spalte (SubItemIndex). Damit kannst du direkt drauf zugreifen. Schau mal die Funktionen der Listview-UDF an.

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™