ich tippe darauf, daß die EXE gepackt ist also Packer weglassen. der macht dem AntiVir-Programm viel Streß!
Beiträge von autoBert
-
-
Ich kann euch nun aber auch einen Workaround zeigen. Vor dem Exit alle Inputs die mit dem Inputfilter verknüpft sind löschen. Alternativ können auch direkt die GUIs gelöscht werden.
Das ist zwar kein Bugfix aber zumindest kommt schonmal keine Fehlermeldung mehr.
Dies ist guter Programmierstil, aber daß die Schachkatze nicht aufräumt bevor ihr Programm den Speicher verlassen soll, daran hät ich nicht gedacht. Und außerdem scheint der (in die EXE eingebundene) AutoIt-Interpreter mit dem Aufräumen auch überfordert gewesen zu sein. Da tippe ich auf unverträglichkeiten 32/64 Bit bzw. unterschiedliche ntDLL-Versionen. Ich denke mit Hilfe der Daten in deinem Spoiler (speziell Adresse), kann der Bit- & Bytejongleur @Andy den/die Schuldigen ausmachen, ich schiebe solange den BUG M$ in die Schuhe.
Wie man aber sieht muß der Bug nicht sein, wenn sauber programmiert wird.
Übrigens: da ein Forum davon lebt, daß Lösungen zu finden sind, wäre es sehr nett, wenn du die von dir "nachgebaute" Version einstellen könntest.danke, (auto)Bert
-
Auf die schnelle würde ich sagen: "jeder weitere Slider überschreibt die Werte des zuvor erststellten" Die in Zeile 61 Global deklarierten Variablen gehören imho in ein 2 dimensionales Array in der jede Zeile in den Spalten die Werte für den jeweiligen Slider aufnimmt. Daher muß natürlich auch eine ID für jeden Slider verwaltet werden also auch mit ins Array. Eventuell sollten auch Breite und Höhe variabel gehalten werden, also noch 2 Spalten ins Array. Und, und ... Du solltest vor dem Anfangen/Weitermachen dein Konzept überdenken.
Deine func:
AutoItFunc _MouseOverControl($iControl) Local $aCursor = GUIGetCursorInfo($main_gui) If Not IsArray($aCursor) Then Return False If $aCursor[4] = $iControl Then ConsoleWrite('_MouseOverControl'&$iControl&': TRUE'&@CRLF) Return True EndIf EndFuncwird kein einziges Mal gecallt, für was ist sie dann im Skript? Selbst wenn du sie aufrufst würde für die Slider kein True zurückgegeben, diese sind keine Controls und auch andere Controls sehe ich nicht im Skript
zum Thema in einer Func Variablen Global zu definieren, solltest du https://www.autoitscript.com/wiki/Best_codi…es_of_Variables und https://www.autoitscript.com/wiki/Best_codi…Check_directive lesen. Die anderen Teile schaden auch nicht, hilft auf jeden Fall Code zu schreiben, der leicht von anderen gelesen werden kann.
Schau dich mal bei @UEZ dazu um, der macht eine Menge mit GDI. Würde mich wundern wenn er noch keine Porgressbar gemacht hat.
mfg (auto)Bert
-
... ich habe lieber die verschollene Version 1.1 nachgebaut, als mir RegExp genauer anzuschauen. Die offizielle Version 1.1 ist aber sicher besser als mein Konstrukt.
daran könnten ja die Absturzmeldingen kommen.
-
Du willst also die Ausgabe deiner Lautsprecher aufnehmen? Dann lies dich mal in Themen von @eukalyptus zum Stichwort bass bzw. DirectSound ein. Speziell:
-
hast du eine idee, wie man das machen kann, dass autoit nachdem ich einen button geklickt habe, automatisch einen andere button "drückt" ?
in meinem Beispiel einfach kannst du mit
einen zufälligen Klick erzeugen und falls das Feld noch nicht besetzt war, wird sogar zufällig die Farbe (rot/grün) zufällig gesetzt.
Falls du wirklich Tic Tac Toe programmieren willst einfach die Func _click so erweitern, daß bei bereits besetzte Felder eine Fehlermeldung kommt und den 2. Random immer mit 0 oder 1 ersetzen, jenachdem welche Farbe du der KI zuweisen willst.
Außerdem muß in "GuiGetMsgLoop" ein Schalter (boolsche Variable) zum Steuern ob auf einen Klick von dir gewartet wird oder ansonsten ein automatischer Klick ausgeführt wird, eingefügt werden. Du must natürlich dafür sorgen daß du nur eine der beiden Maustasten benutzen kannst. Am Ende der _click func wird der Schalter umgelegt:
Tic Tac Toe ist eine gute Übung, um Programmlogik zu entwicklen. Ich bin mir auch sicher schon Tic Tac Toe Skripte im Forum gesehen zu haben, aber beim selber entwickeln lernst du mehr. Notfalls kannst du auch auf Wikipedia nachschauen, da gibt es die Reihen, wie gezogen werden muß damit der Gegner nicht gewinnen kann. -
Ich habe schlechte Augen, außer das ich meinen Bildschirm wieder einmal säubern sollte, fällt mir beim Betrachten nichts auf. Und auch meine 1. Vermutung, das $WS_SIZEBOX damit zu haben könnte, hat sich nicht bestätigt. Egal wie ich die GUI-Größe verändere, das Ergebnis bleibt gleich.
-
Bist Du dir da sicher mit 9592 möglichen Primzahlen?
@'MatthiasG. hat eine func (_MathEx_CreatePrimes Erstellt Primzahlen), damit kannst du dies ganz leicht überprüfen:
AutoIt: Demo _MathEx_CreatePrimes
Alles anzeigen#Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Res_Fileversion=1.2.0.2 #AutoIt3Wrapper_Res_SaveSource=y #AutoIt3Wrapper_Res_Language=1031 #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** #include <Array.au3> #include <File.au3> $sFile='Primes.txt' $hFile=FileOpen($sFile,2) $tdStart=TimerInit() $aPrimes = _MathEx_CreatePrimes(99999) FileWriteLine($hFile,@CRLF&'Primes searched in 2-99999') FileWriteLine($hFile,' Primes found in '& TimerDiff($tdStart)/1000 & ' sec') FileClose($hFile) $aPrimes[0]=$aPrimes[0]&' Primes found in '& TimerDiff($tdStart)/1000 & ' sec' _FileWriteFromArray($sFile,$aPrimes) _ArrayDisplay($aPrimes,'Primes searched in 2-99999') ShellExecute($sFile) ; #FUNCTION# ==================================================================================================================== ; Name...........: _MathEx_CreatePrimes ; Beschreibung...: Gibt ein Array voller Primzahlen zurück. ; Syntax.........: _MathEx_CreatePrimes($number) ; Parameter......: $number - Zwischen 2 und $number werden die Primzahlen gesucht ; Rückgaben......: Erfolg - Gibt ein Array zurück. Im 0ten Element steht die Anzahl an Zahlen, im Rest die Primzahlen selbst. ; Fehler - Gibt 0 zurück, wenn $number kein Integer ist oder kleiner als 2 ist ; Autor(en)......: AutoBert <AutoBert at autoit dot de>, Progandy <Progandy at autoit dot de>, ; Matthias Gianfelice <matthias at gianfelice dot de> ; =============================================================================================================================== Func _MathEx_CreatePrimes($number) If Not IsInt($number) Or $number < 2 Or $number > 16777215 Then Return 0 $number += 3 Local $array_mathex_gestrichen[$number - 2] For $i = 0 To $number - 3 $array_mathex_gestrichen[$i] = False Next Local $i = 2 While $i * $i <= $number If Not $array_mathex_gestrichen[$i] Then For $j = $i * $i To $number - 3 Step $i $array_mathex_gestrichen[$j] = True Next EndIf $i = $i + 1 WEnd Local $integer_mathex_anzahl = 0 For $i = 2 To $number - 3 If Not $array_mathex_gestrichen[$i] Then $integer_mathex_anzahl += 1 Next Local $array_mathex_primzahlen[$integer_mathex_anzahl + 1], $integer_mathex_aktuell = 1 $array_mathex_primzahlen[0] = $integer_mathex_anzahl For $i = 2 To $number - 3 If Not $array_mathex_gestrichen[$i] Then $array_mathex_primzahlen[$integer_mathex_aktuell] = $i $integer_mathex_aktuell += 1 EndIf Next Return $array_mathex_primzahlen EndFunc ;==>_MathEx_CreatePrimesund siehe da Andy wird durch diese Funktion bestätigt: "9592 Primes found in 1.33128914455116 sec"
'
-
Ich befürchte nämlich, daß nur 1 Instanz von Chrome geöffnet ist und die Webseiten als TAB's eingebettet sind.
Vermutung gerade bestätigt, dann solltest du wirklich die https://www.autoitscript.com/forum/topic/154439-chrome-udf/ testen.
-
Ich glaube schon, dass es möglich ist. Siehe ControlClick(). Aber wozu soll das denn gut sein? Kann mir keinen sinnvollen Einsatz deines Vorhabens vorstellen.
Sicher will er aus dieser Vorlage:
C
Alles anzeigen#include <GUIConstantsEx.au3> #include <Array.au3> Opt('MustDeclareVars', 1) Global $aBtnIds[10][2] Global $hGui = GUICreate('Buttontest', 105, 145) Global $msg, $Handle, $aPos For $i = 0 To 8 $aBtnIds[$i][0] = GUICtrlCreateButton($i + 1, 10 + Mod($i, 3) * 30, 10 + Int($i / 3) * 30, 25, 25) ;$aBtnIds[$i][0] enthält jetzt die ID ConsoleWrite($i + 1 & ': ' & $aBtnIds[$i][0] & @CRLF) GUICtrlSetBkColor(-1, 0x12345678) $aBtnIds[$i][1] = 'leer' Next $aBtnIds[9][0] = GUICtrlCreateButton('OK', 10, 110, 90, 25) ConsoleWrite('OK: ' & $aBtnIds[$i][0] & @CRLF) GUISetState() While 1 $msg = GUIGetMsg() Switch $msg Case $GUI_EVENT_CLOSE Exit Case $aBtnIds[0][0] To $aBtnIds[8][0] _Click($msg - $aBtnIds[0][0], True) Case $aBtnIds[9][0] _Farben() Case $GUI_EVENT_SECONDARYUP $aPos = GUIGetCursorInfo() _Click($aPos[4] - $aBtnIds[0][0]) EndSwitch WEnd Func _Click($iBtn, $bPrimary = False) Local $sButton ConsoleWrite('_Click: ' & $iBtn & @CRLF) If $bPrimary Then $sButton = 'Primary' If $aBtnIds[$iBtn][1]='leer' Then GUICtrlSetBkColor($aBtnIds[$iBtn][0], 0x990000) $aBtnIds[$iBtn][1]='rot' Else $sButton = 'Secondary' If $aBtnIds[$iBtn][1]='leer' Then GUICtrlSetBkColor($aBtnIds[$iBtn][0], 0x059122) $aBtnIds[$iBtn][1]='grün' EndIf MsgBox(0, $sButton & ' Buttonclick', 'Button with ID ' & $aBtnIds[$iBtn][0] & ' was clicked.' & @CRLF & 'The text of the button is: ' & ControlGetText('Buttontest', '', $aBtnIds[$iBtn][0]) & @CRLF, 5, $hGui) ConsoleWrite(GUICtrlRead($aBtnIds[$iBtn][0]) & @CRLF) EndFunc ;==>_Click WinList Func _Farben() Local $sText = '', $aBtns For $i = 0 To 8 $sText &= $aBtnIds[$i][1] If $i < 8 Then $sText &= '|' Next ConsoleWrite($sText & @CRLF) $aBtns = StringSplit($sText, '|') $aBtns[0] = UBound($aBtns) - 1 _ArrayDisplay($aBtns, 'Farben', '', 32) EndFunc ;==>_Farbeneine KI für Tic Tac Toe entwickeln. Der 1. Zug soll aber zufällig sein.
-
Mach mal ScreenShot(s) von Chrome, damit ich mir ein Bild machen kann. Ich befürchte nämlich, daß nur 1 Instanz von Chrome geöffnet ist und die Webseiten als TAB's eingebettet sind.
Hast du schon einmal
Chrome support for AutoIT is here! [Blockierte Grafik: https://www.autoitscript.com/forum/uploads/…11111111111.png]
This UDF includes a Chrome Extension (http://developer.chrome.com/extensions/getstarted.html) and Native Messaging Host (http://developer.chrome.com/extensions/mes…-messaging-host) that integrate with a new Chrome UDF (Chrome.au3) to provide automation support for the Chrome browser.ausprobiert? Ich benutze kein Chrome und kann dir daher auch nicht sagen, ob und wie sie dein Problem lösen kann.
-
Wird erledigt, Sir. Falls ich jemals Erleuchtung finden sollte (ich glaube nicht daran, aber man weiß ja nie) teile ich sie mit allen
Ja danke, ich wußte du lebst den Open-Brain Gedanken.
-
Mars: und ich bleibe dabei es waren AusserIrdische. Die AI's haben unseren Planeten nach Energie gescannt und sind prompt auf dich gekommen den Energiebringer, wie deinn Name ja sagt, wenn die AI's jetzt in der Umkaufbahn der Erde verhungern, bist du SCHULD!

[OT im OT] ich bin zwar 3-fach erleuchtet (2 warme Blitze < 20 m + 1 kalter fast zum Anfassen) aber mein IQ hat nicht ausgereicht, es blieb bei Photo's eines ~Erdenbewohners. @Xori: du magst zwar über dem Durchschnitt sein, aber dir fehlt das Wissen zu dem begehrten Spezialgebiet: MARS = Energierückgewinnung.
Beim nöchsten Mal solltest du dem Contest der AI's Ernst nehmenm du wirst dann mit dir (und uns allen) bisher unbekanntem Wissen über Naturgesetze belohnt. [/OT im OT]
-
@autoiter & @Xorianator: könnt ihr bitte einmal aufhören gegen AutoMit zu bashen? Nicht jeder hat wie ihr einen IQ von 160++!
Wenn ihr nicht helfen wollt einfach nicht antworten. Und das immer Lösungen im Entwicklerforum gesucht und prompt gepostet werden zähle ich auch dazu, zumindest wenn es hier auch gute Lösungen gibt.Danke falls ihr beide (und alle anderen) dies in Zukunft beachtet, aber dies mußte imho wirklich einmal gesagt werden,
also nicht für Ungut Gruß (auto)Bert
-
Ist afaik nicht möglich, du müsstest dich mit einem WorkAround behelfen, jeweils ein Radio- und ein dazugehöriges Labekcontrol.
PS.: sorry das ich deine andere Frage (ContextMenu) in Entwichkerforum nicht bzw. mißverstanden habe.
-
-
Andy: das ist ein Test was der Praktikant drauf hat, naja Google kennt er wenigstens. Ich hatte zu Zeiten ohne Internet einen Praktikant betreut, der ein Projekt in GWBasic lösen sollte, ich dachte es wäre nicht möglich. Aber mit kleinen Anweisungen, Übungsaufgaben hat er ohne jegliche GWBasic Erfahrung gezeigt, daß man auch damit lesbaren, für andere nachvollziehbaren Code erstellen kann. Die Übersetzung zwischen aus dem Kaufmannsdeutsch, habe am Anfang ich gemacht. Ob er Geld für sein Praktiumssemester bekommen hat weiß ich nicht, aber meinen Respekt hat er sich mehr als verdient.
-
Hatte ich auch versucht, klappt aber wegen dem "nomerge" nicht.
mache ein reproduzierbares Skript mit Zugriff auf einen öffentlichen Server (muß nicht eurer sein) mit dem du zeigst, daß es mit IE.au3 Funktionen nicht klappen kann weil "nomerge" gesetzt ist. Wenn das einloggen über AutoIt nicht klappt liegt dies meist an der Fehlbenutzung von Funktionen, danach erst bei Typos in den Accoundaten (trotzdem zuerst prüfen).
-
Ein Chef der AutoIt empfiehlt ? Den muss ich unbedingt mal kennenlernen
Andy?
-
Kann das Skript noch so angepasst werden, dass es den Cursor wirklich dauerhaft ändert, auch und gerade bei Edit, Word und Excel?
MS weiß ja sicher am besten wie man Mauscursor verändert, also wenden sie es in ihren Anwendungen auch an. Hier gilt wer zu letzt ändert hat Recht.
Und dein Vorhaben ist für mich schon ein Spaßvirus um den armen User zu verwirren.