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

  • Probleme bei befüllung einer Textarea

    • BugFix
    • 2. April 2008 um 09:05

    Ja klar, mit ShellExecute / ShellExecuteWait wird das mit der Datei verknüpfte Programm gestartet.
    Ich habs mal hier als Bsp. für einen Simple Explorer gemacht.
    Die ComboBox habe ich hier rausgelassen, hier kannst du dich mit Doppelklick bewegen, ist einfacher.
    Weitere Optionen über Kontextmenü (Ausführen bei Ordner öffnet diesen im Explorer/ Kopieren/ Einfügen/ Umbenennen/ Löschen).
    Außerdem findest du eine Variable $Safed - dort sind die Attribute hinterlegt, für Dateien, die für: Ausführen, Umbenennen, Löschen gesperrt sind.

    Simple Explorer
    [autoit]

    #include <GuiListBox.au3>
    #include <File.au3>

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

    Global $aFile, $aFolder, $aPath[1] = [@HomeDrive & '\'], $currPath, $sUp = '[ EBENE HÖHER ]'
    Global $Safed = '[SHOC]' ; mit diesen Attributen gesperrt für: Ausführen, Umbenennen, Löschen

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

    $GUI = GUICreate("Simple Explorer",400,300)
    $label = GUICtrlCreateLabel('', 5, 5, 390, 53)
    $List = GUICtrlCreateList( '', 2, 65, 396, 230, BitOR($WS_HSCROLL, $WS_VSCROLL, $WS_BORDER))
    $hList = GUICtrlGetHandle($List)
    $menu = GUICtrlCreateContextMenu($List)
    $itemRun = GUICtrlCreateMenuItem('Ausführen', $menu)
    $itemShape = GUICtrlCreateMenuItem('', $menu)
    $itemCopy = GUICtrlCreateMenuItem('Kopieren', $menu)
    $itemPaste = GUICtrlCreateMenuItem('Einfügen', $menu)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $itemRen = GUICtrlCreateMenuItem('Umbenennen', $menu)
    $itemShape = GUICtrlCreateMenuItem('', $menu)
    $itemDel = GUICtrlCreateMenuItem('Löschen', $menu)
    GUISetState(@SW_SHOW)

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

    GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND')

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

    _WriteList($aPath[0])

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $itemRun
    _RunFile()
    Case $itemCopy
    _CopyFile()
    Case $itemPaste
    _PasteFile()
    Case $itemRen
    _RenFile()
    Case $itemDel
    _DelFile()
    EndSwitch
    Wend

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

    Func _WriteList($PATH)
    _GUICtrlListBox_ResetContent($hList) ; alte Inhalte löschen
    $aFolder = _FileListToArray($PATH, '*', 2)
    $aFile = _FileListToArray($PATH, '*', 1)
    If UBound($aPath) > 1 Then _GUICtrlListBox_AddString($hList, $sUp)
    If IsArray($aFolder) Then
    _GUICtrlListBox_AddString($hList, '--------------- ORDNER ---------------')
    For $i = 1 To UBound($aFolder) -1
    _GUICtrlListBox_AddString($hList, $aFolder[$i])
    Next
    EndIf
    If IsArray($aFile) Then
    _GUICtrlListBox_AddString($hList, '--------------- DATEIEN ---------------')
    For $i = 1 To UBound($aFile) -1
    _GUICtrlListBox_AddString($hList, $aFile[$i])
    Next
    EndIf
    GUICtrlSetData($label, $PATH)
    EndFunc

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

    Func _ListDblClick()
    Local $str = _GUICtrlListBox_GetText($hList, _GUICtrlListBox_GetCurSel($hList))
    Local $tmpPath = ''
    If $str = $sUp Then
    ReDim $aPath[UBound($aPath)-1]
    $currPath = $aPath[UBound($aPath)-1]
    Else
    $currPath = $aPath[UBound($aPath)-1] & $str & '\' ; neuer Pfad = letzter Pfad + geklickter Pfad
    If Not StringRegExp(FileGetAttrib($currPath), 'D') Then _RunFile() ; ist es kein Ordner ?
    ReDim $aPath[UBound($aPath)+1]
    $aPath[UBound($aPath)-1] = $currPath ; neuen Pfad hinzufügen
    EndIf
    _WriteList($currPath)
    EndFunc

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

    Func _RunFile()
    Local $str = _GUICtrlListBox_GetText($hList, _GUICtrlListBox_GetCurSel($hList))
    If $str = '' Then Return
    Local $attrib = FileGetAttrib($aPath[UBound($aPath)-1] & $str)
    If StringRegExp($attrib, $Safed) Then Return MsgBox(0, 'Geschützt!', $str & ' - Attribut: ' & $attrib)
    ShellExecuteWait($aPath[UBound($aPath)-1] & $str)
    EndFunc

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

    Func _CopyFile()
    Local $str = _GUICtrlListBox_GetText($hList, _GUICtrlListBox_GetCurSel($hList))
    If $str = '' Then Return
    Local $attrib = FileGetAttrib($aPath[UBound($aPath)-1] & $str)
    If StringRegExp($attrib, 'D') Then Return MsgBox(0, 'Achtung', $str & ' ist keine Datei')
    ClipPut($aPath[UBound($aPath)-1] & $str)
    GUICtrlSetState($itemPaste, $GUI_ENABLE)
    EndFunc

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

    Func _PasteFile()
    Local $str = _GUICtrlListBox_GetText($hList, _GUICtrlListBox_GetCurSel($hList))
    If $str = '' Then Return
    Local $attrib = FileGetAttrib($aPath[UBound($aPath)-1] & $str)
    If Not StringRegExp($attrib, 'D') Then Return MsgBox(0, 'Achtung', $str & ' - ist kein Ordner')
    Local $tmp = ClipGet(), $pos = StringInStr($tmp, '\', -1)
    Local $file = StringRight($tmp, StringLen($tmp)-$pos)
    If FileExists($aPath[UBound($aPath)-1] & $str & '\' & $file) Then $file = 'Kopie von ' & $file
    FileCopy($tmp, $aPath[UBound($aPath)-1] & $str & '\' & $file)
    _WriteList($aPath[UBound($aPath)-1])
    GUICtrlSetState($itemPaste, $GUI_DISABLE)
    EndFunc

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

    Func _RenFile()
    Local $str = _GUICtrlListBox_GetText($hList, _GUICtrlListBox_GetCurSel($hList))
    If $str = '' Then Return
    Local $attrib = FileGetAttrib($aPath[UBound($aPath)-1] & $str)
    If StringRegExp($attrib, $Safed) Then Return MsgBox(0, 'Geschützt!', $str & ' - Attribut: ' & $attrib)
    Local $tmp = InputBox('Umbenennen', 'Neuer Name:' & @LF & @LF & $aPath[UBound($aPath)-1], $str)
    If $tmp <> '' Then FileMove($aPath[UBound($aPath)-1] & $str, $aPath[UBound($aPath)-1] & $tmp)
    _WriteList($aPath[UBound($aPath)-1])
    EndFunc

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

    Func _DelFile()
    Local $str = _GUICtrlListBox_GetText($hList, _GUICtrlListBox_GetCurSel($hList))
    If $str = '' Then Return
    Local $attrib = FileGetAttrib($aPath[UBound($aPath)-1] & $str)
    If StringRegExp($attrib, $Safed) Then Return MsgBox(0, 'Geschützt!', $str & ' - Attribut: ' & $attrib)
    FileDelete($aPath[UBound($aPath)-1] & $str)
    _WriteList($aPath[UBound($aPath)-1])
    EndFunc

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

    Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode, $hWndListBox
    If Not IsHWnd($hList) Then $hWndListBox = GUICtrlGetHandle($hList)
    $hWndFrom = $ilParam
    $iIDFrom = BitAND($iwParam, 0xFFFF) ; Low Word
    $iCode = BitShift($iwParam, 16) ; Hi Word
    Switch $hWndFrom
    Case $hList, $hWndListBox
    Switch $iCode
    Case $LBN_DBLCLK ; Sent when the user double-clicks a string in a list box
    _ListDblClick()
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_COMMAND

    [/autoit]

    Dateien

    SimpleExplorer.au3 5,5 kB – 173 Downloads
  • Parmeter übergeben

    • BugFix
    • 1. April 2008 um 18:10
    Zitat

    Ich will aber vermeiden das mein save_data.au3 immer
    nachsehen muss ob eine Änderung vorliegt.
    Dadurch habe ich immer eine Verzögerung.

    Also dann solltest du dir ernsthaft überlegen, den 286-er Rechner endlich zu verschrotten (denn nur auf solch alten Kisten stelle ich mir das evtl. mit Verzögerung vor).
    Das Skript im Leerlauf nimmt ca. 3% CPU-Last, Werte je nach PC leicht variierend. Im Moment des Dateilesens steigt das auf vllt. 40 % an. Wenn du nicht grade ein paar hundert Einträge dadrin hast, merkst du davon garnix. ;)

  • Parmeter übergeben

    • BugFix
    • 1. April 2008 um 13:11

    Deine Frage ist zwar nicht sehr aussagekräftig aber ich vermute folgendes:
    - Dein Programm ist ein Sicherungsprogramm
    - aus variablen Pfaden soll gesichert werden

    Leg eine Datei an, z.B. SaveQueue.txt und hinterlege dort immer bei Bedarf die Pfade der zu sicherneden Daten.
    Dein Sicherungsprogramm schaut in von dir festgelegten Intervallen nach, ob etwas in der Datei steht. Wenn ja werden die Daten der Pfade gesichert und der entsprechende Eintrag aus der Datei gelöscht.

  • Probleme bei befüllung einer Textarea

    • BugFix
    • 1. April 2008 um 10:42

    Hier mal ein Bsp.:

    Spoiler anzeigen
    [autoit]

    #Include <GuiComboBox.au3>
    #include <GuiListBox.au3>
    #include <File.au3>
    Global $aFile, $aFolder, $sTmp, $Path = "C:\Programme\"

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

    $GUI = GUICreate("ComboAddDir",400,300)
    $Combo = GUICtrlCreateCombo("", 2, 2, 396, 296)
    $Lesen = GUICtrlCreateButton("Lesen",20,30)
    $hList = _GUICtrlListBox_Create($GUI, '', 2, 65, 396, 230, BitOR($WS_HSCROLL, $WS_VSCROLL, $WS_BORDER) )
    GUISetState(@SW_SHOW)

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

    _GUICtrlComboBox_AddDir ($Combo, $Path & '*', $DDL_DIRECTORY + $DDL_EXCLUSIVE)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Lesen
    _GUICtrlListBox_ResetContent($hList) ; alte Inhalte löschen
    $sTmp = GUICtrlRead($Combo)
    If $sTmp <> '' Then
    $sTmp = StringTrimLeft(StringTrimRight(GUICtrlRead($Combo), 1), 1)
    $aFolder = _FileListToArray($Path & $sTmp, '*', 2)
    $aFile = _FileListToArray($Path & $sTmp, '*', 1)
    If IsArray($aFolder) Then
    _GUICtrlListBox_AddString($hList, '--------------- ORDNER ---------------')
    For $i = 1 To UBound($aFolder) -1
    _GUICtrlListBox_AddString($hList, $aFolder[$i])
    Next
    EndIf
    If IsArray($aFile) Then
    _GUICtrlListBox_AddString($hList, '--------------- DATEIEN ---------------')
    For $i = 1 To UBound($aFile) -1
    _GUICtrlListBox_AddString($hList, $aFile[$i])
    Next
    EndIf
    EndIf
    EndSwitch
    Wend

    [/autoit]

    Edit: Habs mal noch geändert um Ordner und Dateien getrennt anzuzeigen.

  • shreibbot

    • BugFix
    • 31. März 2008 um 21:26

    Was soll das hier bei Hilfe & Unterstützung?
    Ein halbfertiges Skript (dessen Sinn mir entgeht) und keine Problemstellung.

    Also als Schmierzettel ist das Forum nicht gedacht. :thumbdown:

  • shreibbot

    • BugFix
    • 31. März 2008 um 21:18

    1. Tags vergessen
    2. Was ist deine Frage? :D

  • help

    • BugFix
    • 31. März 2008 um 20:54
    Zitat von blubbstar

    ersetz

    [autoit]

    GUICtrlRead($Input1)

    [/autoit]

    durch

    [autoit]

    $Input1 = GUICtrlRead($Input1)

    [/autoit]


    Das wäre aber fatal!! Danach existiert die ID für das Input1 nicht mehr, da sie durch dessen Inhalt überschrieben wurde. :P
    Also besser:

    [autoit]

    $ContentInput1 = GUICtrlRead($Input1)

    [/autoit]
  • Windows XP mit Passwortschutz ist sicher ! ? oder eher nicht?

    • BugFix
    • 31. März 2008 um 20:09

    Eigentlich sollte man denken, dass Passwörter den Sinn haben, dass man ohne sie nicht auf einen Account zugreifen kann.
    OK, das stimmt soweit auch.
    Aber: Windows XP ermöglicht es jedem Benutzer (auch mit eingeschränktem Konto) ohne Benutzung von Fremdsoftware die Paßwörter für JEDEN Account zu ändern oder zurückzusetzen oder ein neues Adminkonto zu erstellen.
    Glaubt ihr nicht? - Probiert es aus

    Code
    Ausführen: cmd
    		net user  		==> Übersicht Benutzerkonten
    		net user NAME  		==> legt ein ADMIN-Konto für NAME an
    		net user NAME* 		==> legt für NAME neues Passwort fest
                                            Eingabe nicht sichtbar, mit Wiederholung
    
    
    Ausführen: control userpasswords2
    		Fenster Benutzerkonten wird geöffnet
    		per Button läßt sich das Paßwort von JEDEM Konto zurücksetzen!


    Ich denke, damit ist der Sinn eines Passworts ad absurdum geführt.
    Würde mich mal interessieren, ob das bei Vista ausgemerzt wurde. Wenn dort auch sonst kaum was klappt, sollen doch wohl (angeblich) die Sicherheitskriterien verbessert sein.
    Also Vista-User, testet bitte mal.

  • Brauch hilfe

    • BugFix
    • 31. März 2008 um 14:54
    Zitat von Greek

    wo such ich den nach kuh?


    :D Das war ein Synonym :P
    Nur so, wie dein Frage gestellt war, hieß das
    - ich weiß wie das Wort heißt
    - ich will es auf einer Seite suchen
    - wenn ich es dort finde schreibe ich genau dieses Wort in eine Datei
    und das ist natürlich Schwachsinn. :rofl:

    Wenn du ein Problem schilderst, stell dir einfach vor, deine Oma sitzt dir gegenüber. Dann kommst du nicht umhin genau zu erklären worum es geht :P

  • Brauch hilfe

    • BugFix
    • 31. März 2008 um 11:31

    Was für einen Sinn hat das?
    Du suchst nach "Kuh" und wenn du "Kuh" findest schreibst du "Kuh" in eine Datei? ?(

  • xp + vista + backtrack(linux) = ?

    • BugFix
    • 31. März 2008 um 09:10

    HI,
    ich denke das Problem ist, dass Vista mit Linux auf einer HD ist.
    Wenn du konfigurierst:
    HD1 - XP + Linux (und GRUB)
    HD2 - Vista
    sollte die Verwaltung mit GRUB klappen.

  • Gateway ermitteln

    • BugFix
    • 30. März 2008 um 20:01

    Ich hatte mal eine Funktion _GetNetworkAdapterIPEnabled() erstellt.
    Vielleicht ist es das, was du brauchst.

  • Sommerzeit

    • BugFix
    • 30. März 2008 um 11:22

    Hi,
    passend zum heutigen Tag :D eine Funktion für das Datums-Management: Ermitteln der Sommerzeit
    _Date_GetSummerTime([$iYEAR=''])

    Edit 03.05.08:

    Habe die Funktion den Änderungen der SZ im Verlauf der Geschichte angepaßt.
    Alles weitere (auch DL) in Post #4

    - gültige Jahreszahlen 1900 bis 2999 (bei keinem Wert wird das aktuelle Jahr verwendet)
    - für Jahreszahlen in denen keine SZ war (oder außerhalb Bereich) wird ein leeres Array zurückgegeben
    - Rückgabe in einem Array; D/BRD: [0][0]=Anfang, [0][1]=Ende; sowj.Zone/DDR: [1][0]=Anfang, [1][1]=Ende
    - Datumsangabe im Kurzdatumsformat der Regioneinstellungen des PC

  • Nicksuche?

    • BugFix
    • 30. März 2008 um 11:12

    :D Immer schön Aufpassen - Die Bugs sind überall :P

    Spoiler anzeigen

    [Blockierte Grafik: http://www.homemade-labor.ch/weblog/archives/mpb_g1.gif]

    Spoiler anzeigen

    [Blockierte Grafik: http://z.about.com/d/paranormal/1/0/9/T/giant_bugs.jpg]

  • Control ID erstellen?

    • BugFix
    • 29. März 2008 um 19:10

    ControlSend works in a similar way to Send but it can send key strokes directly to a window/control, rather than just to the active window.
    Oder auf Deutsch:
    ControlSend arbeitet auf vergleichbare Weise zu Send, aber es kann Tastaturbefehle direkt an ein Fenster/Control senden, statt nur direkt an das aktive Fenster.

    Das klärt doch alles - oder? Hilfe lesen hilft. :P

  • Windowtitle durch Prozess herausfinden

    • BugFix
    • 29. März 2008 um 01:06

    1:1 kopiert ? Bei mir funzt es tadellos.

    EDIT: Oops - peinlich. Da ich immer mit SciTE getestet habe, hat es funktioniert - weil bei fehllender Angabe, der Titel des aktiven Fensters zurückgegeben wird.
    Naja, man soll halt so spät keine Probleme lösen. :S

  • Windowtitle durch Prozess herausfinden

    • BugFix
    • 29. März 2008 um 01:00
    Zitat

    Aber der Fenstername von SciTE ist doch der Pfad zur Datei, welche man gerade nutzt, jedenfall bei mir...

    Ja klar, das ändert aber nix daran, dass das der Fenster-Titel ist. Und den wolltest du doch erfragen.
    Setzt doch einfach mal einen anderen Prozeß ein, dann siehst du, dass es funzt. :P

  • Windowtitle durch Prozess herausfinden

    • BugFix
    • 29. März 2008 um 00:47
    Zitat von NoName

    Welche handle? WinGetHandle? Kann ja nicht sein...

    Kann nicht.. - ist aber so, siehe mein voriges Post. :D

  • Windowtitle durch Prozess herausfinden

    • BugFix
    • 29. März 2008 um 00:43

    So kannst du es machen

    [autoit]

    Global $list = ProcessList("SciTE.exe") ; gibt alle Instanzen des Prozesses zurück
    Global $titel = ''
    For $i = 1 To $list[0][0]
    $titel &= WinGetTitle(WinGetHandle($list[$i][1])) & @LF
    Next
    MsgBox(0, '', $titel)

    [/autoit]
  • Windowtitle durch Prozess herausfinden

    • BugFix
    • 29. März 2008 um 00:20

    Über den Prozeß bekommst du das Handle.
    Mit dem Handle kannst du den Titel abfragen.

    [autoit]

    $title = WinGetTitle('Fenster-Handle')

    [/autoit]

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™