Beiträge von Oscar
-
-
Dafür gibt es ja bereits eine UDF "_TicksToTime()".
Ich finde die Rückgabe von der Funktion allerdings unpraktisch und so habe ich eine eigene geschrieben:Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
Opt('WinTitleMatchMode', 2)
$sTitle = 'Solitär'
ShellExecute('sol.exe')
WinWait($sTitle)
$handle = WinGetHandle($sTitle)
$iTimer = TimerInit()
AdlibEnable('_TimeUpdate', 10)
While WinExists($handle)
Sleep(100)
WEndFunc _TimeUpdate()
[/autoit] [autoit][/autoit] [autoit]
WinSetTitle($handle, '', StringRegExpReplace(WinGetTitle($handle), ' \d{2}:\d{2}:\d{2}.\d{3}', '') & ' ' & _NewTicksToTime(TimerDiff($iTimer)))
EndFunc ;==>_TimeUpdateFunc _NewTicksToTime($iTicks)
[/autoit]
Local $iHours, $iMins, $iSecs = Int($iTicks / 1000), $iMSecs = $iTicks - $iSecs * 1000
$iHours = Int($iSecs / 3600)
$iSecs = Mod($iSecs, 3600)
$iMins = Int($iSecs / 60)
$iSecs = Mod($iSecs, 60)
Return StringFormat('%02i:%02i:%02i.%03i', $iHours, $iMins, $iSecs, $iMSecs)
EndFunc ;==>_NewTicksToTime -
Hatte da mal was archiviert:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <MenuConstants.au3>
#include <WindowsConstants.au3>Global Const $WM_EXITSIZEMOVE = 0x0232
[/autoit] [autoit][/autoit] [autoit]
Global $nRange = 20
Global $IsSideWinStick = False$hGUI = GUICreate("GUI Stickable!", 280, 150)
[/autoit] [autoit][/autoit] [autoit]
GUIRegisterMsg($WM_SYSCOMMAND, "WM_SYSCOMMAND")
GUIRegisterMsg($WM_EXITSIZEMOVE, "WM_EXITSIZEMOVE")
GUIRegisterMsg($WM_WINDOWPOSCHANGING, "WM_WINDOWPOSCHANGING")$Stickable_CB = GUICtrlCreateCheckbox("Stickable", 20, 20)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetState(-1, $GUI_CHECKED)$StickableToAll_CB = GUICtrlCreateCheckbox("Stickable to all windows (High CPU usage)", 20, 40)
[/autoit] [autoit][/autoit] [autoit]$Range_Input = GUICtrlCreateInput($nRange, 20, 70, 40, 20, $ES_READONLY)
[/autoit] [autoit][/autoit] [autoit]
$UpDown = GUICtrlCreateUpdown(-1)
GUICtrlSetLimit(-1, 80, 5)GUISetState()
[/autoit] [autoit][/autoit] [autoit]GUICreate("Some extra window", 320, 180, 0, 0)
[/autoit] [autoit][/autoit] [autoit]
GUISetState()While 1
[/autoit] [autoit][/autoit] [autoit]
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
Case $Stickable_CB
If GUICtrlRead($Stickable_CB) = $GUI_CHECKED Then
GUIRegisterMsg($WM_WINDOWPOSCHANGING, "WM_WINDOWPOSCHANGING")
GUIRegisterMsg($WM_SYSCOMMAND, "WM_SYSCOMMAND")
GUIRegisterMsg($WM_EXITSIZEMOVE, "WM_EXITSIZEMOVE")
Else
GUIRegisterMsg($WM_WINDOWPOSCHANGING, "")
GUIRegisterMsg($WM_SYSCOMMAND, "")
GUIRegisterMsg($WM_EXITSIZEMOVE, "")
EndIf
Case $StickableToAll_CB
If GUICtrlRead($StickableToAll_CB) = $GUI_CHECKED Then
$IsSideWinStick = True
Else
$IsSideWinStick = False
EndIf
Case $UpDown
$nRange = GUICtrlRead($Range_Input)
EndSwitch
WEndFunc WM_WINDOWPOSCHANGING($hWnd, $Msg, $wParam, $lParam)
[/autoit] [autoit][/autoit] [autoit]
Local $stWinPos = DllStructCreate("uint;uint;int;int;int;int;uint", $lParam)
Local $nLeft = DllStructGetData($stWinPos, 3)
Local $nTop = DllStructGetData($stWinPos, 4)Local $aCurWinPos = WinGetPos($hWnd)
[/autoit] [autoit][/autoit] [autoit]
Local $aWorkArea = _GetWorkingArea();Left
[/autoit] [autoit][/autoit] [autoit]
If Abs($aWorkArea[0] - $nLeft) <= $nRange Then DllStructSetData($stWinPos, 3, $aWorkArea[0])
;Right
If Abs($nLeft + $aCurWinPos[2] - $aWorkArea[2]) <= $nRange Then DllStructSetData($stWinPos, 3, $aWorkArea[2] - $aCurWinPos[2])
;Top
If Abs($aWorkArea[1] - $nTop) <= $nRange Then DllStructSetData($stWinPos, 4, $aWorkArea[1])
;Bottom
If Abs($nTop + $aCurWinPos[3] - $aWorkArea[3]) <= $nRange Then DllStructSetData($stWinPos, 4, $aWorkArea[3] - $aCurWinPos[3])If Not $IsSideWinStick Then Return 0
[/autoit] [autoit][/autoit] [autoit]Local $ahWnd = WinList()
[/autoit] [autoit][/autoit] [autoit]For $i = 1 To UBound($ahWnd) - 1
[/autoit] [autoit][/autoit] [autoit]
If $ahWnd[$i][1] = $hWnd Or Not BitAND(WinGetState($ahWnd[$i][1]), 2) Then ContinueLoop$aSideWinPos = WinGetPos($ahWnd[$i][1])
[/autoit] [autoit][/autoit] [autoit]
If UBound($aSideWinPos) < 3 Then ContinueLoopLocal $XPoint = $aSideWinPos[0] + 15
[/autoit] [autoit][/autoit] [autoit]
Local $YPoint = $aSideWinPos[1] + 15If $XPoint < 0 Then $XPoint = 5
[/autoit] [autoit][/autoit] [autoit]
If $YPoint < 0 Then $YPoint = 5If $aCurWinPos[1] + $aCurWinPos[3] >= $aSideWinPos[1] And $aCurWinPos[1] <= $aSideWinPos[1] + $aSideWinPos[3] Then
[/autoit] [autoit][/autoit] [autoit]
;Left
If Abs(($aSideWinPos[0] + $aSideWinPos[2]) - $nLeft) <= $nRange And _
WindowFromPoint($XPoint, $YPoint) = $ahWnd[$i][1] Then _
DllStructSetData($stWinPos, 3, $aSideWinPos[0] + $aSideWinPos[2]);Right
[/autoit] [autoit][/autoit] [autoit]
If Abs($nLeft + $aCurWinPos[2] - $aSideWinPos[0]) <= $nRange And _
WindowFromPoint($XPoint, $YPoint) = $ahWnd[$i][1] Then _
DllStructSetData($stWinPos, 3, $aSideWinPos[0] - $aCurWinPos[2])
EndIfIf $aCurWinPos[0] + $aCurWinPos[2] >= $aSideWinPos[0] And $aCurWinPos[0] <= $aSideWinPos[0] + $aSideWinPos[2] Then
[/autoit] [autoit][/autoit] [autoit]
;Top
If Abs(($aSideWinPos[1] + $aSideWinPos[3]) - $nTop) <= $nRange And _
WindowFromPoint($XPoint, $YPoint) = $ahWnd[$i][1] Then _
DllStructSetData($stWinPos, 4, $aSideWinPos[1] + $aSideWinPos[3]);Bottom
[/autoit] [autoit][/autoit] [autoit]
If Abs($nTop + $aCurWinPos[3] - $aSideWinPos[1]) <= $nRange And _
WindowFromPoint($XPoint, $YPoint) = $ahWnd[$i][1] Then _
DllStructSetData($stWinPos, 4, $aSideWinPos[1] - $aCurWinPos[3])
EndIf
NextReturn 0
[/autoit] [autoit][/autoit] [autoit]
EndFunc ;==>WM_WINDOWPOSCHANGINGFunc WM_SYSCOMMAND($hWnd, $Msg, $wParam, $lParam)
[/autoit] [autoit][/autoit] [autoit]
Switch BitAND($wParam, 0xFFF0)
Case $SC_SIZE, $SC_MOVE
DllCall("user32.dll", "int", "SystemParametersInfo", "int", 37, "int", 1, "ptr", 0, "int", 2)
EndSwitch
EndFunc ;==>WM_SYSCOMMANDFunc WM_EXITSIZEMOVE($hWnd, $Msg, $wParam, $lParam)
[/autoit] [autoit][/autoit] [autoit]
Local $Old_Show_Content_Param = RegRead("HKEY_CURRENT_USER\Control Panel\Desktop", "DragFullWindows")
DllCall("user32.dll", "int", "SystemParametersInfo", "int", 37, "int", $Old_Show_Content_Param, "ptr", 0, "int", 2)
EndFunc ;==>WM_EXITSIZEMOVEFunc WindowFromPoint($XPoint, $YPoint)
[/autoit] [autoit][/autoit] [autoit]
Local $aResult = DllCall("User32.dll", "hwnd", "WindowFromPoint", "int", $XPoint, "int", $YPoint)
Return $aResult[0]
EndFunc ;==>WindowFromPoint;===============================================================================
[/autoit] [autoit][/autoit] [autoit]
;
; Function Name: _GetWorkingArea()
; Description: Returns the coordinates of desktop working area rectangle
; Parameter(s): None
; Return Value(s): On Success - Array containing coordinates:
; $a[0] = left
; $a[1] = top
; $a[2] = right
; $a[3] = bottom
; On Failure - 0
;
;BOOL WINAPI SystemParametersInfo(UINT uiAction, UINT uiParam, PVOID pvParam, UINT fWinIni);
;uiAction SPI_GETWORKAREA = 48
;===============================================================================
Func _GetWorkingArea()
Local Const $SPI_GETWORKAREA = 48
Local $stRECT = DllStructCreate("long; long; long; long")
Local $SPIRet = DllCall("User32.dll", "int", "SystemParametersInfo", _
"uint", $SPI_GETWORKAREA, "uint", 0, "ptr", DllStructGetPtr($stRECT), "uint", 0)
If @error Then Return 0
If $SPIRet[0] = 0 Then Return 0Local $sLeftArea = DllStructGetData($stRECT, 1)
[/autoit] [autoit][/autoit] [autoit]
Local $sTopArea = DllStructGetData($stRECT, 2)
Local $sRightArea = DllStructGetData($stRECT, 3)
Local $sBottomArea = DllStructGetData($stRECT, 4)Local $aRet[4] = [$sLeftArea, $sTopArea, $sRightArea, $sBottomArea]
[/autoit]
Return $aRet
EndFunc ;==>_GetWorkingArea
Angepasst an die neue AutoIt-Version. -
Stimmt!
[autoit]
Ist in der nächsten Version mit integriert.
Bis dahin einfach eine Zeile in die Funktion "_RandomSort" einfügen:
[/autoit]
Func _RandomSort()
If $aFiles[0] = 0 Then Return
[...]
EndFunc
Danke, für den Bugreport!
-
oder so:
Spoiler anzeigen
[autoit]
[/autoit]
#include <GUIConstantsEx.au3>
$hGui = GUICreate('Test')
$mylist = GUICtrlCreateList('', 176, 32, 121, 97)
GUICtrlSetData($mylist, 'Zeile 1')
GUICtrlSetData($mylist, 'Zeile 2')
GUICtrlSetData($mylist, 'Zeile 3')
GUISetState()
While True
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $mylist
$sSelected = ControlCommand($hGui, '', $mylist, 'GetCurrentSelection', '')
MsgBox(0, 'markierte Zeile', $sSelected)
EndSwitch
WEnd -
Und was ist damit:
Zitat(6) Der Nutzer darf keine Maßnahmen vornehmen, um die auf der Webseite enthaltene Werbung automatisiert auszublenden.
Wie willst Du denn in einem eigenen Client die Werbung unterbringen?Edit: Und gegen (3) dürfte das auch verstossen:
Zitat(3) Der Nutzer ist nicht berechtigt, die Community Software oder Teile davon zu dekompilieren, abzuändern, zu übersetzen, zu entassemblieren, derivative Programme zu entwickeln, einem Reverse Engineering zu unterziehen, eine sonstige Abänderung oder Vervielfältigung selbst vorzunehmen oder durch Dritte vornehmen zu lassen.
-
Ich hatte meinen Post nochmal ediert. Versuch's nochmal mit der neuen Version. Damit geht's!

-
Sowas dürfte gegen die Nutzungsbedingungen der Seite verstossen.
Von daher: kein Support! -
So sollten alle Fälle abgedeckt sein:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>$Inhalt_Input1 = "C:\test\muster\mann\beispiel"
[/autoit] [autoit][/autoit] [autoit]
$Inhalt_Input2 = "G:\"$Form1 = GUICreate("Gui No. 1", 241, 119, 193, 125)
[/autoit] [autoit][/autoit] [autoit]
$Button = GUICtrlCreateButton("übernehmen", 8, 56, 100, 21)
$Input1 = GUICtrlCreateInput($Inhalt_Input1, 8, 8, 217, 21)
$Input2 = GUICtrlCreateInput($Inhalt_Input2, 8, 32, 217, 21)
GUISetState(@SW_SHOW)While 1
[/autoit]
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $Button
$read1 = StringRegExpReplace(GUICtrlRead($Input1), '(.:|\\).*\\(.+)', '$2')
$read2 = StringRegExpReplace(GUICtrlRead($Input2), '(.:|\\).*\\(.+)', '$2')
If $read1 <> $read2 Then
$tmp = GUICtrlRead($Input2)
If StringRight($tmp, 1) <> '\' Then $tmp &= '\'
GUICtrlSetData($Input2, $tmp & $read1)
EndIf
EndSwitch
WEndEdit: Doch noch nicht alle Fälle. Script angepasst.
-
Ach, jetzt verstehe ich!
Stimmt! Du hast recht, da war tatsächlich ein kleiner Fehler. Die Variable $iBreak wurde nicht erhöht, wenn der Download wegen schlechter Verbindung abgebrochen wurde, sondern nur, wenn man ihn selbst abgebrochen hat.
Habe den Fehler behoben und so nebenbei noch ein kleines Feature eingeführt. Bei allen grünen Downloads werden die Haken entfernt, sodass am Ende nur die Haken bei den roten Downloads überbleiben. So braucht man einfach nur nochmal auf den "Download starten"-Button klicken, um die fehlgeschlagenen Downloads erneut zu versuchen.Neue Version in Post #1.
-
Eigentlich ist das kein Bug, sondern ein Feature.
Im Ernst, das wollte ich so, dass wenn die Downloads nicht alle erfolgreich waren, dass dann auch die Progressbar nicht 100% anzeigt, sondern je nachdem wie viele Programme gedownloadet wurden. Findest Du das verwirrend?
Und das mit den Farben ist auch genau für solche Fälle, in denen der Download abgebrochen wurde. -
Du solltest Dein Problem etwas genauer beschreiben.
Wo soll das eingegeben werden? Welche Wörter sollen geprüft werden? Zu welchem Zeitpunkt (bereits während der Eingabe oder erst nach [Enter])?Die Glaskugel ist da etwas verschwommen.

-
Einfach als Parameter mit übergeben:
[autoit]If $CmdLine[0] > 0 Then ShellExecute('notepad.exe', $CmdLine[1])
[/autoit] -
Schau Dir mal die "Command Line Parameters" in der Hilfe an.
-
@Deepred: Die Idee mit der Hintergrundfarbe ist klasse, danke. Habe das noch ein wenig abgeändert.
Es gibt eine neue Version (siehe Post #1).
-
BugFix, Deine erste Funktion funktioniert einwandfrei, aber bei der Zweiten erhalte ich nur "Always on Top = True." und eine Leerzeile als Ausgabe.
Und ich hatte mir mal ein anderes Script archiviert (AFAIR war das auch von Dir). Habe das jetzt mal als Funktion umgeschrieben:
[autoit]
[/autoit][autoit][/autoit][autoit]
#include <Array.au3>
$aOut = _GetTaskbarProp()
_ArrayDisplay($aOut) ; Array mit: Left, Top, Width, HeightFunc _GetTaskbarProp()
[/autoit]
Local $iOpt, $aPos
$iOpt = Opt("WinTitleMatchMode", 4)
$aPos = WinGetPos("classname=Shell_TrayWnd")
Opt("WinTitleMatchMode", $iOpt)
Return $aPos
EndFunc -
Liegt die shell32.dll unter Vista vielleicht auch im Standard-Windows-Suchpfad?
[autoit]
Dann bräuchte man die genaue Angabe gar nicht.
Funktioniert das evtl. auch unter Vista:$hAVICopy = GUICtrlCreateAvi('shell32.dll', 170, 120, 250, 272, 60)
[/autoit]
Bei XP reicht das ja (zumindest bei mir
). -
Das heißt, bei Dir wird die AVI dann auch nicht angezeigt, wenn Du die Zeile mit $GUI_HIDE entfernst?
Oder reicht es, wenn ich stattdessen:
[autoit]GUICtrlSetState($hAVICopy, $GUI_HIDE)
[/autoit]
schreibe?Edit:
Sithlord95: Siehe Antwort von Raupi!Raupi : Verdammt! Warum muss Microsoft immer alle Pfade ändern? Gibt es ein AutoIt-Makro, dass (unter Vista Ultimate 64) auf den C:\System\System32-Ordner verweist?
-
Der Button wird doch aktiviert, sobald Du min. 1 Programm-Haken gesetzt hast.
Oder ist das bei Dir nicht der Fall? -
Dieses Programm bietet die Möglichkeit mehrere Programme zum Download anzubieten. Der Benutzer kann dann auswählen, welche Programme er downloaden möchte und nach einem Klick auf den Start-Button werden alle Programme nacheinander heruntergeladen und in ein vorher festgelegtes Zielverzeichnis gespeichert.
Das festlegen, welche Programme zum Download angeboten werden, geschieht mittels einer Inidatei, die folgendermaßen aufgebaut ist:Spoiler anzeigen
Code
Alles anzeigen[Downloads] AutoIt v3.3.12.0=http://www.autoitscript.com/cgi-bin/getfile.pl?autoit3/autoit-v3.3.12.0-setup.exe AutoIt v3.3.13.15-beta=http://www.autoitscript.com/autoit3/files/beta/autoit/autoit-v3.3.13.15-beta-setup.exe SciTE4AutoIt3=http://www.autoitscript.com/cgi-bin/getfile.pl?../autoit3/scite/download/SciTE4AutoIt3.exe Deutsche Hilfe zu AutoIt3=http://translation.autoit.de/autoitinfo/hilfedateien/AutoIt-Hilfe-Deutsch-3.3.8.1-Stand-23_12_13.zip BookME v4.7.1.3=http://members.chello.at/~dimega/BookME4.zip IrfanView v4.38g=http://www.irfanview.info/files/iview438g_setup.exe KeyPass v2.27=http://sourceforge.net/settings/mirror_choices?projectname=keepass&filename=KeePass%202.x/2.27/KeePass-2.27-Setup.exe Notepad++ v6.6.8=http://download.tuxfamily.org/notepadplus/6.6.8/npp.6.6.8.Installer.exe OpenOffice v4.1.0=http://sourceforge.net/settings/mirror_choices?projectname=openofficeorg.mirror&filename=4.1.0/binaries/de/Apache_OpenOffice_4.1.0_Win_x86_install_de.exe 7-ZIP v9.20=http://downloads.sourceforge.net/sevenzip/7z920.exe Avira AntiVir (free)=http://install.avira-update.com/package/oe/win/de/avira_de_av___ws.exe CDBurnerXP v4.5.4=https://cdburnerxp.se/downloadsetup.exe CDex v1.70=http://sourceforge.net/settings/mirror_choices?projectname=cdexos&filename=cdexos/CDex%201.70/CDex-1.70-win32.exeDas abbrechen einzelner Downloads kann mit der [ESC]-Taste vorgenommen werden. Zum abbrechen aller Downloads steht die Tastenkombination [ALT]+[ESC] zur Verfügung.
Im Kontexmenu des Listviews gibt es die Möglichkeit alle/keine Programme auszuwählen.Version 1.3 ( 05.08.2014 )
- Diese Version funktioniert jetzt auch mit der aktuellen Version (v3.3.12.0) von AutoIt.Screenshot:
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.