Hallo McNeal,
stell doch einfach einmal eine Datei vorher und nach der manuellen Bearbeitung hoch,
mfg (Auto)Bert
Hallo McNeal,
stell doch einfach einmal eine Datei vorher und nach der manuellen Bearbeitung hoch,
mfg (Auto)Bert
Hallo ErrorKid,
suchst du so etwas:
;http://www.autoit.de/index.php?page…6006#post116006
#include <ScrollBarConstants.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiButton.au3>
#include <StructureConstants.au3>
#include <GUIScrollBars.au3>
#include <Date.au3>
Opt('GUIOnEventMode', 1)
Global $pichinetgo = @ScriptDir & '\5-r.gif'
$Gui = GUICreate('', 1003, 600, -1, -1,BitOR($WS_MINIMIZEBOX,$WS_SYSMENU,$WS_CAPTION,$WS_POPUP,$WS_POPUPWINDOW,$WS_GROUP,$WS_VSCROLL,$WS_BORDER,$WS_CLIPSIBLINGS))
GUISetBkColor(0xFFFACD, $Gui)
GUISetOnEvent(-3, '_Exit')
Local $arTage[31][2]
$x = 176 ; +22
For $i = 0 To 30
$arTage[$i][0] = GUICtrlCreateInput(StringRight('0' & $i + 1, 2), $x, 20, 21, 20)
$arTage[$i][1] = GUICtrlCreateInput('', $x, 41, 21, 20)
$x += 22
Next
Local $aschTage[31][2]
$x = 176 ; +22
For $i = 0 To 30
$aschTage[$i][0] = GUICtrlCreateInput('', $x, 90, 21, 20)
$aschTage[$i][1] = GUICtrlCreateInput('', $x, 111, 21, 20)
$x += 22
Next
Local $aschTage[31][12]
$x = 176 ; +22
$y = 90
For $i = 0 To 30
$aschTage[$i][0] = GUICtrlCreateInput('', $x, 90, 21, 20)
$aschTage[$i][1] = GUICtrlCreateInput('', $x, 111, 21, 20)
GUICtrlCreateInput('', $x, $y, 21, 20)
GUICtrlCreateInput('', $x, $y, 21, 20)
$x += 22
$y += 21
Next
GUIRegisterMsg($WM_VSCROLL, "WM_VSCROLL")
_GUIScrollBars_Init($Gui)
GUISetState()
Func _Exit()
Exit
EndFunc ;==>_Exit
Local $Color = 0x000000
While 1
Sleep(10)
WEnd
Func WM_VSCROLL($hWnd, $Msg, $wParam, $lParam)
#forceref $Msg, $wParam, $lParam
Local $nScrollCode = BitAND($wParam, 0x0000FFFF)
Local $index = -1, $yChar, $yPos
Local $Min, $Max, $Page, $Pos, $TrackPos
For $x = 0 To UBound($aSB_WindowInfo) - 1
If $aSB_WindowInfo[$x][0] = $hWnd Then
$index = $x
$yChar = $aSB_WindowInfo[$index][2]
ExitLoop
EndIf
Next
If $index = -1 Then Return 0
; Ermittelt alle Informationen der vertikalen Scrollbar
Local $tSCROLLINFO = _GUIScrollBars_GetScrollInfoEx($hWnd, $SB_VERT)
$Min = DllStructGetData($tSCROLLINFO, "nMin")
$Max = DllStructGetData($tSCROLLINFO, "nMax")
$Page = DllStructGetData($tSCROLLINFO, "nPage")
$yPos = DllStructGetData($tSCROLLINFO, "nPos")
$TrackPos = DllStructGetData($tSCROLLINFO, "nTrackPos")
; Speichert die y-Position für einen späteren Vergleich
$Pos = $yPos
; Auswertung der vom System gemeldeten Scroll-Nachricht
Switch $nScrollCode
Case $SB_TOP ; Der Anwender klickte auf die "Pos1"-Taste
DllStructSetData($tSCROLLINFO, "nPos", $Min)
Case $SB_BOTTOM ; Der Anwender klickte auf die "Ende"-Taste
DllStructSetData($tSCROLLINFO, "nPos", $Max)
Case $SB_LINEUP ; Der Anwender klickte auf den oberen Pfeil
DllStructSetData($tSCROLLINFO, "nPos", $Pos - 1)
Case $SB_LINEDOWN ; Der Anwender klickte auf den unteren Pfeil
DllStructSetData($tSCROLLINFO, "nPos", $Pos + 1)
Case $SB_PAGEUP ; Der Anwender klickte oberhalb des Scrollbalkens
DllStructSetData($tSCROLLINFO, "nPos", $Pos - $Page)
Case $SB_PAGEDOWN ; Der Anwender klickte unterhalb des Scrollbalkens
DllStructSetData($tSCROLLINFO, "nPos", $Pos + $Page)
Case $SB_THUMBTRACK ; Der Anwender zog den Scrollbalken
DllStructSetData($tSCROLLINFO, "nPos", $TrackPos)
EndSwitch
;~ // Setzt die neue Position und ermittelt sie danach erneut.
;~ // Abhängig von den Windows-Einstellungen kann es sein, dass die gelesenen Werte nicht die gleichen sind, wie die vorher gesetzten.
DllStructSetData($tSCROLLINFO, "fMask", $SIF_POS)
_GUIScrollBars_SetScrollInfo($hWnd, $SB_VERT, $tSCROLLINFO)
_GUIScrollBars_GetScrollInfo($hWnd, $SB_VERT, $tSCROLLINFO)
; // Falls sich die y-Position der Scrollbar geändert hat, den Fensterbereich verschieben und aktualisieren
$Pos = DllStructGetData($tSCROLLINFO, "nPos")
If ($Pos <> $yPos) Then
_GUIScrollBars_ScrollWindow($hWnd, 0, $yChar * ($yPos - $Pos))
$yPos = $Pos
EndIf
Return $GUI_RUNDEFMSG
[/autoit] [autoit][/autoit] [autoit]EndFunc ;==>WM_VSCROLL
[/autoit]bin mir nicht sicher ob GUIScrollBars.au3 von Gary Frost (AutoItScript.com) mittlerweile eine Standardinclude ist, deshalb im Anhang
mfg (Auto)Bert
Hallo descent,
hier das überarbeitete Skript:
#cs ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]AutoIt Version: 3.3.6.0
Author: myName
Script Function:
Template AutoIt script.
#ce ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]; Script Start - Add your code below here
[/autoit] [autoit][/autoit] [autoit]#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
;#include <Musicplayer_UDF.au3>
#include <Array.au3>
#include <File.au3>
#include <GuiListView.au3>
#include <ListViewConstants.au3>
#include <Sound.au3>
Global $abspiel,$playsound,$SongRoot,$SongPlay, $test, $pic
[/autoit] [autoit][/autoit] [autoit]$test = @ScriptDir & "\play.gif"
[/autoit] [autoit][/autoit] [autoit]$Form1 = GUICreate("Form1", 610, 195, 209, 315)
$pic=GUICtrlCreatePic($test, 460, 100, 37, 37)
$pic1=GUICtrlCreatePic(@ScriptDir & "\next.gif", 560, 100, 36, 36)
$pic2=GUICtrlCreatePic(@ScriptDir & "\back.gif", 410, 100, 36, 36)
$pic3=GUICtrlCreatePic(@ScriptDir & "\stop.gif", 510, 100, 37, 37)
$ListView1=GUICtrlCreateListView("Song|Pfad", 413, 20, 178, 75)
$ListView2=GUICtrlCreateListView("Song|Pfad", 20, 20, 350, 135)
GUICtrlSetState($listview1, $GUI_DROPACCEPTED)
$Menu=GUICtrlCreateMenu("Datei")
$Menumedia=GUICtrlCreateMenu("Medienbibliothek")
$MediaAktualisieren=guictrlcreatemenuitem("Medienbiliothek aktualisieren",$Menumedia)
$Pfad=guictrlcreatemenuitem("Pfad zum Medienordner festlegen",$Menumedia)
$show=guictrlcreatemenuitem("Pfad zum Medienordner anzeigen",$Menumedia)
$Beenden=guictrlcreatemenuitem("Beenden",$Menu)
GUISetState(@SW_SHOW)
start()
[/autoit] [autoit][/autoit] [autoit]While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $GUI_EVENT_DROPPED
$ar = _GUICtrlListView_GetSelectedIndices($listview2, True)
;_ArrayDisplay($ar)
For $i = 1 To $ar[0]
$sItem = _GUICtrlListView_GetItemTextString($listview2, $ar[$i])
GUICtrlCreateListViewItem($sItem, $listview1)
Next
For $i = 0 To 1
_GUICtrlListView_SetColumnWidth($Listview1, $i, $LVSCW_AUTOSIZE)
Next
case $pic1
_next()
case $pic2
_prev()
case $pic3
_stop()
case $pic
if $test = @ScriptDir & "\play.gif" Then
sound()
$test = @ScriptDir & "\pause.gif"
GUICtrlDelete($pic)
$pic=GUICtrlCreatePic($test, 460, 100, 37, 37)
else
_pause()
$test = @ScriptDir & "\play.gif"
GUICtrlDelete($pic)
$pic=GUICtrlCreatePic($test, 460, 100, 37, 37)
endif
case $beenden
exit
case $Pfad
$MediaPfad=FileSelectFolder("Medienorder auswählen", "")
IniWrite("config.ini", "Einstellungen","Medienpfad", $MediaPfad)
case $show
$mediapfadread = IniRead("config.ini", "Einstellungen","Medienpfad", "")
MsgBox(0, "Medienordner", "Aktuell ist folgender Medienordner ausgewählt:"&@crlf&@crlf&$mediapfadread)
case $MediaAktualisieren
$folder=IniRead("config.ini", "Einstellungen","Medienpfad", "")
$Result=media($folder, ".+\.mp3", 1)
FileDelete("media.ini")
_GUICtrlListView_DeleteAllItems($ListView2)
for $i = 1 to $result[0]
$Song1=stringsplit($Result[$i],"\")
$Song=StringSplit($Song1[$Song1[0]],".")
GUICtrlCreateListViewItem($Song[1]&"|"&$result[$i] , $ListView2)
IniWrite("media.ini", "Media", ""&$i&"", $Song[1]&"|"&$result[$i])
next
For $i = 0 To 1
_GUICtrlListView_SetColumnWidth($Listview2, $i, $LVSCW_AUTOSIZE)
Next
EndSwitch
WEnd
func _next()
Local $aOldId = _GUICtrlListView_GetSelectedIndices($listview1,True)
if $aOldId[1] < (_GUICtrlListView_GetItemCount($listview1) -1) Then
$aOldId[1] += 1
Else
$aOldId[1] = 0
EndIf
_GUICtrlListView_SetItemSelected ($ListView1, $aOldId[1])
$SongRoot=_GUICtrlListView_GetItemTextArray($Listview1,$aOldId[1])
if IsArray($abSpiel) Then _SoundStop($abspiel)
$abspiel=_SoundOpen($SongRoot[2])
$playsound=_SoundPlay($abspiel, 0)
EndFunc
func _prev()
Local $aOldId = _GUICtrlListView_GetSelectedIndices($listview1,True)
if $aOldId[1] > 0 Then
$aOldId[1] -= 1
Else
$aOldId[1] = _GUICtrlListView_GetItemCount($listview1) -1
EndIf
_GUICtrlListView_SetItemSelected ($ListView1, $aOldId[1])
$SongRoot=_GUICtrlListView_GetItemTextArray($Listview1,$aOldId[1])
if IsArray($abSpiel) Then _SoundStop($abspiel)
$abspiel=_SoundOpen($SongRoot[2])
$playsound=_SoundPlay($abspiel, 0)
EndFunc
func sound()
;$SongPlay=_GUICtrlListView_GetItemTextString($Listview1)
;$SongRoot=StringSplit($SongPlay, "|")
$SongRoot=_GUICtrlListView_GetItemTextArray($Listview1)
if IsArray($abSpiel) then
_SoundResume($abspiel)
else
$abspiel=_SoundOpen($SongRoot[2])
$playsound=_SoundPlay($abspiel, 0)
endif
EndFunc
[/autoit] [autoit][/autoit] [autoit]func _Pause()
_SoundPause($abspiel)
EndFunc
func _stop()
_SoundStop($abspiel)
$abspiel = ""
GUICtrlDelete($pic)
$test = @ScriptDir & "\play.gif"
$pic=GUICtrlCreatePic($test, 460, 100, 37, 37)
EndFunc
func media($sSD, Const $sPat = '', Const $iF = 3)
Local $sRet = "", $sSubD = '|' & $sSD
Local $FFFF, $FFNF, $sDir, $iC
Local $aD, $hDLL = DllOpen('kernel32.dll')
If StringRight($sSD, 1) = '\' Then $sSD = StringTrimRight($sSD, 1)
If Not FileExists($sSD) Then Return SetError(2, 0, "")
If Not ($iF = 3 Or $iF = 1 Or $iF = 2) Then Return SetError(3, 0, "")
Do
$iC = StringInStr($sSubD, '|', 2, -1)
If @error Or $iC = 0 Then ExitLoop
$iC = StringLen($sSubD) - $iC
$sDir = StringRight($sSubD, $iC)
$sSubD = StringTrimRight($sSubD, $iC + 1)
$FFFF = FileFindFirstFile($sDir & '\*')
If $FFFF <> -1 Then
Do
$FFNF = FileFindNextFile($FFFF)
If @error Then ExitLoop
If @extended Then
If BitAND(StringRegExp($FFNF, $sPat) * 2, $iF) Then $sRet &= $sDir & '\' & $FFNF & '\|'
$aD = DllCall($hDLL, 'dword', 'GetFileAttributesW', 'wstr', $sDir & '\' & $FFNF)
If @error And BitAND($aD[0],0x400) Then ContinueLoop
$sSubD &= '|' & $sDir & '\' & $FFNF
ElseIf BitAND(StringRegExp($FFNF, $sPat), $iF) Then
$sRet &= $sDir & '\' & $FFNF & '|'
EndIf
Until 0
FileClose($FFFF)
EndIf
Until 0
DllClose($hDLL)
Return StringSplit(StringTrimRight($sRet, 1), '|')
EndFunc
func start()
If FileExists(@ScriptDir & "\media.ini") Then
$var = IniReadSection(@ScriptDir & "\media.ini", "Media")
If @error Then
MsgBox(4096, "Error", "Unable to read section.")
Else
For $i = 1 To $var[0][0]
GUICtrlCreateListViewItem($var[$i][1] , $ListView2)
Next
EndIf
Else
MsgBox(4096, "Medienbibliothek", "Es konnte keine Medienbibliotek geladen werden.")
EndIf
For $i = 0 To 1
_GUICtrlListView_SetColumnWidth($Listview2, $i, $LVSCW_AUTOSIZE)
Next
EndFunc
mfg (Auto)Bert
Hallo descent,
du verwendest Musicplayer_UDF.au3 in deinem Skript, diese liegt mir leider nicht vor. Kannst du diese bitte einstellen oder einen Link dazu posten, eingebundene UDF wird nicht verwedet. Die nötigen Gifs habe ich. Aber kannst du mir erklären warum du 2 Listviews in deiner GUI hast. Wenn ich Lieder aus der linken Listview in die rechte ziehe, kann ich diese dort starten, pausieren und auch wieder fortsetzen.
mfg (Auto)Bert
Hallo descent,
dann stelle doch bitte dein komplettes Skript ein, damit nicht raten muss
mfg (Auto)Bert
Hallo StormRider,
die Anzahl der Edit beim Verlassen mit IniWrite in einer INI speichern und beim nächsten Start mit IniRead die Anzahl auslesen und in einer Schleife wieder erzeugen. Falls du die Texte auch speichern willst schau dir FileRead und FileWrite an,
mfg (Auto)Bert
Ich hab schon hier im Forum gelesen über WinList() und und und. Leider ist mir das nicht ganz klar...
das wichtigste ist zu wissen, dass WinList alle Fenster zurückgibt und dass du deshalb eine Routine benötigst welche nur die sichtbaren herausfiltert. Das Beispiel in der Hilfe zu WinList ist dazu gut geeignet,
mfg (Auto)Bert
?!
Das Programm beendet sich doch nicht selbst?!Die verbindung geht manchmal verloren (vor allem nach dem 24h dc)
Dann solltest du nach einer festgelegten Zeitspanne (z.B.: alle 4 Stunden) den Process killen und danach erneut starten,
mfg (Auto)Bert
Hallo gaggi,
mach es doch so:
[autoit]#include <IE.au3>
$oIE = _IECreate ("http://www.google.de/", 0, 1, 1, 0)
_IEPropertySet ($oIE, "width",@DesktopWidth)
_IEPropertySet ($oIE, "height",@DesktopHeight)
_IEPropertySet ($oIE, "left",0)
_IEPropertySet ($oIE, "top",0)
_IEPropertySet ($oIE, "theatermode",true)
mfg (Auto)Bert
Hallo StormRider,
schau dir dazu
an
mfg (Auto)Bert
Hallo Mc.Neal,
hast du mein Skript getestet es funktioniert, hier noch einmal mit Kommentaren:
#include <Misc.au3>
;;Hex
;;79 = F10
;;7A = F11
;;7B = F12
Global $Paused = False ;setze $Paused auf falsch
[/autoit] [autoit][/autoit] [autoit]HotKeySet("{F11}", "_pause")
HotKeySet("{F12}", "_exit")
While 1
If _IsPressed(79) Then ;nur wenn F10 gedrückt
_testfunc()
EndIf
WEnd
;;Awake Func
Func _testfunc()
While 1
;;hier sollte der eigendliche inhalt
;dieser wird nur ausgeführt wenn Skript nicht pausiert und auch die F10-Taste gedrückt wird
ConsoleWrite("Aktion wird ausgeführt!" & @CRLF)
Sleep(5000)
WEnd
EndFunc ;==>_testfunc
;; Pause/Resume
Func _pause()
$Paused = Not $Paused ;$Paused wird zum Gegenteil, also wenn bereits pausiert wird weitergemacht ansonsten pausisiert
While $Paused
Sleep(100)
ToolTip('Script is "Paused"', 0, 0)
WEnd
ToolTip("")
EndFunc ;==>_pause
;;Exit
Func _exit()
Exit 0
EndFunc ;==>_exit
ansonsten liegt unterumständen der Fehler in deiner eigentlichen testfunc
mfg (Auto)Bert
Hallo bocky3,
schau dir http://www.microsoft.com/germany/msdn/l…n.mspx?mfr=true an, dort kannst du erfahren für welchen Zweck man welches Verfahren benutzt um zufällige Testdaten zu erhalten,
mfg (Auto)Bert
Hallo descent,
warscheins hast du nur einen Tippfehler in Zeile 11, du kannst dies aber auch kürzer schreiben:
[autoit]case $pic
if $test = @ScriptDir & "\play.gif" Then
sound()
$test = @ScriptDir & "\pause.gif"
GUICtrlSetImage($pic,$test)
else
_pause()
$test = @ScriptDir & "\play.gif"
GUICtrlSetImage($pic,$test)
endif
oder noch kürzer:
case $pic
if $test = @ScriptDir & "\play.gif" Then
sound()
GUICtrlSetImage($pic,@ScriptDir & "\pause.gif")
else
_pause()
GUICtrlSetImage($pic,@ScriptDir & "\play.gif")
endif
mfg (Auto)Bert
Hallo so sollte es funktionieren:
func sound()
$SongPlay=_GUICtrlListView_GetItemTextString($Listview1)
$SongRoot=StringSplit($SongPlay, "|")
if IsArray $abSpiel then
_SoundResume($abspiel)
else
$abspiel=_SoundOpen($SongRoot[2])
$playsound=_SoundPlay($abspiel, 0)
endif
EndFunc
func _Pause()
_SoundPause($abspiel)
EndFunc
wenn nicht komplettes Skript posten,
mfg (Auto)Bert
Hallo deklariere doch einfach $Paused am Anfang als false:
#include <Misc.au3>
;;Hex
;;79 = F10
;;7A = F11
;;7B = F12
Global $Paused = False
[/autoit] [autoit][/autoit] [autoit]HotKeySet("{F11}","_pause")
HotKeySet("{F12}","_exit")
While 1
If _IsPressed(79) Then
_testfunc()
EndIf
WEnd
;;Awake Func
Func _testfunc()
While 1
;;hier sollte der eigendliche inhalt rein
WEnd
EndFunc
;; Pause/Resume
Func _pause()
$Paused = NOT $Paused
While $Paused
sleep(100)
ToolTip('Script is "Paused"',0,0)
WEnd
ToolTip("")
EndFunc
;;Exit
Func _exit()
Exit 0
EndFunc
mfg (Auto)Bert
Hallo antispeed,
du musst deine Exe als Konsolenanwendung kompilieren dann kannst du das mit Consolewrite machen:
mfg (Auto)Bert
Hallo antispped,
Keyle hat in [ gelöst ] Bilder vergrößern sich?!? eine explorer.au3 angehängt, vielleicht ist es ja das was du suchst,
mfg (Auto)Bert
ne der gibt ja mit _GdiPlus_ReadSlider nen zahlenwert zurück
diese Funktion ist mir unbekannt.
mfg (Auto)Bert
Hallo Huxxxley,
auch im Off-Topic sind Doppel-Threads keine feine Art, siehe: Jam Legend Widget für die eigene Webseite (erweiterbar und anpassbar)
mfg (Auto)Bert