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

  • CLASS auslesen von nem Programm

    • Oscar
    • 27. August 2009 um 18:26

    Mach es so:

    [autoit]


    ;~ $path = GUICtrlRead($importPath)
    $path = 'c:\Programme\AutoIt3\AutoIt3.exe' ; <- zum testen
    $trim = StringRegExpReplace($path, '(.+\\).*', '$1')
    MsgBox(0, "Test", $trim)

    [/autoit]
  • NetwerkUmgebung ?

    • Oscar
    • 26. August 2009 um 18:50

    Um den Pfad zum Windows-Verzeichnis universell zu halten, sollte man die Makros (hier: @WindowsDir) verwenden:

    [autoit]

    Run(@WindowsDir & '\explorer.exe ::{208D2C60-3AEA-1069-A2D7-08002B30309D}')

    [/autoit]

    Da das Windows-Verzeichnis aber auch im normalen Suchpfad vorhanden ist, sollte auch das ausreichen:

    [autoit]

    ShellExecute('::{208D2C60-3AEA-1069-A2D7-08002B30309D}')

    [/autoit]
  • Noch ne frage...

    • Oscar
    • 26. August 2009 um 04:14

    Manche lernen es nie... :cursing:
    [Thread closed]

  • Weils mal sein muss !! User Bewertung: Stilgar

    • Oscar
    • 22. August 2009 um 23:49

    Naja, Stilgar ist ja nicht irgendein User, sondern unsere Koryphäe in Sachen "Firefox und AutoIt" und er bietet einen unermüdlichen Support bei allen Fragen, die zu seiner Firefox-Automatisierung auftauchen.
    Von daher ist Deine User-Bewertung schon ok und ich möchte mich Deinen Worten anschließen. Ein: Dankeschön an Stilgar! :thumbup:

  • Numpad zusammenfassen?

    • Oscar
    • 22. August 2009 um 23:16

    Das geht aber auch noch kürzer (und mit GUISetAccelerators):

    Spoiler anzeigen
    [autoit]


    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    Opt('GUIOnEventMode', 1)
    Global $aButtons[17] = ['7', '8', '9', '+', '4', '5', '6', '-', '1', '2', '3', '*', 'C', '0', '.', '/', '=']
    Global $aKeys[17] = [ _
    '{NUMPAD7}', '{NUMPAD8}', '{NUMPAD9}', '{NUMPADADD}', _
    '{NUMPAD4}', '{NUMPAD5}', '{NUMPAD6}', '{NUMPADSUB}', _
    '{NUMPAD1}', '{NUMPAD2}', '{NUMPAD3}', '{NUMPADMULT}', _
    '{DEL}', '{NUMPAD0}', '{NUMPADDOT}', '{NUMPADDIV}', _
    '{ENTER}']
    Global $aAccelKeys[17][2], $ahButtons[17]

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

    $hGui = GUICreate('Taschenrechner', 290, 380)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End')
    $hOutput = GUICtrlCreateLabel('', 32, 20, 234, 28, $SS_RIGHT, $WS_EX_STATICEDGE)
    GUICtrlSetFont(-1, 18)
    GUICtrlSetBkColor(-1, 0xFFFFAA)
    For $i = 0 To 16
    If $i = 16 Then
    $ahButtons[$i] = GUICtrlCreateButton($aButtons[$i], 96, 72 + Int($i / 4) * 64, 106, 32)
    Else
    $ahButtons[$i] = GUICtrlCreateButton($aButtons[$i], 32 + Mod($i, 4) * 64, 72 + Int($i / 4) * 64, 42, 42)
    EndIf
    GUICtrlSetFont(-1, 16, 600)
    GUICtrlSetOnEvent(-1, '_Input')
    $aAccelKeys[$i][0] = $aKeys[$i]
    $aAccelKeys[$i][1] = $ahButtons[$i]
    Next
    GUISetAccelerators($aAccelKeys, $hGui)
    GUISetState()
    While True
    Sleep(50)
    WEnd

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

    Func _End()
    Exit
    EndFunc ;==>_End

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

    Func _Input()
    Local $iPressed = @GUI_CtrlId - $ahButtons[0]
    Switch $iPressed
    Case 16 ; "=" gedrückt
    GUICtrlSetData($hOutput, Execute(GUICtrlRead($hOutput)))
    Case 12 ; "C" gedrückt
    GUICtrlSetData($hOutput, '')
    Case Else ; restliche Tasten
    GUICtrlSetData($hOutput, GUICtrlRead($hOutput) & $aButtons[$iPressed])
    EndSwitch
    EndFunc ;==>_Input

    [/autoit]
  • Pixel Farbtoleranz?

    • Oscar
    • 21. August 2009 um 04:17

    Das liegt wohl daran, dass es in 99% der Fälle (Erfahrungswert), in denen das Wort PixelSearch auftaucht, um irgendeinen Gamebot geht.

  • Link ClipGet Detektor

    • Oscar
    • 20. August 2009 um 16:19

    Bei XP klappt's! ;)
    Vielleicht mal mit

    [autoit]

    #RequireAdmin

    [/autoit]


    am Scriptanfang versuchen?!

  • Fragen

    • Oscar
    • 20. August 2009 um 16:14

    TimBlo: Ich glaube nicht, dass Du das zu entscheiden hast. Im übrigen hat Raupi recht. Sowas gehört hier ins Talk-Forum. In den anderen Foren ist das Spam und führt dazu, dass das hierher verschoben wird. Im Extremfall zu einer Verwarnung usw...

  • Mein Neuer Rechner

    • Oscar
    • 19. August 2009 um 19:16
    Zitat von nof@ker2

    ich verstehe weniger etwas von Hardware

    Zitat von nof@ker2

    ...und dann selber zusammenbauen.

    Davon würde ich dann dringend abraten. Oder Du solltest Dir jemanden suchen, der Ahnung hat und Dir beim zusammenbauen helfen kann.
    Andernfalls führt das schnell zu einem vorzeitigen Ableben Deines neuen Rechners oder er wird erst gar nicht zum Leben erweckt.

    Ansonsten musst Du eine Entscheidung treffen, ob AMD- oder Intel-System und ATI- oder NVidia-Grafikkarte.

    Ich bin AMD-/ATI-Fan, aber einige schwören ja auf Intel und/oder NVidia. :rolleyes:

  • Link ClipGet Detektor

    • Oscar
    • 19. August 2009 um 18:44

    Dann mach ich mal ein wenig weiter:

    Spoiler anzeigen
    [autoit]


    #include <StructureConstants.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    Opt('GUIOnEventMode', 1)
    $hGui = GUICreate('Link ClipGet Detektor', 640, 480)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End')
    $hListView = GUICtrlCreateListView('Link', 5, 5, 630, 400, $LVS_SHOWSELALWAYS)
    GUICtrlCreateButton('markierte Einträge löschen', 5, 420, 150, 25)
    GUICtrlSetOnEvent(-1, '_DeleteItems')
    GUISetState()
    GUIRegisterMsg($WM_NOTIFY, 'WM_NOTIFY')

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

    $sOld = ''
    ClipPut($sOld)
    While True
    $sClipboard = ClipGet()
    If $sClipboard <> $sOld Then
    $sOld = $sClipboard
    $aLink = StringRegExp($sClipboard, '(http://[a-zA-Z0-9_\-\+\?\.\=\|/&%$#]+)', 3)
    If IsArray($aLink) Then
    $sOldSep = Opt('GUIDataSeparatorChar', ' ')
    For $i = 0 To UBound($aLink) - 1
    GUICtrlCreateListViewItem($aLink[$i], $hListView)
    Next
    Opt('GUIDataSeparatorChar', $sOldSep)
    _GUICtrlListView_SetColumnWidth($hListView, 0, $LVSCW_AUTOSIZE)
    EndIf
    EndIf
    Sleep(100)
    WEnd

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

    Func _End()
    Exit
    EndFunc ;==>_End

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

    Func _DeleteItems()
    _GUICtrlListView_DeleteItemsSelected($hListView)
    EndFunc ;==>_DeleteItems

    [/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')
    Switch $hWndFrom
    Case $hWndListView
    Switch $iCode
    Case $NM_DBLCLK ; Sent by a list-view control when the user double-clicks an item with the left mouse button
    ShellExecute(_GUICtrlListView_GetItemTextString($hListView))
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

    [/autoit]


    Doppelklick auf einen Listview-Eintrag öffnet den Standard-Browser mit dem angeklickten Link.

  • _MultiFileCopy

    • Oscar
    • 19. August 2009 um 17:11

    Auch wenn es jetzt funktioniert.
    Wenn Du nochmal eine Fehlfunktion feststellst, bitte möglichst viele Angaben zur möglichen Fehlerquelle machen. Dazu gehören:
    - Welches Betriebssystem?
    - Ausführung als Script oder compilierte Exe?
    - Wie rufst Du die Funktion auf (am besten Dein Script posten)?
    - Welche Fehlermeldung erscheint (die hast Du ja gepostet)?

    So kann man dann leichter nachvollziehen, wie und warum dort ein Fehler auftritt. :)

  • Musik-Quiz

    • Oscar
    • 18. August 2009 um 19:33

    @Xeno: Coole UDF! :thumbup:
    Dann kann ich ja doch wieder alles auf AutoIt-only umstellen. :)

  • Musik-Quiz

    • Oscar
    • 18. August 2009 um 18:51

    Das auslesen geschieht mit dieser Funktion:

    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]

    und das speichern der ID3-Tags mit dieser Funktion (und einem externen Programm:(

    Spoiler anzeigen
    [autoit]


    Func _ID3Save()
    Local $Path, $Artist, $Title
    $Path = GUICtrlRead($hFilePath)
    $Artist = GUICtrlRead($hInterpret)
    $Title = GUICtrlRead($hTitle)
    RunWait(@ScriptDir & '\sys\id3.exe -12 -a "' & $Artist & '" -t "' & $Title & '" "' & $Path & '"', @ScriptDir, @SW_HIDE)
    $aTmp = _getID3Tag($Path)
    $aShowMP3[$ButtonPressed][0] = $aTmp[1]
    $aShowMP3[$ButtonPressed][1] = $aTmp[0]
    $tmp = StringReplace($aTmp[1], '&', '&&') & @CRLF & Chr(34) & StringReplace($aTmp[0], '&', '&&') & Chr(34)
    GUICtrlSetData($aButton[$ButtonPressed], $tmp)
    GUISetState(@SW_HIDE, $hGuiID3)
    WinActivate($sTitle)
    EndFunc ;==>_ID3Save

    [/autoit]
  • Was stimmt hier nicht?

    • Oscar
    • 17. August 2009 um 12:09

    "*.avi" ist nicht automatisch ein Platzhalter.
    Du musst schon auf die Dateiendung testen:

    Spoiler anzeigen
    [autoit]


    Func _Mediaplay()
    If StringRight($File, 3) = "avi" Then
    $Avi1 = GUICtrlCreateAvi($File, -1, 8, 8, 612, 344)
    _GUICtrlAVI_Play($Avi1)
    ElseIf StringRight($File, 3) = "mp3" Then
    _SoundPlay($Opensound)
    EndIf
    EndFunc ;==>_Mediaplay
    Func _MediaStop()
    If StringRight($File, 3) = "avi" Then
    _GUICtrlAVI_Stop($Avi1)
    _GUICtrlAVI_Close($Avi1)
    ElseIf StringRight($File, 3) = "mp3" Then
    _SoundStop($Open)
    EndIf
    EndFunc ;==>_MediaStop
    Func _MediaPause()
    If StringRight($File, 3) = "avi" Then
    Sleep(100)
    ElseIf StringRight($File, 3) = "mp3" Then
    _SoundPause($Opensound)
    EndIf
    EndFunc ;==>_MediaPause

    [/autoit]

    Wobei ich bezweifeln möchte, dass die _Soundbefehle funktionieren. Aber das kann man, ohne das restliche Script zu kennen, nicht endgültig sagen.

  • Alles Gute blubbstar.

    • Oscar
    • 17. August 2009 um 04:32

    Herzlichen Glückwunsch auch von mir. :)


    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

  • Random zugehörigkeit

    • Oscar
    • 16. August 2009 um 00:13

    Und so wäre die Anzahl der Schleifendurchläufe immer gleich:

    [autoit]


    Local $aRandom[40]
    For $i = 1 To 40
    $aRandom[$i - 1] = $i
    Next
    $sRandom = ''
    For $i = 0 To 4
    $random = Random(0, 39 - $i, 1)
    $sRandom &= $aRandom[$random] & ';'
    $aRandom[$random] = $aRandom[39 - $i]
    Next

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

    ConsoleWrite(StringTrimRight($sRandom, 1) & @CRLF)

    [/autoit]
  • Wie schnell läuft das Spiel bei euch?

    • Oscar
    • 15. August 2009 um 04:22

    Win XP, Zune-Style, AMD Phenom II X4 940 (4x3.0 GHz), 4GB (3.25) RAM, ATI HD3870 (1920x1200)

    Bei False ist der Balken zu 100% im grünen Bereich und bei True ca. zu 25% im grünen Bereich. Jeweils mit maximaler Fenstergröße.

  • Kann man 2 Schleifen irgendwie Parallel laufen lassen?

    • Oscar
    • 14. August 2009 um 12:45

    Die Funktion "_OnlineCheck" würde ich lieber so schreiben:

    Spoiler anzeigen
    [autoit]


    Func _OnlineCheck()
    TCPStartup()
    If TCPNameToIP("Maximilian") <> "" Then
    GUICtrlSetData($Max, "Online")
    GUICtrlSetColor($Max, 0x00ff00)
    Else
    GUICtrlSetData($Max, "Offline")
    GUICtrlSetColor($Max, 0xff0000)
    EndIf
    If TCPNameToIP("Franziska") <> "" Then
    GUICtrlSetData($Franziska, "Online")
    GUICtrlSetColor($Franziska, 0x00ff00)
    Else
    GUICtrlSetData($Franziska, "Offline")
    GUICtrlSetColor($Franziska, 0xff0000)
    EndIf
    If TCPNameToIP("BENNE-PC") <> "" Then
    GUICtrlSetData($Benedikt, "Online")
    GUICtrlSetColor($Benedikt, 0x00ff00)
    Else
    GUICtrlSetData($Benedikt, "Offline")
    GUICtrlSetColor($Benedikt, 0xff0000)
    EndIf
    If TCPNameToIP("VICI-PC") <> "" Then
    GUICtrlSetData($Victoria, "Online")
    GUICtrlSetColor($Victoria, 0x00ff00)
    Else
    GUICtrlSetData($Victoria, "Offline")
    GUICtrlSetColor($Victoria, 0xff0000)
    EndIf
    If TCPNameToIP("SYLVIA-PC") <> "" Then
    GUICtrlSetData($Mama, "Online")
    GUICtrlSetColor($Mama, 0x00ff00)
    Else
    GUICtrlSetData($Mama, "Offline")
    GUICtrlSetColor($Mama, 0xff0000)
    EndIf
    TCPShutdown()
    EndFunc ;==>_OnlineCheck

    [/autoit]


    TCPNameToIP ist deutlich schneller als Ping. Wenn der PC online ist ganz besonders.

  • Überflüssige Zeilenumbrüche entfernen

    • Oscar
    • 14. August 2009 um 11:41

    Naja, Performance spielt hier ja eher keine Rolle, aber an sich hast Du recht. Der Befehl muss ja nicht jedes Mal ausgeführt werden:

    Spoiler anzeigen
    [autoit]


    #include <Constants.au3>
    TCPStartup()
    $Ziel = TCPNameToIP('www.google.de')
    $PING_ret = Run(@ComSpec & " /c PING " & $Ziel, @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
    $line = ''
    Do
    Sleep(50)
    $line = $line & StdoutRead($PING_ret)
    Until @error
    $line = StringRegExpReplace($line, '\v{2,}', @CRLF)
    MsgBox(0, 0, $line)
    TCPShutdown()

    [/autoit]


    Der Sleepwert ist auch etwas hoch gewesen (verzögert nur das Ende der Schleife) und sollte hinter dem If stehen, damit die Schleife sofort nach dem @error verlassen werden kann.

    Edit: Oder mit Do...Until.

  • Überflüssige Zeilenumbrüche entfernen

    • Oscar
    • 14. August 2009 um 11:31

    Vielleicht so:

    Spoiler anzeigen
    [autoit]


    #include <Constants.au3>
    TCPStartup()
    $Ziel = TCPNameToIP('www.google.de')
    $PING_ret = Run(@ComSpec & " /c PING " & $Ziel, @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
    $line = ''
    While 1
    Sleep(1000)
    $line = $line & StdoutRead($PING_ret)
    If @error Then ExitLoop ; wenn ein Fehler beim Lesen aufgetreten ist verlassen
    $line = StringRegExpReplace($line, '\v{2,}', @CRLF)
    WEnd
    MsgBox(0, 0, $line)
    TCPShutdown()

    [/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™