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

  • Fragen zur GUI erstellung mit variabeln Daten

    • Oscar
    • 13. Oktober 2009 um 15:39

    Ja! :D

    Im Ernst: Du musst schon mehr ins Detail gehen und erklären was Du vorhast. So eine allgemeine Frage kann man nur mit "Ja" beantworten.

  • _SecondsToDateTime

    • Oscar
    • 13. Oktober 2009 um 15:26

    Jo, funktioniert. :thumbup:
    Wobei ich eine "pure AutoIt" Lösung (ohne DLL-Einsatz) ganz cool fände.

  • _SecondsToDateTime

    • Oscar
    • 13. Oktober 2009 um 12:01

    chip: Nee, das ist nicht ganz das Gleiche. Der Timestamp soll komplett umgewandelt werden, also auch YYYY/MM/DD. Das ist nämlich gar nicht so einfach, weil man die unterschiedlich langen Monate und die Schaltjahre beachten muss.

  • _SecondsToDateTime

    • Oscar
    • 13. Oktober 2009 um 11:46

    Du meinst "Timestamp" nach "YYYY/MM/DD hh:mm:ss"?
    Wüsste nicht, dass es da eine Funktion gibt. Wenn Du eine hast, dann her damit. :)
    Brauche das zwar im Moment nicht, aber solche Funktionen archiviere ich mir immer, für den Fall, dass man sie mal braucht.

  • _SecondsToDateTime

    • Oscar
    • 13. Oktober 2009 um 05:07

    Eine kleine Funktion zum umwandeln von Sekunden in einen String mit Zeitangaben:

    Spoiler anzeigen
    [autoit]


    ; Beispiele für die dynamische Länge des Ausgabestrings
    MsgBox(0, 'Minuten, Sekunden', _SecondsToDateTime(87))
    MsgBox(0, 'Stunden, Minuten, Sekunden', _SecondsToDateTime(3600))
    MsgBox(0, 'Tage, Stunden, Minuten, Sekunden', _SecondsToDateTime(99678))
    MsgBox(0, 'Wochen, Tage, Stunden, Minuten, Sekunden', _SecondsToDateTime(6178912))

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

    ; Beispiel für einen Countdown
    #include <Date.au3>
    $bStop = False
    HotKeySet('{ESC}', '_Stop')
    Do
    $iDiff = _DateDiff('s', '2010/01/01 00:00:00', _NowCalc())
    ToolTip(_SecondsToDateTime($iDiff), @DesktopWidth / 2 - 100, 2, '[ESC] = beenden', 1, 4)
    Sleep(500)
    Until $bStop
    Exit

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

    Func _Stop()
    $bStop = True
    EndFunc ;==>_Stop

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

    ;===============================================================================
    ; Function Name..: _SecondsToDateTime($iSeconds[, $iLang])
    ; Description....: Umwandlung von Sekunden in einen String mit Zeitangaben
    ; Parameter(s)...: $iSeconds = Wert in Sekunden
    ; $iLang
    ; 0 = Ausgabe in deutsch
    ; 1 = Ausgabe in englisch
    ; Return Value...: String (Wochen, Tage, Stunden, Minuten, Sekunden)
    ; Author.........: Oscar (http://www.autoit.de)
    ;===============================================================================
    Func _SecondsToDateTime($iSeconds, $iLang = 0)
    If $iLang < 0 Or $iLang > 1 Then $iLang = 0
    Local $sOut = '', $bCheck = False, $bNegative = False, $aDiv[5] = [604800, 86400, 3600, 60, 1]
    Local $aFormat[5][2] = [['Wochen', 'Weeks'],['Tage', 'Days'],['Stunden', 'Hours'],['Minuten', 'Minutes'],['Sekunden', 'Seconds']]
    If $iSeconds = 0 Then Return '0 ' & $aFormat[4][$iLang]
    If $iSeconds < 0 Then
    $bNegative = True
    $iSeconds = Abs($iSeconds)
    EndIf
    For $i = 0 To 4
    If ($iSeconds >= $aDiv[$i]) Or $bCheck Then
    $sOut &= Int($iSeconds / $aDiv[$i]) & ' '
    If Int($iSeconds / $aDiv[$i]) = 1 Then
    $sOut &= StringTrimRight($aFormat[$i][$iLang], 1) & ', '
    Else
    $sOut &= $aFormat[$i][$iLang] & ', '
    EndIf
    $bCheck = True
    EndIf
    $iSeconds = Mod($iSeconds, $aDiv[$i])
    Next
    If $bNegative Then $sOut = ' - ' & $sOut
    Return StringTrimRight($sOut, 2)
    EndFunc ;==>_SecondsToDateTime

    [/autoit]

    Dateien

    _SecondsToDateTime.au3 2,2 kB – 257 Downloads
  • Deutsche Hilfe - Funktionen ohne Beispiel

    • Oscar
    • 12. Oktober 2009 um 20:39

    Zu _WinAPI_GetSystemMetrics sollte man vielleicht die Liste mit den möglichen Werten sowie die Bedeutung aufnehmen: GetSystemMetrics

  • FileInstall

    • Oscar
    • 11. Oktober 2009 um 21:50

    Raupi : Beim Source-Path ja, aber dort hat er ja keine Variable benutzt.

    Ich denke, der Fehler liegt daran, dass das Zielverzeichnis nicht existiert. FileInstall erstellt keine Verzeichnisse.

  • Alles gute ProgAndy

    • Oscar
    • 11. Oktober 2009 um 21:18

    Auch von mir alles Gute zum Geburtstag. Mach weiter so. :thumbup:

  • KKKEEEYYYLLLOOOOGGGEEERRRR PROBLEM PROBLEM PROBLEM PROBLEM PROBLEM

    • Oscar
    • 11. Oktober 2009 um 20:58

    Don't feed the troll.
    [Thread closed]

    Edit BugFix: Habe den absolut unnützen Part von wechselseitigen Schmähreden gelöscht. Wir sollten schon die Größe aufbringen und auf solche geistig unterbelichtetes Machwerk gar nicht reagieren.

  • ToolTip mit Schatten

    • Oscar
    • 11. Oktober 2009 um 08:32

    Und? Teils Du uns Deine Lösung auch mit?

  • ToolTip mit Schatten

    • Oscar
    • 10. Oktober 2009 um 23:57

    Ich hatte mal so einen erweiterten Tooltip gemacht (allerdings ohne Bild):

    Spoiler anzeigen
    [autoit]


    #NoTrayIcon ; Trayicon erstmal verstecken
    #include<WindowsConstants.au3>
    #include<GUIConstantsEx.au3>
    #include<IE.au3>

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

    Opt('GUIOnEventMode', 1) ; OnEventMode für die GUI
    Opt('TrayOnEventMode', 1) ; OnEventMode für das Traymenü
    Opt('TrayMenuMode', 1) ; Standard-Traymenü entfernen

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

    $sTitle = 'ExTooltip'
    $BgColor = 0xFFFFDF ; Hintergrundfarbe
    $ShColor = 0x666666 ; Schattenfarbe
    $Width = 500 ; Breite des Fensters
    $Height = 300 ; Höhe des Fensters
    $Left = Int(@DesktopWidth/2-$Width/2) ; Horizontale Position (zentriert)
    $Top = Int(@DesktopHeight/2-$Height/2) ; Vertikale Position (zentriert)

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

    $sSourceFile = @ScriptDir & '\beispieltext.txt'
    $sDestFile = @ScriptDir & '\beispieltext.html'
    $sIconPath = @SystemDir & '\shell32.dll'

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

    $sHTML = _Txt2HTML($sSourceFile) ; Den Text aus der Txt-Datei in HTML umwandeln

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

    $hFile = FileOpen($sDestFile, 2) ; Zieldatei zum schreiben öffnen
    FileWrite($hFile, $sHTML) ; HTML in Datei schreiben
    FileClose($hFile) ; Datei schließen

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

    Global Const $WS_EX_COMPOSITED = 0x02000000 ; Windows XP: Paints all descendants of a window in bottom-to-top painting order using double-buffering.

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

    $oIE = _IECreateEmbedded() ; Einen "eingebetteten" IE erstellen
    If @error Then Exit MsgBox(16+262144, $sTitle, 'Objekt konnte nicht erstellt werden!') ; Falls dabei ein Fehler auftrat, Programm beenden

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

    $hGui = GUICreate($sTitle, $Width, $Height, $Left, $Top, BitOR($WS_SIZEBOX, $WS_POPUPWINDOW, $WS_CLIPCHILDREN), BitOR($WS_EX_TOOLWINDOW, $WS_EX_COMPOSITED)) ; Anzeigefenster erstellen
    GUISetBkColor($BgColor) ; Hintergrundfarbe setzen

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

    GUICtrlCreateObj($oIE, 10, 15, $Width-20, $Height-25) ; IE in die GUI integrieren
    GUICtrlSetResizing(-1, $GUI_DOCKBORDERS)
    _IENavigate($oIE, $sDestFile) ; die HTML-Seite aufrufen

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

    $hLabel = GUICtrlCreateLabel('', 0, 0, $Width, $Height, Default, $GUI_WS_EX_PARENTDRAG) ; transparentes Label zum bewegen des Fensters

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

    $hContextMenu = GUICtrlCreateContextMenu($hLabel) ; Kontextmenü erstellen
    GUICtrlCreateMenuItem('Minimieren', $hContextMenu) ; Minimieren-Eintrag erstellen
    GUICtrlSetOnEvent(-1, '_Minimize') ; dem Eintrag eine Funktion zuweisen
    GUICtrlCreateMenuItem('Beenden', $hContextMenu) ; Beenden-Eintrag erstellen
    GUICtrlSetOnEvent(-1, '_End') ; dem Eintrag eine Funktion zuweisen

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

    TraySetClick(8)
    TrayCreateItem('Wiederherstellen') ; Traymenüeintrag erstellen
    TrayItemSetOnEvent(-1, '_Restore') ; dem Eintrag eine Funktion zuweisen
    TrayCreateItem('Beenden') ; Traymenüeintrag erstellen
    TrayItemSetOnEvent(-1, '_End') ; dem Eintrag eine Funktion zuweisen

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

    $hShadow = GUICreate('Shadow', $Width, $Height, $Left, $Top, $WS_POPUP, BitOR($WS_EX_TOOLWINDOW, $WS_EX_TRANSPARENT)) ; Schattenfenster erzeugen
    GUISetBkColor($ShColor) ; Farbe des Schattens setzen
    WinSetTrans($hShadow, '', 128) ; Transparenz des Schattens einstellen
    _ShadowSize() ; Position und Größe des Schatten-Fensters setzen

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

    GUISetState(@SW_SHOW, $hShadow) ; Schatten anzeigen
    GUISetState(@SW_SHOW, $hGui) ; GUI anzeigen
    WinSetOnTop($hShadow, '', 1) ; Schatten immer im Vordergrund
    WinSetOnTop($hGui, '', 1) ; GUI immer im Vordergrund

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

    GUIRegisterMsg($WM_MOVE, '_ShadowMove') ; Funktion zum "Schatten verschieben" registrieren
    GUIRegisterMsg($WM_SIZE, '_ShadowSize') ; Funktion zum "Schatten anpassen" registrieren

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

    While True ; Endlosschleife
    Sleep(10) ; Prozessor entlasten
    WEnd

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

    Func _End()
    Exit
    EndFunc

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

    Func _Minimize()
    GUISetState(@SW_HIDE, $hShadow) ; Schatten verstecken
    GUISetState(@SW_HIDE, $hGui) ; GUI verstecken
    TraySetIcon($sIconPath, -24)
    TraySetState(1+4) ; Trayicon anzeigen
    EndFunc

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

    Func _Restore()
    GUISetState(@SW_SHOW, $hShadow) ; Schatten wiederherstellen
    GUISetState(@SW_SHOW, $hGui) ; GUI wiederherstellen
    TraySetState(2) ; Trayicon verstecken
    EndFunc

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

    Func _ShadowMove()
    Local $pos = WinGetPos($hGui) ; Fensterposition der GUI holen
    WinMove($hShadow, '', $pos[0]+6, $pos[1]+6) ; das Schatten-Fenster entsprechend verschieben
    EndFunc

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

    Func _ShadowSize()
    Local $pos = WinGetPos($hGui) ; Fensterdaten der GUI holen
    WinMove($hShadow, '', $pos[0]+6, $pos[1]+6, $pos[2], $pos[3]) ; das Schatten-Fenster entsprechend anpassen
    EndFunc

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

    Func _Txt2HTML($sFilename)
    If Not FileExists($sFilename) Then Return SetError(1,0,0)
    Local $aSource = StringSplit(FileRead($sFilename), @CRLF, 1)
    If Not IsArray($aSource) Then Return SetError(2,0,0)
    ; Das Array $aReplace enthält die Schlüsselwörter und die dazugehörigen URLs
    ; Diese Schlüsselwörter werden im generierten HTML-Dokument als Links erstellt
    Local $aReplace[5][2] = [ _
    ['AutoIt v3','www.autoitscript.com'], _
    ['Windows','de.wikipedia.org/wiki/Microsoft_Windows'], _
    ['Skriptsprache','de.wikipedia.org/wiki/Skriptsprache'], _
    ['PCs','de.wikipedia.org/wiki/Personal_Computer'], _
    ['VBScript','de.wikipedia.org/wiki/Visual_Basic_Script'] _
    ]
    Local $HTMLTitle = StringMid($sFilename, StringInStr($sFilename, '\', 0, -1)+1)
    Local $sDest = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">' & @CRLF & '<html>' & @CRLF
    $sDest &= '<head>' & @CRLF & '<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">' & @CRLF
    $sDest &= '<title>' & $HTMLTitle & '</title>' & @CRLF & '</head>' & @CRLF & '<body bgcolor="#FFFFCC">' & @CRLF
    ; In der folgenden Schleife werden die einzelnen Zeilen entweder als normaler Absatz
    ; oder als Überschrift erstellt.
    ; Wenn eine Zeile als Überschrift erstellt werden soll, darf die Zeile am Ende
    ; keines der folgenden Zeichen enthalten: ",.:!?" oder horizontales "Whitespace"
    For $i = 1 To $aSource[0]
    If $aSource[$i] = '' Then
    ContinueLoop
    ElseIf StringRegExp($aSource[$i], ',|\.|\:|!|\?|\h+\z') Then
    $sDest &= '<p align="justify">' & $aSource[$i] & '</p>' & @CRLF
    Else
    If $i = 1 Then
    $sDest &= '<h1>' & $aSource[$i] & '</h1>' & @CRLF
    Else
    $sDest &= '<h3>' & $aSource[$i] & '</h3>' & @CRLF
    EndIf
    EndIf
    Next
    $sDest &= '</body>' & @CRLF & '</html>' & @CRLF
    For $i = 0 To UBound($aReplace)-1
    $sDest = StringReplace($sDest, $aReplace[$i][0], '<a href="http://' & $aReplace[$i][1] & '" target="_blank">' & $aReplace[$i][0] & '</a>')
    Next
    Return $sDest
    EndFunc

    [/autoit]


    Da gibt's auch einen Schatten. Basiert im Prinzip auf einer zweiten GUI, die man mit der ersten verschiebt.

  • GuiLevelMeter - UDF für eine Audio-Aussteuerungsanzeige

    • Oscar
    • 8. Oktober 2009 um 00:17

    Ich habe eine Audio-Aussteuerungsanzeige als UDF erstellt.
    Damit kann man eine solche Anzeige auf einer GUI erstellen lassen, den Style verändern, sowie die Werte für Links/Rechts setzen.

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

    Dateien

    Levelmeter1.png 8,84 kB – 0 Downloads Levelmeter2.png 8,85 kB – 0 Downloads example.au3 999 Byte – 326 Downloads
  • (FileRead count Problem) Diesmal will ich wissen ob kb/s rechnung stimmt

    • Oscar
    • 7. Oktober 2009 um 16:40

    Ich habe Dir mal drei kleine Beispiele dazu geschrieben:

    Spoiler anzeigen
    [autoit]


    #include <Constants.au3>
    $hFile = FileOpen(@ProgramFilesDir & '\AutoIt3\Include\ChangeLog.txt', 16)
    If $hFile = -1 Then Exit

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

    $ret = FileSetPos($hFile, 1000, $FILE_BEGIN) ; setzt den Dateizeiger auf Position 1000 ab Anfang der Datei
    $read = FileRead($hFile, 10) ; 10 Bytes lesen
    ConsoleWrite(BinaryToString($read) & @CR)

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

    $ret = FileSetPos($hFile, -500, $FILE_CURRENT) ; setzt den Dateizeiger auf die Position 500 vor der momentanen Position
    $read = FileRead($hFile, 10) ; wieder 10 Bytes lesen
    ConsoleWrite(BinaryToString($read) & @CR)

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

    $ret = FileSetPos($hFile, -160, $FILE_END) ; setzt den Dateizeiger auf 160 Bytes vor dem Dateiende
    $read = FileRead($hFile, 10) ; wieder 10 Bytes lesen
    ConsoleWrite(BinaryToString($read) & @CR)

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

    FileClose($hFile)

    [/autoit]
  • (FileRead count Problem) Diesmal will ich wissen ob kb/s rechnung stimmt

    • Oscar
    • 6. Oktober 2009 um 20:16

    Die Beta-Version von AutoIt und FileSetPos().

  • Taschenrechner

    • Oscar
    • 6. Oktober 2009 um 14:09

    Jonathan: Bei Rechnungen mit Komma, musst Du den Dezimalpunkt benutzen, nicht das Dezimalkomma.
    Für die Anzeige kannst Du es dann ja wieder mit StringReplace zurückwandeln, aber beim Execute-Befehl müssen Kommazahlen den Dezimalpunkt besitzen.

  • "Freund hinzufügen" klicken auf YouTube

    • Oscar
    • 5. Oktober 2009 um 21:28

    "funktioniert nicht" ist die bei Programmierern beliebteste Fehlerbeschreibung. :D

  • Starplayer v2 (MP3-Player)

    • Oscar
    • 5. Oktober 2009 um 21:26

    Mit der neuen Version wird das ausgewählte Device auch in der Ini gespeichert. Dann brauchst Du das nicht bei jedem Programmstart neu auswählen.

    Probleme mit anderen Windowsversionen siehe Post #1.

  • Starplayer v2 (MP3-Player)

    • Oscar
    • 5. Oktober 2009 um 19:01

    Wenn das VU-Meter nicht geht, dann mal unter "Options" den Menüpunkt "Select Audio-Device for VU-Meter" auswählen (während ein Lied läuft) und dann die richtige Soundkarte/Eingang auswählen.

  • Starplayer v2 (MP3-Player)

    • Oscar
    • 5. Oktober 2009 um 18:22

    Auf Visualisierungen stehe ich eigentlich nicht so, aber ich habe jetzt ein VU-Meter integriert. Das finde ich ganz gut. Danke Eukalyptus für das tolle Beispiel!

    Und ein paar Credits waren auch noch fällig.

    Somit gibt es doch noch eine neue Version, siehe Post #1. :D

  • Checkboxen die markiert sind sollen kopiert werden

    • Oscar
    • 5. Oktober 2009 um 14:58

    Du musst den Status der Checkboxen auslesen. Das geschieht mit GUICtrlRead.

    Die korrekte Abfrage wäre so:

    [autoit]

    If BitAnd(GUICtrlRead($checkCN_2), $GUI_CHECKED) Then DirCopy...

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