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

  • Listview - Scrollen ohne Scrollbalken

    • BugFix
    • 31. Dezember 2009 um 10:02

    Ich hatte mal eine andere Lösung, finde nur das Skript nicht. Hier der Weg:
    (Dir geht es ja nur dadrum, die Scrollleiste nicht zu sehen)
    - neben dem LV ein Label erstellen
    - gleiche Höhe wie LV, Breite: Scrollbar +2px (über Systemmetrics abfragbar)
    - die Scrollleiste überlappend positionieren

  • CMD.au3

    • BugFix
    • 31. Dezember 2009 um 09:56
    Zitat von Matthias_199

    wie soll ich die CMD box schließen ohne das programm zu killen mit einem exit also nur die CMD box will ich killen.

    Das CMD-Fenster beendet sich doch nach Ausführung des Befehls von alleine. ?(

  • Return Code auswerten

    • BugFix
    • 31. Dezember 2009 um 09:30
    Zitat von sonyman

    ca 20 Parameter übergeben werde, und diese ständig angepasst werden müssen.


    Parameterübergabe ist auch in AutoItskripten kein Problem. Schau mal in der Hilfe unter:
    Using AutoIt ==> Command Line Parameters

  • Problem mit StringInStr

    • BugFix
    • 30. Dezember 2009 um 23:11

    Sag mal lieber, was du tun möchtest - aus deinem Code werde ich nicht recht schlau.

  • Return Code auswerten

    • BugFix
    • 30. Dezember 2009 um 22:47

    Sieht soweit OK aus.
    Aber du kannst doch das, was in den BAT abläuft sicher alles mit AutoIt erledigen? - Würde das doch vereinfachen.

  • String nach Zeichenzahl splitten

    • BugFix
    • 30. Dezember 2009 um 21:45

    Hi,
    es war heute die Frage wie man nach einer bestimmten Anzahl Zeichen splitten kann.
    Diese Lösung paßt in einen Einzeiler. Ich habe aber das nun etwas flexibler gemacht.

    - Splitten von Anfang oder Ende (Standard: von Anfang)
    - Ergebnis LeftToRight (Standard) oder RightToLeft

    _StringSplit_ByCount( )
    [autoit]

    $s = 'Abcde3ghijKlmnop2rstUvwxy1'

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

    ConsoleWrite('von Li - LTR' & @CRLF)
    $ret = _StringSplit_ByCount($s, 10)
    For $i = 0 To UBound($ret) -1
    ConsoleWrite($ret[$i] & @CRLF)
    Next
    ConsoleWrite(@CRLF)

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

    ConsoleWrite('von Li - RTL' & @CRLF)
    $ret = _StringSplit_ByCount($s, 10,0,1)
    For $i = 0 To UBound($ret) -1
    ConsoleWrite($ret[$i] & @CRLF)
    Next
    ConsoleWrite(@CRLF)

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

    ConsoleWrite('von Re - LTR' & @CRLF)
    $ret = _StringSplit_ByCount($s, 10,1)
    For $i = 0 To UBound($ret) -1
    ConsoleWrite($ret[$i] & @CRLF)
    Next
    ConsoleWrite(@CRLF)

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

    ConsoleWrite('von Re - RTL' & @CRLF)
    $ret = _StringSplit_ByCount($s, 10,1,1)
    For $i = 0 To UBound($ret) -1
    ConsoleWrite($ret[$i] & @CRLF)
    Next
    ConsoleWrite(@CRLF)

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

    ;===============================================================================
    ; Function Name: _StringSplit_ByCount($s_String, $i_Count [, $i_FromEnd=0 [, $i_RTL=0]])
    ; Description: Splitten eines Strings nach Anzahl Zeichen
    ; Parameter(s): $s_String der zu splittende String
    ; $i_Count Zeichenzahl nach der zu splitten ist
    ; $i_FromEnd Splitten am Ende beginnen (Standard 0 - vom Anfang)
    ; $i_RTL 1 - String RightToLeft zurückgeben (Standard 0 - LTR)
    ; Return Value(s): Erfolg - Array mit den Splitergebnissen
    ; Fehler - Leerstring
    ; set @error: 1 (String zu kurz)
    ; 2 ($iCount größer Stringlänge)
    ; 3 (RTL fehlgeschlagen)
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ; RTL is _StringRevers function
    ;===============================================================================
    Func _StringSplit_ByCount($s_String, $i_Count, $i_FromEnd=0, $i_RTL=0)
    If StringLen($s_String) < 2 Or $i_Count < 1 Then Return SetError(1,0,"")
    If $i_Count > StringLen($s_String) Then Return SetError(2,0,"")
    If $i_FromEnd <> 0 Then $i_FromEnd = 1
    If $i_RTL <> 0 Then $i_RTL = 1
    Local $a_Tmp[Ceiling(StringLen($s_String)/$i_Count)]
    If $i_FromEnd Then
    For $i = 0 To UBound($a_Tmp) -1
    $a_Tmp[$i] = StringRight($s_String, $i_Count)
    $s_String = StringTrimRight($s_String, $i_Count)
    Next
    Else
    $a_Tmp = StringRegExp($s_String, '.{1,' & $i_Count & '}', 3)
    EndIf
    If $i_RTL Then
    For $i = 0 To UBound($a_Tmp) -1
    Local $i_len = StringLen($a_Tmp[$i])
    Local $t_chars = DllStructCreate("char[" & $i_len + 1 & "]")
    DllStructSetData($t_chars, 1, $a_Tmp[$i])
    Local $a_rev = DllCall("msvcrt.dll", "ptr:cdecl", "_strrev", "ptr", DllStructGetPtr($t_chars))
    If @error Or $a_rev[0] = 0 Then Return SetError(3,0,"")
    $a_Tmp[$i] = DllStructGetData($t_chars, 1)
    Next
    EndIf
    Return $a_Tmp
    EndFunc ;==>_StringSplit_ByCount

    [/autoit]

    Dateien

    _StringSplit_ByCount.au3 2,09 kB – 338 Downloads
  • PID anhand des Pfades?

    • BugFix
    • 30. Dezember 2009 um 14:02

    Ja klar:

    [autoit]

    ProcessList('name.exe')

    [/autoit]
  • Abfrage: Teil des WindowTitle (Teil des Dateinamens eines OpenOffice-Dokumentes)

    • BugFix
    • 30. Dezember 2009 um 13:22
    Zitat von TJF

    Das Problem ist wohl offensichtlich der Start der DDE-Verknüpfung, das bei eindeutigem Fensternamen nicht auftritt (statt dem Class-Namen).


    Nein, das ist grundsätzlich kein Problem. Ich brauche nur ein Kriterium, mit dem eindeutig definiert ist: Dieses neue Dokument möchte ich verwenden.
    Das kann ein immer wiederkehrender und nur in diesem Dokumenttyp vorkommender Teil des Titels sein.

    Ich habe mal schnell ein Programm zur Prozessüberwachung umgemodelt auf Fensterüberwachung. Sollte hierfür funktionieren.
    Wenn du einen eindeutigen Titelbestandteil hast, kannst du das noch anpassen. Momentan ist es auf: Neues Dokument = _001.odt eingestellt.

    Spoiler anzeigen
    [autoit]

    Global $INI = @ScriptDir & '\oooDoc.ini', $counter ; für neue Programmstarts fortlaufenden Zähler speichern
    If Not FileExists($INI) Then IniWrite($INI, 'current', 'number', 1)
    $counter = IniRead($INI, 'current', 'number', 1)

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

    Global $oWin_old = ObjCreate("Scripting.Dictionary")
    Global $oWin_cur = ObjCreate("Scripting.Dictionary")
    Global $oWin_new = ObjCreate("Scripting.Dictionary")
    Global $aWin

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

    AdlibRegister('_setWin')
    HotKeySet('#!e', '_ende') ; WIN+ALT+e zum Beenden

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

    While True
    Sleep(100)
    WEnd

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

    Func _setWin()
    Local $ar = _GetNewWins("[CLASS:SALFRAME]", '_001\.odt - OpenOffice.org Writer')
    If $ar[0][0] = -1 Then Return
    For $i = 0 To UBound($ar) -1
    $counter += 1
    IniWrite($INI, 'current', 'number', $counter)
    $ar[$i][0] = StringReplace($ar[$i][0], '001', StringFormat('%03i', $counter))
    WinSetTitle($ar[$i][1], '', $ar[$i][0])
    WinSetState($ar[$i][0], '', @SW_MAXIMIZE)
    WinActivate($ar[$i][0])
    Next
    EndFunc

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

    Func _ende()
    AdlibUnRegister()
    Exit
    EndFunc

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

    Func _GetNewWins($class, $title)
    $aWin = WinList($class)
    For $i = 1 To UBound($aWin) -1
    If Not StringRegExp($aWin[$i][0], $title) Then ContinueLoop
    $oWin_cur.Add($aWin[$i][1], $aWin[$i][0])
    Next
    If $oWin_old.Count <> 0 Then
    If $oWin_new.Count > 0 Then $oWin_new.RemoveAll
    For $win In $oWin_cur.Keys
    If Not $oWin_old.Exists($win) Then $oWin_new.Add($win, $oWin_cur.Item($win))
    Next
    $oWin_old.RemoveAll
    Else
    _CopyList($oWin_cur, $oWin_new)
    EndIf
    _CopyList($oWin_cur, $oWin_old)
    $oWin_cur.RemoveAll
    Local $aOut[1][2] = [[-1]], $i = 0
    If $oWin_new.Count > 0 Then
    ReDim $aOut[$oWin_new.Count][2]
    For $win In $oWin_new.Keys
    $aOut[$i][0] = $oWin_new.Item($win)
    $aOut[$i][1] = $win
    $i += 1
    Next
    EndIf
    Return $aOut
    EndFunc ;==>_GetNewWins

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

    Func _CopyList(ByRef $oDictFrom, ByRef $oDictTo)
    For $key In $oDictFrom.Keys
    $oDictTo.Add($key, $oDictFrom.Item($key))
    Next
    EndFunc

    [/autoit]
  • Abfrage: Teil des WindowTitle (Teil des Dateinamens eines OpenOffice-Dokumentes)

    • BugFix
    • 30. Dezember 2009 um 12:48

    Sry, bin etwas verwirrt. :huh:
    So wie du das jetzt ansprichst verstehe ich das nun so:
    - Ein neues Dokument heißt IMMER *_001.odt
    - Du möchtest dieses Dokument jetzt fortlaufend nummerieren (bis _999)
    - Das nun umbenannte Dokument soll (maximiert) in den Vordergrund gesetzt werden

    Wenn ja: Bedenken, dass für die interne fortlaufende Nummerierung mit _002 begonnen werden muß, damit keine Kollisionen mit den jeweils neuen _001 entstehen.

    Ist meine Problemschilderung so korrekt?

  • Abfrage: Teil des WindowTitle (Teil des Dateinamens eines OpenOffice-Dokumentes)

    • BugFix
    • 30. Dezember 2009 um 11:33

    Dann mach die Abfrage so. Es ist dann egal ob mehrere Fenster mit dem CLASSNAME existieren. Nur wenn der Titel übereinstimmt führst du die Aktion aus.
    Nur laß das nicht ständig in einer Schleife laufen, sondern prüfe ob ein neues Fenster hinzugekommen ist (WinList) und mach dann die Abfrage.

    [autoit]

    $title = WinGetTitle("[CLASS:SALFRAME]")
    If StringRegExp($title, '_\d{3}\.odt - OpenOffice.org Writer') Then
    WinSetState($title, @SW_MAXIMIZE)
    EndIf

    [/autoit]
  • Abfrage: Teil des WindowTitle (Teil des Dateinamens eines OpenOffice-Dokumentes)

    • BugFix
    • 30. Dezember 2009 um 11:17

    Mit folgender Option werden auch Teile des Fensternamens erkannt:

    [autoit]

    Opt('WinTitleMatchMode', 2)

    [/autoit]

    Oder vielleicht hilft dir das hier. Damit erkennst du ob ein Fenster mit deinen Vorgaben (*_nnn.odt....) übereinstimmt.

    [autoit]

    If StringRegExp(WinGetTitle("[CLASS:SALFRAME]"), '_\d{3}\.odt - OpenOffice.org Writer') Then
    WinSetState("[CLASS:SALFRAME]", @SW_MAXIMIZE)
    EndIf

    [/autoit]
  • Programmauswahl

    • BugFix
    • 29. Dezember 2009 um 22:00

    Arbeitsverzeichnis einstellen?

  • Edit scrollt nicht mit

    • BugFix
    • 28. Dezember 2009 um 23:17

    Versuch es so:

    [autoit]

    #include <GuiEdit.au3>
    _GUICtrlEdit_LineScroll($hEdit, 0, _GUICtrlEdit_GetLineCount($hEdit))

    [/autoit]
  • Programmauswahl

    • BugFix
    • 27. Dezember 2009 um 23:31
    Zitat von Sumale.nin

    kann mir jemand eventuell ein kleines Script schreiben


    Falscher Ansatz - schreiben lassen: dann poste in der Jobbörse.

    Aber dieses Aufgabe ist so simpel, dass du es selbst versuchen solltest. Alleine die Bsp. aus der Hilfe lösen dein Problem schon.

  • IE Captchabild downloaden

    • BugFix
    • 27. Dezember 2009 um 23:27
    Zitat von iMule

    ich möchte es nur lokal speichern


    Welchen legalen Grund gibt es, ein Captcha zu speichern? ...na siehste!

    [Thread Closed]

  • User-Agent für _INetGetSource ändern

    • BugFix
    • 27. Dezember 2009 um 20:31

    Soweit mir bekannt ist, wird von den Funktionen der Inet.au3 der Internetexplorer verwendet. Somit müßtest du deine Änderungen im zugehörigen Registryschlüssel vornehmen:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent

  • Rekursive Datei/Ordner Auflistung per Objekt

    • BugFix
    • 27. Dezember 2009 um 18:06

    Das zeitintensive ist die rekursive Auflistung.
    Wenn du diese Liste hast: Einfach durchwandern und was du noch brauchst abfragen (FileGetSize etc. pp).

  • Transparente GUI

    • BugFix
    • 27. Dezember 2009 um 18:00

    Dann lass deine Ctrl "schweben". ;)
    "Schwebende" Button - Skriptbeispiel

  • Funktion geht nicht mehr...

    • BugFix
    • 27. Dezember 2009 um 16:51

    Aber falls du die Funktion mal brauchst: hier nachgebaut

    [autoit]

    Func _StringAddThousandsSep($STRING)
    Local $sOut = '', $split = StringSplit($STRING, '.', 2)
    If UBound($split) > 1 Then $sOut = ',' & $split[1]
    If StringLen($split[0]) > 3 Then
    Do
    $sOut = '.' & StringRight($split[0], 3) & $sOut
    $split[0] = StringTrimRight($split[0], 3)
    Until StringLen($split[0]) < 4
    If $split[0] <> '' Then
    $sOut = $split[0] & $sOut
    Else
    $sOut = StringTrimLeft($sOut, 1)
    EndIf
    Else
    $sOut = $split[0] & $sOut
    EndIf
    Return $sOut
    EndFunc

    [/autoit]
  • Funktion geht nicht mehr...

    • BugFix
    • 27. Dezember 2009 um 16:20

    Ein Blick in die Changes genügt:

    Zitat

    Removed: _StringAddThousandsSep() has been removed. Too many opinions on how the function should work means nobody is happy with it.

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™