Ja! ![]()
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.
Ja! ![]()
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.
Jo, funktioniert.
Wobei ich eine "pure AutoIt" Lösung (ohne DLL-Einsatz) ganz cool fände.
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.
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.
Eine kleine Funktion zum umwandeln von Sekunden in einen String mit Zeitangaben:
; 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))
; 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
Func _Stop()
$bStop = True
EndFunc ;==>_Stop
;===============================================================================
; 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
Zu _WinAPI_GetSystemMetrics sollte man vielleicht die Liste mit den möglichen Werten sowie die Bedeutung aufnehmen: GetSystemMetrics
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.
Auch von mir alles Gute zum Geburtstag. Mach weiter so. ![]()
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.
Und? Teils Du uns Deine Lösung auch mit?
Ich hatte mal so einen erweiterten Tooltip gemacht (allerdings ohne Bild):
#NoTrayIcon ; Trayicon erstmal verstecken
#include<WindowsConstants.au3>
#include<GUIConstantsEx.au3>
#include<IE.au3>
Opt('GUIOnEventMode', 1) ; OnEventMode für die GUI
Opt('TrayOnEventMode', 1) ; OnEventMode für das Traymenü
Opt('TrayMenuMode', 1) ; Standard-Traymenü entfernen
$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)
$sSourceFile = @ScriptDir & '\beispieltext.txt'
$sDestFile = @ScriptDir & '\beispieltext.html'
$sIconPath = @SystemDir & '\shell32.dll'
$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
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
$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
GUICtrlCreateObj($oIE, 10, 15, $Width-20, $Height-25) ; IE in die GUI integrieren
GUICtrlSetResizing(-1, $GUI_DOCKBORDERS)
_IENavigate($oIE, $sDestFile) ; die HTML-Seite aufrufen
$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
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
$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
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
GUIRegisterMsg($WM_MOVE, '_ShadowMove') ; Funktion zum "Schatten verschieben" registrieren
GUIRegisterMsg($WM_SIZE, '_ShadowSize') ; Funktion zum "Schatten anpassen" registrieren
While True ; Endlosschleife
Sleep(10) ; Prozessor entlasten
WEnd
Func _End()
Exit
EndFunc
Func _Minimize()
GUISetState(@SW_HIDE, $hShadow) ; Schatten verstecken
GUISetState(@SW_HIDE, $hGui) ; GUI verstecken
TraySetIcon($sIconPath, -24)
TraySetState(1+4) ; Trayicon anzeigen
EndFunc
Func _Restore()
GUISetState(@SW_SHOW, $hShadow) ; Schatten wiederherstellen
GUISetState(@SW_SHOW, $hGui) ; GUI wiederherstellen
TraySetState(2) ; Trayicon verstecken
EndFunc
Func _ShadowMove()
Local $pos = WinGetPos($hGui) ; Fensterposition der GUI holen
WinMove($hShadow, '', $pos[0]+6, $pos[1]+6) ; das Schatten-Fenster entsprechend verschieben
EndFunc
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
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
Da gibt's auch einen Schatten. Basiert im Prinzip auf einer zweiten GUI, die man mit der ersten verschiebt.
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:
Ich habe Dir mal drei kleine Beispiele dazu geschrieben:
#include <Constants.au3>
$hFile = FileOpen(@ProgramFilesDir & '\AutoIt3\Include\ChangeLog.txt', 16)
If $hFile = -1 Then Exit
$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)
$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)
$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)
FileClose($hFile)
[/autoit] 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.
"funktioniert nicht" ist die bei Programmierern beliebteste Fehlerbeschreibung. ![]()
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.
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.
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. ![]()
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]