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

  • Vom HomeServer aus Software installieren

    • Oscar
    • 14. August 2009 um 10:58

    Das lässt sich mit einer einfachen Elektronik-Schaltung nicht machen. Dazu musst Du schon eine MicroController-Schaltung benutzen.
    Davon habe ich aber auch keine Ahnung. Vielleicht fragst Du mal in diesem Forum.

  • Problem mit Window Screens

    • Oscar
    • 14. August 2009 um 09:03

    Vielleicht so (nicht besonders Ressourcenschonend):

    Spoiler anzeigen
    [autoit]


    #include <ScreenCapture.au3>
    ShellExecute('calc.exe')
    WinWait('Rechner')
    $handle = WinGetHandle('Rechner')
    $hGUI = GUICreate("Screen Capture", 400, 300)
    $hPic = GUICtrlCreatePic('', 0, 0, 400, 300)
    GUISetState()
    Do
    _ScreenCapture_CaptureWnd(@ScriptDir & 'Screenshot.jpg', $handle)
    GUICtrlSetImage($hPic, @ScriptDir & 'Screenshot.jpg')
    Until GUIGetMsg() = -3

    [/autoit]
  • TS Power tool

    • Oscar
    • 14. August 2009 um 08:09

    -Thema verschoben-

  • If...Then...Else

    • Oscar
    • 13. August 2009 um 22:47

    Else ist dazu da, wenn die Bedingung nach If nicht zutriftt. Zum Beispiel:

    [autoit]


    If WinExists("Untitled -") Then
    MsgBox(0, "", "Window exists")
    Else
    MsgBox(0, "", "Window not exists")
    EndIf

    [/autoit]
  • Vom HomeServer aus Software installieren

    • Oscar
    • 13. August 2009 um 22:44

    Nein, das $-Zeichen ist nur für die Standard-Admin-Freigaben. Wenn Du eigene anlegst, musst Du das so eintragen, wie der Freigabename lautet.

  • AMD oder Intel ?

    • Oscar
    • 13. August 2009 um 22:42

    Wie oben schon erwähnt habe ich auch eine ATI. Allerdings noch die HD 3870 und mit der spiele ich z.B. "Call of duty 5" in einer Auflösung von 1920x1200 auf einem 24" Monitor.
    Die 4870 ist ja noch etwas besser, also voll geeignet. :)

  • Vom HomeServer aus Software installieren

    • Oscar
    • 13. August 2009 um 21:55

    Benutze einfach den Freigabepfad z.B.:

    [autoit]

    ShellExecute("\\[Servername]\c\installation\setup.exe")

    [/autoit]
  • If...Then...Else

    • Oscar
    • 13. August 2009 um 21:28

    Erstmal: Dein Beispiel kann nicht funktionieren, weil MsgBox die weitere Ausführung des Script verhindert.
    Aber unabhängig davon, solltest Du zum testen, ob sich ein bestimmtes Fenster öffnet lieber WinExists() benutzen:

    [autoit]


    If WinExists("Untitled -") Then
    MsgBox(0, "", "Window exists")
    EndIf

    [/autoit]
  • AMD oder Intel ?

    • Oscar
    • 13. August 2009 um 21:20

    "AMD für Spiele ungeeignet" ist doch völliger Unsinn!
    Ich habe den gleichen Prozessor, dazu 4GB DDR2-RAM und eine AMD(ATI) 3870er Grafikkarte.
    Reicht (mir) völlig. Auch zum spielen.
    Heutzutage vielleicht eine 4890er Grafikkarte (so es das Budget zulässt) dazu.

  • Wochentag(e) nach Datum umwandeln

    • Oscar
    • 13. August 2009 um 20:51

    Wie lange ich gebraucht habe?
    Kann ich nicht so genau sagen. Im Großen und Ganzen habe ich die Funktion heute vormittag geschrieben. Zwischendurch habe ich aber noch gefrühstückt, also eine genaue Stundenzahl kann ich nicht angeben. ;)

  • Datei liste aus Lisview übernehmen neue erzeugen und aktuellste datei anzeigen?

    • Oscar
    • 13. August 2009 um 16:30

    Du musst schonmal posten, was im Listview "$LV" drinsteht, sonst kann man den Pfad nicht zusammensetzen.
    Hier wird vermutlich der Pfad nicht stimmen:

    [autoit]

    $aImageList = _FileListToArray($imagepath & $ListViewText, '*', 1)

    [/autoit]
  • Datei liste aus Lisview übernehmen neue erzeugen und aktuellste datei anzeigen?

    • Oscar
    • 13. August 2009 um 16:16

    Ohne den genauen Inhalt von $LV zu kennen, würde ich sagen so:

    Spoiler anzeigen
    [autoit]


    Func _checknewest()
    Local $icount, $sNewest, $iNewest
    _GUICtrlListView_DeleteAllItems($LVNP)
    If StringRight($imagepath, 1) <> '\' Then $imagepath &= '\'
    $icount = _GUICtrlListView_GetItemCount($LV)
    For $i = 0 To $icount - 1
    $ListViewText = _GUICtrlListView_GetItemText($LV, $i)
    $aImageList = _FileListToArray($imagepath & $ListViewText, '*', 1)
    If Not @error Then
    $sNewest = '0000/00/00'
    $iNewest = 0
    For $j = 1 To $aImageList[0]
    $sDate = StringRegExpReplace(FileGetTime($imagepath & $ListViewText & '\' & $aImageList[$j], 0, 1), '(\d{4})(\d{2})(\d{2}).+', '$1/$2/$3')
    If $sDate > $sNewest Then
    $sNewest = $sDate
    $iNewest = $j
    EndIf
    Next
    GUICtrlCreateListViewItem($imagepath & $ListViewText & '\' & $aImageList[$iNewest], $LVNP)
    EndIf
    Next
    EndFunc ;==>_checknewest

    [/autoit]
  • menü anzeigen

    • Oscar
    • 13. August 2009 um 15:45

    Natürlich ist sowas möglich. :)
    Wo kommst Du denn nicht weiter?

  • Wochentag(e) nach Datum umwandeln

    • Oscar
    • 13. August 2009 um 13:01

    Für ein Projekt brauchte ich gerade eine Funktion zum umwandeln von Wochentagen (Mo, Di, Mi usw.) in das konkrete Datum (Format: 2009/08/13). Dabei sollte man auch Wochentagsintervalle (z.B. Mo-Fr) angeben können.
    Es gibt die Möglichkeit vom Bezugsdatum aus in der Vergangenheit ($bTime = False) oder in der Zukunft ($bTime = True) die Daten ausgeben zu lassen.
    Naja, rausgekommen ist diese Funktion:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3> ; wird für die Funktion benötigt
    #include <Date.au3> ; wird für die Funktion benötigt

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

    ; Beispiele -Anfang-
    $aDate = _DayIntervalToDateArray('Mo-Sa')
    _ArrayDisplay($aDate, 'Intervall = Mo-Sa')
    $aDate = _DayIntervalToDateArray('MI.-fr.', False)
    _ArrayDisplay($aDate, 'Intervall = MI.-fr.')
    $aDate = _DayIntervalToDateArray('Do.')
    _ArrayDisplay($aDate, 'Intervall = Do.')
    $aDate = _DayIntervalToDateArray('Do.', False)
    _ArrayDisplay($aDate, 'Intervall = letzter Do.')
    $aDate = _DayIntervalToDateArray('So.', False, 2009, 12, 24) ; gesucht: Sonntag vor Heiligabend
    _ArrayDisplay($aDate, 'Intervall = So. vor Heiligabend')
    ; Beispiele -Ende-

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

    ;===============================================================================
    ; Function Name: _DayIntervalToDateArray($sInterval[, $bTime = True][, $iYear = @YEAR][, $iMonth = @MON][, $iDay = @MDAY])
    ; Description:: gibt ein Array mit Daten zurück, die dem übergebenen Wochentagsintervall entsprechen
    ; Parameter(s): $sIntervall = Wochentag oder ein Intervall (von...bis)
    ; $bTime = False (Vergangenheit) oder True (Zukunft)
    ; $iYear, $iMonth, $iDay = Falls man ein anderes Bezugsdatum angeben will
    ; Requirement(s): #include <Array.au3>
    ; #include <Date.au3>
    ; Return Value(s): nullbasiertes Array
    ; im Fehlerfall: Rückgabe = "0" und @error = 1
    ; Author(s): Oscar (http://www.autoit.de)
    ;===============================================================================
    Func _DayIntervalToDateArray($sInterval, $bTime = True, $iYear = @YEAR, $iMonth = @MON, $iDay = @MDAY)
    Local $aInterval = StringSplit($sInterval, '-')
    If $aInterval[0] > 2 Then Return SetError(1, 0, 0)
    Local $aWeekDay[7][2] = [['Mo', 0],['Di', 1],['Mi', 2],['Do', 3],['Fr', 4],['Sa', 5],['So', 6]]
    Local $aDay[2] = [-1, -1], $aDate[1], $iDateSub, $iTimeFormat
    For $i = 1 To $aInterval[0]
    For $j = 0 To UBound($aWeekDay) - 1
    If StringInStr($aInterval[$i], $aWeekDay[$j][0]) Then
    $aDay[$i - 1] = $aWeekDay[$j][1]
    ExitLoop
    EndIf
    Next
    Next
    If $aDay[0] = -1 Then Return SetError(1, 0, 0)
    If $aDay[1] > -1 Then ; Wenn ein "von-bis-Intervall" übergeben wurde, dann...
    ReDim $aDate[$aDay[1] - $aDay[0] + 1]
    For $i = 0 To $aDay[1] - $aDay[0] ; Alle Wochentage aus dem Intervall
    $iDateSub = ($aWeekDay[$aDay[0] + $i][1] - 6) + (6 - _DateToDayOfWeekISO($iYear, $iMonth, $iDay)); (gesuchter Wochentag - 6) + (6 - heute)
    If $bTime Then
    If $iDateSub < 0 Then $iDateSub += 7 ; wenn der Wochentag kleiner heute, dann nächste Woche
    Else
    If $iDateSub >= 0 Then $iDateSub -= 7 ; wenn der Wochentag größer/gleich heute, dann letzte Woche
    EndIf
    $aDate[$i] = _DateAdd('D', $iDateSub, StringFormat('%04i/%02i/%02i', $iYear, $iMonth, $iDay)) ; Datum vom Wochentag ins Ausgabe-Array
    Next
    Else ; ansonsten wurde nur ein einzelner Wochentag übergeben
    $iDateSub = ($aWeekDay[$aDay[0]][1] - 6) + (6 - _DateToDayOfWeekISO($iYear, $iMonth, $iDay)); (gesuchter Wochentag - 6) + (6 - heute)
    If $bTime Then
    If $iDateSub < 0 Then $iDateSub += 7 ; wenn der Wochentag kleiner heute, dann nächste Woche
    Else
    If $iDateSub >= 0 Then $iDateSub -= 7 ; wenn der Wochentag größer/gleich heute, dann letzte Woche
    EndIf
    $aDate[0] = _DateAdd('D', $iDateSub, StringFormat('%04i/%02i/%02i', $iYear, $iMonth, $iDay)) ; Datum vom Wochentag ins Ausgabe-Array
    EndIf
    _ArraySort($aDate) ; Ausgabe-Array sortieren
    Return $aDate
    EndFunc ;==>_DayIntervalToDateArray

    [/autoit]

    Im Script sind diverse Beispiele aufgeführt, wie man die Funktion nutzen kann. Die Beispiele erklären die Funktion wohl besser, als 1000 Worte. ;)
    Vielleicht braucht ja noch jemand so eine Funktion. :)

  • StringSplit

    • Oscar
    • 13. August 2009 um 12:46

    Oder mit RegExp:

    [autoit]


    $text = '\\server\share\order1\dummy.txt'
    MsgBox(0, "", StringRegExpReplace($text, '(.+\\).*', '$1'))

    [/autoit]
  • Bunte Labels erzeugen

    • Oscar
    • 13. August 2009 um 12:43

    Super umgesetzt! Habe ich auch gleich mal archiviert. :thumbup:

  • Ist GUICtrlSetOnEvent schneller als eine While + GUIGetMsg -Loop?

    • Oscar
    • 13. August 2009 um 09:52

    Hmmm...war es früher nicht mal so, dass der Sleepwert in der Endlosschleife die Reaktionzeit der Events beeinflusst hat?
    Sprich: Man durfte den Wert nicht zu groß wählen, weil dann die Events (z.B. Buttonklick) erst später ausgeführt wurden?
    Ich hab das gerade mal ausgetestet:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    Opt('GUIOnEventMode', 1)
    GUICreate('Test', 400, 200)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End')
    GUICtrlCreateButton('Testbutton', 30, 30, 100, 25)
    GUICtrlSetOnEvent(-1, '_Button')
    GUISetState()

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

    While True
    Sleep(100000)
    WEnd

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

    Func _End()
    Exit
    EndFunc

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

    Func _Button()
    MsgBox(0, 'Test', 'Test')
    EndFunc

    [/autoit]


    Trotz des hohen Sleepwerts reagiert der Button sofort. Oder war das schon immer so und es ist mir jetzt erst aufgefallen? ^^

    Was mich am MessageLoop-Modus stört ist die dynamische Rechenzeit-Zuweisung. Wenn der User z.B. die Maus bewegt, wird dem Script mehr Rechenzeit zugewiesen (die Schleife wird öfter ausgeführt).
    Ein kleines Beispielscript verdeutlicht dieses:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    GUICreate('Test', 400, 200)
    $hCount = GUICtrlCreateLabel('0', 30, 30, 100, 25)
    GUISetState()
    Do
    GUICtrlSetData($hCount, GUICtrlRead($hCount) + 1)
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

    [/autoit]


    Der Zähler läuft schneller, wenn die Maus bewegt wird.

  • [Speed] Autoit vs. C

    • Oscar
    • 12. August 2009 um 15:40

    Klar ist C schneller, aber gerade die While-Schleife dafür zu verwenden...
    For...Next ist in dem Fall deutlich schneller:

    Spoiler anzeigen
    [autoit]


    $iTimer = TimerInit()
    $mytest = 0
    While ($mytest < 1000000)
    $mytest += 1
    WEnd
    ConsoleWrite('While...WEnd:' & TimerDiff($iTimer)&@CR)

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

    $iTimer = TimerInit()
    $mytest = 0
    Do
    $mytest += 1
    Until $mytest = 1000000
    ConsoleWrite('Do...Until:' & TimerDiff($iTimer)&@CR)

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

    $iTimer = TimerInit()
    $mytest = 0
    For $i = 0 To 1000000
    $mytest += 1
    Next
    ConsoleWrite('For...Next:' & TimerDiff($iTimer)&@CR)

    [/autoit]
  • Kleines Problem

    • Oscar
    • 12. August 2009 um 15:23

    Nun, vermutlich wird kein UPnP-Device gefunden. In dem Fall existiert das Object nicht und es kommt die Fehlermeldung.

  • Doppelte Dateien finden und nach abfrage weiterverarbeiten

    • Oscar
    • 11. August 2009 um 16:38

    Wenn Du Zahlen vergleichen willst, musst Du das AutoIt mitteilen, ansonsten werden die Werte als String interpretiert:

    Spoiler anzeigen
    [autoit]


    For $i = 1 To $ini[0]
    $number1 = Number(IniRead($nvs[$i], "test", "test1", ""))
    $number2 = Number(IniRead($nvs[$i + 1], "test", "test1", ""))
    If $number1 < $number2 Then
    MsgBox(0, "", "ist" & $number1 & "kleiner als" & $number2 & '?')
    EndIf
    If $number1 > $number2 Then
    MsgBox(0, '', $number1 & ' bigger than ' & $number2)
    EndIf
    Next

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