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

Beiträge von Oscar

  • WinSetTitle Problem

    • Oscar
    • 25. Juli 2009 um 18:20

    Dafür muss man das Fenster eindeutiger identifizieren, z.B. mit dem Handle:

    Spoiler anzeigen
    [autoit]


    Opt('WinTitleMatchMode', 2)
    $sTitle = 'Solitär'
    ShellExecute('sol.exe')
    WinWait($sTitle)
    $handle = WinGetHandle($sTitle)
    $iTimer = TimerInit()
    AdlibEnable('_TimeUpdate', 1000)
    While WinExists($handle)
    Sleep(100)
    WEnd

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

    Func _TimeUpdate()
    WinSetTitle($handle, '', StringRegExpReplace(WinGetTitle($handle), ' \d{2}:\d{2}:\d{2}', '') & ' ' & _TicksToTime(TimerDiff($iTimer)))
    EndFunc ;==>_TimeUpdate

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

    Func _TicksToTime($iTicks)
    Local $iHours, $iMins, $iSecs = Int($iTicks / 1000)
    $iHours = Int($iSecs / 3600)
    $iSecs = Mod($iSecs, 3600)
    $iMins = Int($iSecs / 60)
    $iSecs = Mod($iSecs, 60)
    Return StringFormat('%02i:%02i:%02i', $iHours, $iMins, $iSecs)
    EndFunc ;==>_TicksToTime

    [/autoit]
  • WinSetTitle Problem

    • Oscar
    • 24. Juli 2009 um 18:57

    Ich hab auch noch eine Möglichkeit:

    Spoiler anzeigen
    [autoit]


    Opt('WinTitleMatchMode',2)
    $sTitle = 'Solitär'
    ShellExecute('sol.exe')
    WinWait($sTitle)
    $iTimer = TimerInit()
    AdlibEnable('_TimeUpdate', 1000)
    While WinExists($sTitle)
    Sleep(100)
    WEnd

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

    Func _TimeUpdate()
    WinSetTitle($sTitle, '', StringRegExpReplace(WinGetTitle($sTitle), ' \d{2}:\d{2}:\d{2}', '') & ' ' & _TicksToTime(TimerDiff($iTimer)))
    EndFunc

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

    Func _TicksToTime($iTicks)
    Local $iHours, $iMins, $iSecs = Int($iTicks / 1000)
    $iHours = Int($iSecs / 3600)
    $iSecs = Mod($iSecs, 3600)
    $iMins = Int($iSecs / 60)
    $iSecs = Mod($iSecs, 60)
    Return StringFormat('%02i:%02i:%02i', $iHours, $iMins, $iSecs)
    EndFunc ;==>_TicksToTime

    [/autoit]
  • IP Adresse aus einem String bzw. Text herausfiltern

    • Oscar
    • 23. Juli 2009 um 17:50

    So geht's mit StringRegExp:

    [autoit]


    #include <Array.au3>
    $sText = 'Hallo hier die IP Adresse:10.20.2.1 und [20.20.2.1] für die weitere Bearbeitung.'
    $aIP = StringRegExp($sText, '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}', 3)
    _ArrayDisplay($aIP)

    [/autoit]
  • Tierstimmenrätsel (Spiel für Kinder)

    • Oscar
    • 23. Juli 2009 um 04:50

    Schönes Spiel, BugFix! :thumbup:


    Aber wieso WAV-Dateien? Was für Probleme gibt es denn mit MP3?
    Interessiert mich jetzt auch für meine eigenen Programme...

  • Dringen Hilfe Hilfe Hilfe

    • Oscar
    • 22. Juli 2009 um 19:00

    Ausnahmen bestätigen die Regel. ;)
    Sollte nicht so verallgemeinernd gemeint sein, diese "Strategie" nimmt nur in letzter Zeit ziemlich zu. :huh:

  • Dringen Hilfe Hilfe Hilfe

    • Oscar
    • 22. Juli 2009 um 17:43

    Mir ist nur gerade die (vermutlich einzige) Problemlösungsstrategie der heutigen Jugend bewusst geworden: FDF (Frag Das Forum) :D;(

  • Dringen Hilfe Hilfe Hilfe

    • Oscar
    • 22. Juli 2009 um 15:05

    Nee, das ist nicht Dein Ernst!? 8|
    Ich weiss gerade nicht, ob ich lachen oder weinen soll...

  • Uhrzeit für Inputfeld

    • Oscar
    • 22. Juli 2009 um 14:53

    Warum nicht einfach so:

    [autoit]


    #include <DateTimeConstants.au3>
    GUICreate('test', 400, 300)
    GUICtrlCreateDate('00:00:00', 10, 10, 100, 30, $DTS_TIMEFORMAT)
    GUICtrlSetFont(-1, 14)
    GUISetState()
    Do
    Until GUIGetMsg() = -3

    [/autoit]
  • Musik-Quiz

    • Oscar
    • 19. Juli 2009 um 10:24

    Starte doch einfach mal das Script (nicht die exe) und lass es laufen. Wenn dann der Fehler auftritt, wird die genaue Zeilennummer ausgegeben.
    So bekommt man mehr Informationen über den Fehler.
    Im Moment vermute ich die Funktion "_getID3Tag" als Fehlerquelle, weil das die einzige Funktion in meinem Script ist, die ein Objekt erstellt.

    Welche AutoIt-Version nutzt Du?

  • Musik-Quiz

    • Oscar
    • 18. Juli 2009 um 13:21

    @Understood: Die Icons sind von Iconspedia

    Sirocool: Hast Du das Script neu compiliert und dabei den Obfuscator benutzt? Wenn ja, lass den Obfuscator mal weg, ansonsten bitte mal mehr Informationen zu dem Fehler. Hast Du die Exe oder das Script gestartet? Welches Windows benutzt Du?

    Für alle mit Vista 64 Bit: Bitte mal dieses Script hier starten, ein MP3 mit ID3-Tag-Informationen auswählen und mir mitteilen, welche Array-Elemente für Interpret und Titel zuständig sind:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    $sPath = FileOpenDialog('Test', '', 'MP3 (*.mp3)')
    $aInfo = _getID3Tag($sPath)
    _ArrayDisplay($aInfo)

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

    Func _getID3Tag($sPath)
    Local $oShellApp, $oDir, $oFile, $aProperty[35], $aPath
    $aPath = StringRegExp($sPath, '(.+)\\(.+)', 3)
    $oShellApp = ObjCreate('shell.application')
    $oDir = $oShellApp.NameSpace($aPath[0])
    $oFile = $oDir.Parsename($aPath[1])
    For $i = 0 To 34
    $aProperty[$i] = $oDir.GetDetailsOf($oFile, $i)
    Next
    Return $aProperty
    EndFunc ;==>_getID3Tag

    [/autoit]
  • Musik-Quiz

    • Oscar
    • 17. Juli 2009 um 23:07

    Kannst Du mal das folgende Script ausführen und beim FileOpenDialog eine MP3-Datei auswählen, bei der Du Dir sicher bist, dass sie ID3-Informationen enthält?
    Als Ergebnis müsste ein Array herauskommen, mit 3 Elementen: Titel, Interpret und Dauer

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    $sPath = FileOpenDialog('Test', '', 'MP3 (*.mp3)')
    $aInfo = _getID3Tag($sPath)
    _ArrayDisplay($aInfo)

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

    Func _getID3Tag($sPath)
    Local $sFile, $sDir, $oShellApp, $oDir, $oFile, $aProperty[3], $aTemp
    $sFile = StringTrimLeft($sPath, StringInStr($sPath, '\', 0, -1))
    $aTemp = StringRegExp($sFile, '(.+) - (.+).mp3', 3)
    $sDir = StringTrimRight($sPath, (StringLen($sPath) - StringInStr($sPath, '\', 0, -1)))
    $oShellApp = ObjCreate ('shell.application')
    $oDir = $oShellApp.NameSpace ($sDir)
    $oFile = $oDir.Parsename ($sFile)
    $aProperty[1] = $oDir.GetDetailsOf($oFile, 9)
    If $aProperty[1] = '' And IsArray($aTemp) Then $aProperty[1] = $aTemp[0]
    $aProperty[0] = $oDir.GetDetailsOf($oFile, 10)
    If $aProperty[0] = '' And IsArray($aTemp) Then $aProperty[0] = $aTemp[1]
    $aProperty[2] = $oDir.GetDetailsOf($oFile, 21)
    Return $aProperty
    EndFunc

    [/autoit]
  • Musik-Quiz

    • Oscar
    • 17. Juli 2009 um 21:30

    So, nach langer Zeit gibt es mal wieder ein Update (siehe Post #1).

  • Fehler bei Script - StringSplit

    • Oscar
    • 17. Juli 2009 um 04:21

    Dann erhälst Du ein Array in einem Array, kein 2D-Array.

    Benutze lieber ein temporäres Array und erstelle ein 2D-Array:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>

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

    Global $Files = "x\xx\xxx\xxxx\xxxxx\xxxxxxx" _
    & "&" _
    & "x\xx\xxx\xxxx\xxxxx\xxxxxxx"

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

    Global $Files_Split = StringSplit($Files, "&")

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

    Global $a2D[$Files_Split[0]][2]

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

    For $t = 1 To $Files_Split[0] Step +1
    $tmp = StringSplit($Files_Split[$t], "\")
    If $tmp[0] > UBound($a2D, 2) Then ReDim $a2D[$Files_Split[0]][$tmp[0]]
    For $i = 1 To $tmp[0]
    $a2D[$t - 1][$i - 1] = $tmp[$i]
    Next
    Next
    _ArrayDisplay($a2D)

    [/autoit]

    Das kann man viel leichter weiterverwenden.

  • Fehler bei Script - StringSplit

    • Oscar
    • 17. Juli 2009 um 01:23

    Wie kommst Du darauf, dass $Files_Split_Split ein 2D-Array (Zeile 18 ) darstellt?
    Und woher kommt $i (ebenfalls Zeile 18 )?

  • Button ist nicht zu sehen

    • Oscar
    • 16. Juli 2009 um 15:55

    Bei mir funktioniert das Script (Button vorhanden und funktioniert).

  • Rest; Sekunden in das Format HH.MM.SS umwandeln!

    • Oscar
    • 16. Juli 2009 um 15:40

    Ich hatte mal die Funktion "_TicksToTime" umgeschrieben. Übergabeparameter ist aber in Millisekunden.

    [autoit]


    Func _TicksToTime($iTicks)
    Local $iHours, $iMins, $iSecs = Int($iTicks / 1000)
    $iHours = Int($iSecs / 3600)
    $iSecs = Mod($iSecs, 3600)
    $iMins = Int($iSecs / 60)
    $iSecs = Mod($iSecs, 60)
    Return StringFormat('%02i:%02i:%02i', $iHours, $iMins, $iSecs)
    EndFunc ;==>_TicksToTime

    [/autoit]
  • Sammel Fragen von Eistee zu Eigenem Player

    • Oscar
    • 16. Juli 2009 um 15:35

    Hab Dir mal ein Beispiel geschrieben:

    Spoiler anzeigen
    [autoit]


    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    Global $gaDropFiles[1]
    Global Const $WM_DROPFILES = 0x0233
    $hGui = GUICreate('Listview Drag & Drop', 640, 480, -1, 0, Default, $WS_EX_ACCEPTFILES) ; $WS_EX_ACCEPTFILES als Extended Style
    $hListView = GUICtrlCreateListView('Dateiname', 10, 10, 620, 400)
    GUICtrlSetState(-1, $GUI_DROPACCEPTED) ; Control als Drop-Control einrichten
    GUISetState()
    GUIRegisterMsg($WM_DROPFILES, 'WM_DROPFILES_FUNC')
    WinSetOnTop($hGui, '', 1)

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

    While True
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $GUI_EVENT_DROPPED
    For $i = 0 To UBound($gaDropFiles) - 1
    GUICtrlCreateListViewItem(StringRegExpReplace($gaDropFiles[$i], '.*\\(.*)\..*', '$1'), $hListView)
    _GUICtrlListView_SetColumnWidth($hListView, 0, $LVSCW_AUTOSIZE)
    Next
    EndSwitch
    WEnd

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

    Func WM_DROPFILES_FUNC($hWnd, $msgID, $wParam, $lParam) ; diese Funktion wird benötigt, damit man auch mehrere Dateien droppen kann
    Local $nSize, $pFileName
    Local $nAmt = DllCall('shell32.dll', 'int', 'DragQueryFileW', 'hwnd', $wParam, 'int', 0xFFFFFFFF, 'ptr', 0, 'int', 255)
    For $i = 0 To $nAmt[0] - 1
    $nSize = DllCall('shell32.dll', 'int', 'DragQueryFileW', 'hwnd', $wParam, 'int', $i, 'ptr', 0, 'int', 0)
    $nSize = $nSize[0] + 1
    $pFileName = DllStructCreate('wchar[' & $nSize & ']')
    DllCall('shell32.dll', 'int', 'DragQueryFileW', 'hwnd', $wParam, 'int', $i, 'ptr', DllStructGetPtr($pFileName), 'int', $nSize)
    ReDim $gaDropFiles[$i + 1]
    $gaDropFiles[$i] = DllStructGetData($pFileName, 1)
    $pFileName = 0
    Next
    EndFunc ;==>WM_DROPFILES_FUNC

    [/autoit]
  • ca. 4000 Zeilen an inetMail übergeben

    • Oscar
    • 16. Juli 2009 um 15:18

    Oder Dein Programm schickt es per FTP an einen Server, bei dem ein Verzeichnis extra dafür freigegeben ist. Die Zugangsdaten sind dann nur für dieses Verzeichnis.
    Je nachdem, wieviel Vertrauen Du zu den Nutzern Deines Scriptes hast, wäre das auch noch eine Alternative.

  • Sammel Fragen von Eistee zu Eigenem Player

    • Oscar
    • 16. Juli 2009 um 15:14

    Hab ich in meinem MP3-Player gemacht: Starplayer (MP3-Player)

  • Hilfe

    • Oscar
    • 16. Juli 2009 um 15:10

    Die fehlende Hilfe liegt mit Sicherheit nicht an den Usern hier, sondern eher an Deiner Art der Problembeschreibung.

    Ich habe Dir schon bei Deinem letzten Thread (zu dem gleichen Thema) gesagt, dass Du Dein Problem eindeutiger formulieren solltest.
    Die Fragen (aus dem letzten Thread) zu dem Problem sind nach wie vor offen.
    Falls Du der deutschen Sprache nicht so mächtig bist (Deine bisherigen Postings legen das nahe), darfst Du das Problem auch mal auf englisch beschreiben.

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™