Zeile 36 musst du ausserhalb des Switch schreiben da sonst eine Endlosschleife entsteht.
Tipp: anstatt $var = $var + 1 kannst du auch $var += 1 schreiben
Beiträge von FireFlyer
-
-
Spoiler anzeigen
[autoit]#include<IE.au3>
[/autoit] [autoit][/autoit] [autoit]
$ie = _IECreate("http://www.autoit.de", 0, 1, 0)
_IELoadWait($ie)
_funktion()Func _funktion()
[/autoit]
MsgBox(0, "Fertig", "Die Seite wurde geladen")
EndFuncWas ist daran umständlich? Natürlich kannst du das Script auch direkt bei Create oder Navigate warten lassen und dann die Funktion ausführen.
-
zu 1
_IELoadWait bzw. _IELoadWaitTimeout
In der Hilfe schauen wäre mal angebracht dann wäre dir nich so langeweilig und du müsstest deine beiträge nicht ständig pushen
-
So vllt?
Spoiler anzeigen
[autoit]#include<Array.au3>
[/autoit] [autoit][/autoit] [autoit]
Opt("MustDeclareVars", 1)
Local $testDim $array[6] = [1, 2, 2, 3, 4, 2]
[/autoit] [autoit][/autoit] [autoit]
Dim $array2[3] = [1, 2, 3]
_ArrayDisplay($array)$test = _ArrayDoubles($array, 1)
[/autoit] [autoit][/autoit] [autoit]
_ArrayDisplay($test)
MsgBox(0, "", $test)Func _ArrayDoubles(ByRef $array, $uniqueres = 0, $icase = 0, $start = 0, $end = 0)
[/autoit]
Local $out = 0, $end2
If Not IsArray($array) Then Return SetError(1)
If UBound($array, 0) > 1 Then Return SetError(2)
If $start < 0 Or $start > UBound($array)-1 Then Return SetError(3)
If $end < 0 Or $end > UBound($array)-1 Then Return SetError(4)
If $end = 0 Then
$end2 = UBound($array) - 1
Else
$end2 = $end
EndIf
For $i = $start To $end2
If _ArraySearch($array, $array[$i], $i+1, 0, $icase) <> -1 Then
If $uniqueres = 0 Or ($uniqueres = 1 And _ArraySearch($out, $array[$i], 0, 0, $icase) = -1) Then
If Not IsArray($out) Then
Dim $out[1] = [ $array[$i] ]
Else
_ArrayAdd($out, $array[$i])
EndIf
EndIf
EndIf
Next
Return $out
EndFunc -
ohhman
Manchmal sieht man den Wald vor lauter Bäumen einfach net.Danke

-
Es war einmal...
[autoit]
Ach kurze knackige Problemstellung: _GUICtrlEdit_SetSel startet bevor der Mausklick beendet wurde hier mal der ausschnittsweise code:Func autowrite_startart($ctrlid)
[/autoit]
If GUICtrlRead($ckbx_autowrite) = $GUI_CHECKED And Not StringLen(GUICtrlRead($ctrlid)) Then GUICtrlSetData($ctrlid, IniRead($inipath, "options", "standardstrt", "N.a."))
_GUICtrlEdit_SetSel($ctrlid, 0, -1)
EndFuncDiese Funktion wird durch einen WM_COMMAND aufgerufen und zwar bei den Codes 256 (focus) bzw. 1024 (change). Das Control um das es geht ist ein Input. Man klickt in das Input und es wird automatisch ein Text reingeschrieben. Anschließend soll der Text markiert sein. Wenn man in das Control reintabbt klappts wunderbar. Wenn man reinklickt sieht man ein milisekündchen lang wie der text markiert ist, dann wird die Markierung jedoch durch den Mausklick (der noch da ist^^) wieder aufgehoben.
Wäre es eine sinnvolle Lösung per Schleife zu warten bis die Maustaste losgelassen wurde? Habe das zwar probiert war damit aber nicht sonderlich zufrieden
-
-
Nein dazu musst du eine Rekursive Funktion erstellen zu diesem Thema hatten wir allerdings schon einige Threads und Scripte. Wenn es nur darum geht zu wissen ob ein Programm installiert ist oder nicht würde ich dir die Registry empfehlen dort ist der Pfad immer gleich

-
na klar fängt die forschleife nicht wieder von vorne an. Dies tut sie ja erst wieder sobald du den Button Start drückst

Anstatt einer Forschleife würde ich dir die Funktionen TimerDiff / TimerStart (mit While schleife) ans Herz legen damit kannst du weitaus präzieser arbeiten
-
mein updater vergleicht die version in der ini und die die meiner .exe alle dateien die zum programm dazugehören liegen in einem ordner auf dem ftp svr
in der ini steht dann welche dateien heruntergeladen werden müssen und wo sie hingehören.
meine ini sieht z.b. so aus:
[ftp]
file=/update/zusatz1.file
file=/update/zusatz2.file
file=/update/zusatz3.file
[lokal]
zusatz1.file=@sd\addons\zusatz1.file
zusatz2.file=@sd\addons\zusatz2.file
zusatz3.file=@sd\addons\zusatz3.fileder updater schaut welche files da in der ini aufm ftp liegen und lädt diese erstmal in den temp runter dann kopiert er sie entsprechend [lokal] (@sd wird einfach mit @ScriptDir ersetzt
) klappt eig. wunderbar so. Komplizierter wirds wenn dein programm z.b. ne options.ini hat wo der user einstellungen hat und du die nicht überschreiben möchtest.
Den Fall hatte ich einmal war en bissl ne wurschtelei aber es ging eig.
-
mein updater liest die komponenten die zur neuen version gehören aus der ini aus und kopiert sie entsprechend den pfaden in der inidatei in das verzeichnis
-
Mit "push" machst du dir hier keine Freunde
Was du machen kannst ist eine GUI mit entsprechenden Styles sodass die Leiste fehlt (wie das geht steht in der Hilfe)
Und dann eine Leiste machen aber um die zum Funktionieren zu bekommen wird aufwendig
-
Funktioniert das so??? Frage an die Autoit meister

Hab das jetzt einfach mal so vom VB abgeschrieben wie ich mir das dachteSpoiler anzeigen
[autoit]$obj = ObjCreate("WScript.Network")
[/autoit]
if @error Then MsgBox(0, "Obj", @error)
$printerpath = "\\Server\Printer"
$obj.AddWindowsPrinterConnection($printerpath)
Das script läuft durch ohne fehlermeldung... stimmts so??? -
Na wie wärs denn mit GUISetBkColor ?

-
keine ahnung ich vermute das IRC einen speziellen Header hat ähnlich wie bei Telnet vllt??? Und an dem erkennt der Client ob eine Datei im anmarsch ist

Sorry für die Ausdrucksweise^^ -
also generell kann man über irc dateien versenden wie das genau funktioniert (tcp) etc. weiss ich net.
Das dcc ist glaube ich nur der query selbst oder? Sobald die verbindung "steht" wird dann per tcp gesendet (glaub ich^^) -
ich denke mal er meint sowas?
Aus der Hilfe zu GUICtrlCreateContextMenuSpoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <ButtonConstants.au3>Opt('MustDeclareVars', 1)
[/autoit] [autoit][/autoit] [autoit]Example2()
[/autoit] [autoit][/autoit] [autoit]; *****************
[/autoit] [autoit][/autoit] [autoit]
; * Second sample *
; *****************
Func Example2()
Local $hGui, $OptionsBtn, $OptionsDummy, $OptionsContext, $OptionsCommon, $OptionsFile, $msg
Local $OptionsExit, $HelpBtn, $HelpDummy, $HelpContext, $HelpWWW, $HelpAbout
$hGui = GUICreate("My GUI", 170, 40)$OptionsBtn = GUICtrlCreateButton("&Options", 10, 10, 70, 20, $BS_FLAT)
[/autoit] [autoit][/autoit] [autoit]; At first create a dummy control for the options and a contextmenu for it
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$OptionsDummy = GUICtrlCreateDummy()
$OptionsContext = GUICtrlCreateContextMenu($OptionsDummy)
$OptionsCommon = GUICtrlCreateMenuItem("Common", $OptionsContext)
$OptionsFile = GUICtrlCreateMenuItem("File", $OptionsContext)
GUICtrlCreateMenuItem("", $OptionsContext)
$OptionsExit = GUICtrlCreateMenuItem("Exit", $OptionsContext)$HelpBtn = GUICtrlCreateButton("&Help", 90, 10, 70, 20, $BS_FLAT)
[/autoit] [autoit][/autoit] [autoit]; Create a dummy control and a contextmenu for the help too
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$HelpDummy = GUICtrlCreateDummy()
$HelpContext = GUICtrlCreateContextMenu($HelpDummy)
$HelpWWW = GUICtrlCreateMenuItem("Website", $HelpContext)
GUICtrlCreateMenuItem("", $HelpContext)
$HelpAbout = GUICtrlCreateMenuItem("About...", $HelpContext)GUISetState()
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$msg = GUIGetMsg()
Switch $msg
Case $OptionsExit, $GUI_EVENT_CLOSE
ExitLoop
Case $OptionsBtn
ShowMenu($hGui, $msg, $OptionsContext)
Case $HelpBtn
ShowMenu($hGui, $msg, $HelpContext)
Case $HelpAbout
MsgBox(64, "About...", "GUICtrlGetHandle-Sample")
EndSwitch
WEnd
GUIDelete()
EndFunc ;==>Example2; Show a menu in a given GUI window which belongs to a given GUI ctrl
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Func ShowMenu($hWnd, $CtrlID, $nContextID)
Local $arPos, $x, $y
Local $hMenu = GUICtrlGetHandle($nContextID)
$arPos = ControlGetPos($hWnd, "", $CtrlID)
$x = $arPos[0]
$y = $arPos[1] + $arPos[3]
ClientToScreen($hWnd, $x, $y)
TrackPopupMenu($hWnd, $hMenu, $x, $y)
EndFunc ;==>ShowMenu; Convert the client (GUI) coordinates to screen (desktop) coordinates
[/autoit] [autoit][/autoit] [autoit]
Func ClientToScreen($hWnd, ByRef $x, ByRef $y)
Local $stPoint = DllStructCreate("int;int")
DllStructSetData($stPoint, 1, $x)
DllStructSetData($stPoint, 2, $y)DllCall("user32.dll", "int", "ClientToScreen", "hwnd", $hWnd, "ptr", DllStructGetPtr($stPoint))
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$x = DllStructGetData($stPoint, 1)
$y = DllStructGetData($stPoint, 2)
; release Struct not really needed as it is a local
$stPoint = 0
EndFunc ;==>ClientToScreen; Show at the given coordinates (x, y) the popup menu (hMenu) which belongs to a given GUI window (hWnd)
[/autoit]
Func TrackPopupMenu($hWnd, $hMenu, $x, $y)
DllCall("user32.dll", "int", "TrackPopupMenuEx", "hwnd", $hMenu, "int", 0, "int", $x, "int", $y, "hwnd", $hWnd, "ptr", 0)
EndFunc ;==>TrackPopupMenu -
vielleicht diese funktion: _GUICtrlListView_DeleteItemsSelected ?
-
So?
Wenn du nur Dateien haben willst und keine Unterordner schau in der Hilfe zur Funktion _FileListToArray nach da gibts nen Parameter
Spoiler anzeigen
[autoit]#include<GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include<File.au3>GUICreate("Files", 300, 300)
[/autoit] [autoit][/autoit] [autoit]
$lv = GUICtrlCreateListView("Dateien", 10, 10, 280, 280)
$files = _FileListToArray(@ScriptDir)
For $i = 1 To UBound($files)-1
GUICtrlCreateListViewItem($files[$i], $lv)
NextGUISetState()
[/autoit] [autoit][/autoit] [autoit]Do
[/autoit]
$msg = GUIGetMsg()
Until $msg = $GUI_EVENT_CLOSE -
Vielleicht sollte man aber noch erwähnen das ReDim nicht gerade sehr schnell ist (bei großen Arrays & viele Änderungen)