Hmm gut, beim Lesen hab ich mir gedacht "Wenn <Win10 -> dann upgraden".
Beiträge von alpines
-
-
Das kommt darauf an wie du deine Schleifen implementierst.
ExitLoop würde den Durchlauf der 2. Dimension unterbrechen und mit der Schleife in der 1. Dimension weiterarbeiten.
ContinueLoop würde den Durchlauf der 2. Dimension unterbrechen aber nicht die aktuelle Schleifeniteration der 1. Dimension durchlaufen sondern erst die nächste.
Die Zahl bei ExitLoop oder ContinueLoop gibt an auf welchem Level der Befehl stattfinden soll, dabei gilt ExitLoop = ExitLoop 1.
-
Trotzdem geht beim "Verstecken" meine Funktion in der Schleife alle, auch ungenutzten 2D Array Elemente durch.
Prüf ob der Index leer ist und verwende ContinueLoop 2 bzw. ExitLoop.
Kann ich um diese Prozesse zu beschleunigen auch Dictionarys irgendwie einsetzen?
Dictionaries haben algorithmisch eine generell kürzere Laufzeit als normale Arrayiterationen, allerdings wird sich dieser Unterschied bei < 100 überhaupt nicht bemerkbar machen.
Und ich rede nur von der Zeit das Element zu suchen und anzusprechen.
Springst du aus dem Array raus wenn du einen leeren Index findest (danach kommt ja vermutlich nichts mehr) dürftest du wesentlich schneller unterwegs sein als normal.
-
So...
Ich dachte auch daran, aber warum nicht direkt @OSVersion?
Sollte im BIOS ein 10 Key hinterlegt sein aber es ist 7 installiert, so kann man das mit deiner Variante auch nicht rausfinden.
Aber wer hat im BIOS ein 10 Key und dann niedrigeres OS?
-
-
-
-
Ihr müsst wissen, die obigen Lösungen habe ich in einem größeren Zeitraum versucht und bin nie dahinter gekommen was egt genau falsch läuft.
Wann genau beendet sich das Skript denn? Meine Vermutung wäre, dass du auf bestimmte Ressourcen zugreifst und das wegen dem veränderten WorkingDirectory (ist ja jetzt @TempDir) nicht funktioniert.
Versuch mal die Dateien per FileRead zu lesen statt IniRead. Solange du permanent nichts in die Datei schreibst und so keine Inkonsistenzen entstehen, solltest du das Problem (der Zugriffsverweigerung) lösen können.
Es kann sein, das IniRead die Datei sperrt.
-
Hab´s rausgefunden. Der Denkanstoß hat geholfen.
Na dann poste uns doch das Skript damit du anderen Usern, die in Zukunft danach suchen könnten, damit aushelfen kannst.

-
Aber worauf willst du hinaus?
Wenn das schon in [0] steht dann verwende das auch direkt, ist semantisch konsequenter.
Ich hab allerdings dein Problem nicht wirklich verstanden, willst du die Abfrage die du gemacht hast für alle Dateiendungen vornehmen? Dann schieb deine Arrays in ein anderes Array und iteriere durch das.
-
For $i = 1 To UBound($aFileList_Source_erstellen_plaene_pdf) - 1
Nebenbei bemerkt: Du fängst bei Index 1 an und läufst bis zum Ende indem du es ausrechnen lässt. Rate mal was im 0. Index steht.
-
wenn ich nun einen gazen haufen Daten (z.B. Die arbeitszeiten eines ganzen Jahres.) über ein AutoIt script in ein Exceldokument füttern will, dauert das über die "Offizielle" Excel.au3 UDF relativ lange. (je nach leistung des Rechners kann das zwischen 1 und 3 Minuten dauern.)
Plain Text kann AutoIt um einiges Flotter einfach mal eben so schreiben, als ein Exceldokument. da sollte das ganze in einigen sekunden abgehakt sein.Das kann ich so nicht unterschreiben. Unter Umständen ist dein Code einfach schlecht, und deshalb so langsam.
-
Dazu müsste es eine Funktionsreferenz vom Hersteller geben oder du versuchst die Methoden des COM-Objektes zu dumpen.
OleView könnte helfen: https://bettersolutions.com/vba/visual-bas…ect-browser.htm https://msdn.microsoft.com/de-de/library/d0kh9f4c.aspx
-
Du musst auch schon das ganze Paket herunterladen, die Constants liegt bei: https://www.autoitscript.com/forum/files/file/381-outlookex/
-
Okay, nach ein bisschen rumgestochere habe ich das Problem gefunden. Offenbar sind die transparenten Bereiche in 7 klickbar und in 10 nicht.
Da gibts aber einen "einfachen" Workaround. Zuerst habe ich versucht die Region des Controls auf seine eigentliche Region zu vergrößern aber das gelang mit nicht.
Du kannst um das ganze rudimentär zu lösen die WM_LBUTTOMUP Nachricht registrieren und abfragen in welcher Position (auf welchen Button) geklickt wurde und dann die entsprechende Funktion ausführen.
Aber da muss es doch bestimmt eine leichtere Methode geben...
-
-
-
-
-
Beide Radios, sowie die Labelbuttons klappen ohne Probleme mit dem geposteten Script von mir.
cmd.jpg liegt im selben Ordner und beide MsgBoxen tauchen auf. 3.3.14.2
AutoIt
Alles anzeigen#include <StaticConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #Include <GuiButton.au3> #include <GuiTab.au3> #include <Array.au3> #include <EditConstants.au3> Opt("GUIOnEventMode", 1) Local $hMain[8] Local $GUI, $GUIChild Local $aDropFiles _GUIMain() While 1 WEnd Func _GUIMain() $hMain[0] = 7 $GUI = GUICreate("GUIMain",1245,800,-1,-1,$WS_MAXIMIZEBOX,$WS_EX_ACCEPTFILES+$WS_EX_LAYERED) GUICtrlCreatePic(@scriptdir&"\"&"cmd.jpg",0,0,1245,800,$WS_CLIPSIBLINGS) GUICtrlSetState(-1,$GUI_DISABLE) $GUIChild = GUICreate("GUIMain",1245,800,-1,-1,$WS_POPUP,BitOr($WS_EX_LAYERED,$WS_EX_MDICHILD), $GUI) GUISetFont(12, 0, 0, 0, $GUIChild, 5) GUISetBkColor(0x605f5f, $GUIChild) GUICtrlSetDefColor(0xffffff, $GUIChild) GUICtrlSetDefBkColor(0x605f5f, $GUIChild) GUISetIcon(@ScriptDir & "\tools\icon.ico", $GUIChild) GUICtrlCreateLabel("",10,195,400,125,-1,$WS_EX_CLIENTEDGE) GUICtrlSetState(-1, $GUI_DISABLE) GUICtrlCreateLabel("aUserDir[1]",15,200,390,25,BitOr($SS_CENTER,$SS_CENTERIMAGE),-1) GUICtrlSetFont(-1,15,0,0,0,5) $hMain[1] = GUICtrlCreateLabel("aUserDir[1]",15,240,390,25,$SS_CENTERIMAGE,$WS_EX_CLIENTEDGE) GUICtrlSetFont(-1,13,0,0,0,5) $hMain[2] = GUICtrlCreateLabel("Drag & Drop or Browse to change.",15,280,260,25,$SS_CENTERIMAGE,$WS_EX_CLIENTEDGE) GUICtrlSetState(-1,BitOr($GUI_SHOW,$GUI_ENABLE,$GUI_DROPACCEPTED)) GUICtrlSetFont(-1,14,0,0,0,5) $hMain[3] = GUICtrlCreateLabel("Browse",280,280,60,25,$SS_CENTERIMAGE+$SS_CENTER,$WS_EX_CLIENTEDGE) $hMain[4] = GUICtrlCreateLabel("Exit",1110,730,120,30,$SS_CENTERIMAGE+$SS_CENTER,$WS_EX_CLIENTEDGE) $hMain[5] = GUICtrlCreateGroup("Open Question",125,362,109,81,-1,-1) $hMain[6] = GUICtrlCreateRadio("On",157,390,53,20,-1,-1) $hMain[7] = GUICtrlCreateRadio("Off",157,416,53,20,-1,-1) GUICtrlCreateGroup("", -99, -99, 1, 1) For $i = 1 To $hMain[0] DllCall("UxTheme.dll", "int", "SetWindowTheme", "hwnd", GUICtrlGetHandle($hMain[$i]), "wstr", 0, "wstr", 0) GUICtrlSetColor(-1, 0xFFFFFF) Next GUIRegisterMsg($WM_DROPFILES, 'WM_DROPFILES') GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit", $GUI) GUISetOnEvent($GUI_EVENT_DROPPED, "_Dropped", $GUIChild) GUICtrlSetOnEvent($hMain[3], '_Browse') GUICtrlSetOnEvent($hMain[4], '_Exit') _WinAPI_SetLayeredWindowAttributes($GUIChild, 0x605f5f) GUISetState(@SW_SHOW, $GUI) GUISetState(@SW_SHOW, $GUIChild) EndFunc Func _Browse() MsgBox(0, "Test", "Browse") EndFunc Func _Dropped() _ArrayDisplay($aDropFiles) EndFunc Func _Exit() MsgBox(0, "Test", "Exit") Exit EndFunc Func WM_DROPFILES($hWnd, $iMsg, $wParam, $lParam) #forceref $hWnd, $iMsg, $lParam Local $iSize, $pFileName Local $aRet = DllCall("shell32.dll", "int", "DragQueryFileW", "hwnd", $wParam, "int", 0xFFFFFFFF, "ptr", 0, "int", 0) Global $aDropFiles[$aRet[0] + 1] = [$aRet[0]] For $i = 0 To $aRet[0] - 1 $aRet = DllCall("shell32.dll", "int", "DragQueryFileW", "hwnd", $wParam, "int", $i, "ptr", 0, "int", 0) $iSize = $aRet[0] + 1 $pFileName = DllStructCreate("wchar[" & $iSize & "]") DllCall("shell32.dll", "int", "DragQueryFileW", "hwnd", $wParam, "int", $i, "ptr", DllStructGetPtr($pFileName), "int", $iSize) $aDropFiles[$i + 1] = DllStructGetData($pFileName, 1) $pFileName = 0 Next Return $GUI_RUNDEFMSG EndFunc