1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Leo.1906

Beiträge von Leo.1906

  • File to Base64 String Code Generator v1.20 Build 2020-06-05

    • Leo.1906
    • 13. April 2017 um 12:55

    Heißt das also das ich dein altes Tool nutzen kann um die Dateien zu komprimieren und die neuen Funktionen mit ASM Code zum dekomprimieren? Also einfach die alten automatisch generierten Funktionen durch die neuen ersetzen?
    Denn es ist ja wohl immer besser die performantesten Funktionen zu nutzen..

    Edit: es hat sich aber doch relativ viel geändert wenn jetzt eine andere, wesentlich bessere da schnellere, kompressions Methode verwendet wird..

  • File to Base64 String Code Generator v1.20 Build 2020-06-05

    • Leo.1906
    • 12. April 2017 um 17:46

    Es ist zwar schon etwas her, dass Cape-City hier bemerkt hat, dass du inzwischen eine neuere Version deines (echt klasse!) tools hast, in der nicht nur optische änderungen gemacht wurden?
    Ich habe jetzt in zwei deiner neuen UDFs gesehen, dass du ASM Code zum dekomprimieren benutzt. Sind diese Funktionen denn performanter als die alten verwendeten? Wenn ja, könntest du dich dann erbarmen uns auch daran teilhaben zu lassen? :)
    ASM ist ja eigentlich das schnellste zu dem man Autoit bewegen kann, oder?

  • DotNETExporter

    • Leo.1906
    • 21. September 2016 um 17:59
    Zitat von alpines

    Geht ja nicht darum obs funktioniert oder nicht sondern das es (zumindest mMn.) umständlicher ist, die DLL normal zu exportieren und dann zu decompilen und dann noch durch ein Tool zu jagen wenn man direkt im Source alles reinschreiben, compilen und sofort nutzen kann. Aber soll jeder selber wissen wie er es machen will.


    Ja, es ist bestimmt viel einfacher das direkt zu machen. Gut das du das hier nochmal geschrieben hast, ich hatte deinen Post dazu überhaupt nicht gesehen. Bin vom googlen direkt auf den von mir zitierten Thread gestoßen und hab dann nicht mehr weiter geguckt :D
    Bei früheren Recherchen dazu habe ich nichts ordentliches gefunden, da hab ich aber auch meist auf englisch gegooglet .. :D

    Ich werde dein Tutorial auch mal bei Gelegenheit testen ;)

  • DotNETExporter

    • Leo.1906
    • 21. September 2016 um 16:39

    Ja, also wenn man dieses tutorial hier befolgt, dann kann man in C# erstellte DLL's in autoit benutzbar machen: C#-DLL in AutoIt einbinden

    und wenn Andy sagt, dass bei ihm das tool funktioniet hat, dann wird das wohl stimmen :D
    C#-DLL in AutoIt einbinden

  • DotNETExporter

    • Leo.1906
    • 21. September 2016 um 01:01

    Hmm .. es klang in dem anderen Thread irgendwie so: C#-DLL in AutoIt einbinden
    Aber ich hab sein step by step tutorial für das Call-bar machen von C# dll's mal getestet und das funtkioniert bestens :)
    Per Hand ist das ganze ja auch kein Problem .. da braucht man das tool nicht unbedingt :)

  • DotNETExporter

    • Leo.1906
    • 20. September 2016 um 22:38

    Das Programm funktioniert mit Visual Studio 2015 nicht mehr, oder?
    Jedenfalls bekomme ich immer die Meldung, dass der Decompiler nicht gefunden wird ..

    Korrekt, oder liegts an mir? Was war denn die letzte funktionierende Version von Visual Studio für da Tool hier?

  • Text unter Radio Button anzeigen lassen

    • Leo.1906
    • 15. Juli 2016 um 00:01
    Zitat von autoBert

    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.

    Haha das ist doch kein Ding :D
    Ich lass das jetzt erstmal sein, habe keine Zeit für so ne Spielereien.

    Zum Thema: ich hab das jetzt auch mit Labels gelöst. Wäre einfacher gewesen, wenn das eingebaut wäre, aber ist ja kein Ding .. :)
    Denke auch dass das Thema dann damit erledigt wäre. Wollte nur mal bei den Profis hier anfragen, ob es iwie möglich ist, nachdem ich da dran gescheitert bin :D

  • Text unter Radio Button anzeigen lassen

    • Leo.1906
    • 14. Juli 2016 um 22:03

    Ich möchte den Text des Radio Button unter diesem und nicht rechts daneben angezeigt bekommen.

    AutoIt
    GUICtrlCreateRadio("Don't show", 300, 330, 50, 25, $BS_BOTTOM)

    Ich dachte das es so vielleicht geht, aber damit hatte ich leider auch keinen Erfolg.
    Alternativ muss ich den Text weglassen und direkt darunter ein Label erstellen. Das ist aber umständlich, besonders wenn man viele Radio Buttons hat. Außerdem wäre es ein wenig gepfuscht ..

    Weiß jemand was? :)

    Liebe Grüße,
    Leo.1906

  • Prog übergibt Parameter an seine 1 Instanz (mehrere Dateien via Kontext-Menü)

    • Leo.1906
    • 7. Juli 2016 um 16:57

    SendTo ist natürlich eine Option, aber eben auch nicht immer. Wenn man verschiedene Möglichkeiten des Aufrufs seines Programms möchte, dann geht das nicht so einfach.
    In meinem Fall habe ich einen Converter geschrieben und über Context Menü wählt man aus in welches Format konvertiert werden soll.
    Ich habe das ganze mit shared-variablen jetzt zu 100% zuverlässig gelöst bekommen. Das Hauptprog erstelle eine Variable und gibt diese frei. Das Hilfsprogramm (welches uU mehrfach geöffnet wird) schreibt dort die parameter rein. Das Hauptprog überwacht diese ständig. Wenn sich etwas ändert, dann tut es das was es soll :)

  • Problem mit WIndows Context Menü und Shared-Variables - Programm verhält sich beim ersten Aufruf anders

    • Leo.1906
    • 5. Juli 2016 um 12:18

    Nach noch mehr tests muss ich leider sagen, dass eukalyptus Variante genau so Fehlerbelastet ist wie die mit den Shared-Variablen ..

    Edit: ich war wohl etwas voreilig, tut mir leid :D
    Die Variante mit den Shared-Variablen ist die absolut beste. Das Problem hier wird wohl ein Race Condition Bug gewesen sein. Deswegen hat es mal funktioniert und mal nicht. Es darf natürlich nicht passieren das zwei Instanzen zeitgleich auf die Variable zugreifen und noch schlimmer, sie verändern. Ich habe die Exe, die erstellt wird, jetzt so angepasst das sie wartet bis die vorherigen geschlossen sind und dann erst schreibt. Ich dachte das hätte ich schon gemacht, aber das war grob fehlerhaft programmiert :D
    Außerdem habe ich ein paar Sleeps entfernt, was performance-technisch keinen Unterschied macht, aber noch zusätzlich dazu beiträgt, dass das ganze jetzt 100% läuft. Ich habe beim Testen keinen einzigen Fehlerhaften Aufruf mehr feststellen können :)

  • Prog übergibt Parameter an seine 1 Instanz (mehrere Dateien via Kontext-Menü)

    • Leo.1906
    • 5. Juli 2016 um 11:40

    Hi eukalyptus. Erstmal vielen Dank für deinen Code hier! Das ist echt ne super Lösung für das Problem :)
    Und entschuldigt bitte das ich den alten Thread hier wieder ausgrabe, aber mir ist beim Testen ein Problem aufgefallen. Und zwar funktioniert das Programm nur so in ca. 90% aller Fälle. In 10% scheint sich eine der Exe'n aufzuhängen und blockiert somit alle anderen und damit auch das ganze Programm.
    Hast du eine Idee woran das liegen könnte und wie man das verhindern kann? :)

    lg
    Leo

    Edit: mein Workaround:


    AutoIt
    $timer = 0
    While 1
    	If ProcessExists("test.exe") Then
    		$temp = ProcessList("test.exe")
    		If $temp[0][0] > 1 Then
    			$timer += 250
    			If $timer >= 3000 Then
    				ProcessClose($temp[1][1])
    				$timer = 0
    			EndIf
    		EndIf
    	Else
    		$timer = 0
    	EndIf
    	Sleep(250)
    WEnd
    Alles anzeigen

    Man lässt ein extra programm laufen, welches checkt ob sich eins der Programme aufgehängt hat. Wenn ja, dann wird dieses beendet. Es ist immer die 1. exe im ProcessList Array, die sich aufhängt.

    Aber eine wirkliche Lösung kann das ja auch nicht sein, da so immer ein Element verloren geht ...
    Irgendwie muss da im Hauptprogramm noch etwas angepasst werden, aber ich weiß nicht wirklich was .. :/

  • Problem mit WIndows Context Menü und Shared-Variables - Programm verhält sich beim ersten Aufruf anders

    • Leo.1906
    • 5. Juli 2016 um 01:34
    Zitat von autoBert

    Prog übergibt Parameter an seine 1 Instanz (mehrere Dateien via Kontext-Menü)

    Das ist eine coole Lösung und funktioniert auch bestens. Nach einigem weiteren Testen muss ich leider zu dem Schluss kommen, dass die Lösung mit den Shared-Variablen leider zu unzuverlässig ist. Das wäre die einfachste Lösung gewesen.
    Ich hab jetzt auch ein wenig an dieser Lösung herumprobiert, aber ich weiß leider nicht wie ich das für mich praktikabel machen kann ..
    Ich weiß in diesem Fall nicht, wann alle Parameter übergeben worden sind und auch nicht, wie ich diese dann für mich nutzbar machen kann. Ich brauche die als String, getrennt mit Pipe, damit ich mit meinen Funktionen anfangen kann.
    Das GUI kann ja bleiben, ich muss das ja nicht unbedingt zeigen, damit es funktioniert.

    Weiß jemand wie ich da, nach beenden der Aufrufe alles auslesen kann? ?(

    Edit: Ok, ich weiß jetzt ca. wie ich es machen werde. Es läuft ja eh eine anderes Programm, welches dann checken kann ob diese Exe ausgeführt wurde. Da diese exe mehrfach startet und dann wartet, muss das Hauptprogramm nur so lange warten bis nur noch eine Instanz vorhanden ist. Dann muss es diese einfach auslesen.
    Ich hänge momentan nur noch am auslesen. Die hwnd der Control in die geschrieben wird bekomme ich raus, schaffe es aber noch nicht sie auszulesen ..

    Ich habe das Script von eukalyptus etwas angepasst, weil ich gehofft hatte, dass ich dieses so besser auslesen kann, aber das klappt trotzdem noch nicht :/

    Hier die Variante:

    AutoIt
    If $CmdLine[0]=0 And @Compiled Then RegWrite("HKEY_CLASSES_ROOT\*\shell\TestContext\command","","REG_SZ",'"' & @AutoItExe & '" "%1"')
    ;RegDelete("HKEY_CLASSES_ROOT\*\shell\TestContext")
    
    
    #include <Misc.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <Array.au3>
    #include <GuiRichEdit.au3>
    
    
    Opt("GUIOnEventMode", 1)
    
    
    If $CmdLine[0]<>1 Then Exit
    
    
    Global $WinTitle="Window Title"
    
    
    If _Singleton($WinTitle,1)=0 Then ;wenn nicht 1 Instanz
    	#NoTrayIcon
    	WinWait($WinTitle)
    	$Send_handle = WinGetHandle($WinTitle)
    	Do
    		$ProcList=ProcessList(@ScriptName)
    		Sleep(100)
    	Until $ProcList[2][1]=@AutoItPID ;wartet bis aktuelle Instanz an der Reihe ist - also [2][0], [1][0] ist ja die 1 Instanz mit GUI
    	_SendCopyDataString(0,$Send_handle,$CmdLine[1]);sendet den Commandline-Parameter an das GUI der 1 Instanz
    	Exit
    EndIf
    
    
    $gui = GUICreate($WinTitle,320,640)
    GUIRegisterMsg($WM_COPYDATA, 'MY_WM_COPYDATA');empfängt die Daten
    GUISetOnEvent($GUI_EVENT_CLOSE,"_EXIT")
    $Liste=_GUICtrlRichEdit_Create($gui, $CmdLine[1],0,0,320,640)
    GUISetState()
    
    
    While 1
    	Sleep(100)
    WEnd
    
    
    Func _SendCopyDataString($My_Hwnd, $Scite_hwnd, $sCmd)
    	Local $CmdStruct = DllStructCreate('Char[' & StringLen($sCmd) + 1 & ']')
    	DllStructSetData($CmdStruct, 1, $sCmd)
    	Local $COPYDATA = DllStructCreate('Ptr;DWord;Ptr')
    	DllStructSetData($COPYDATA, 1, 1)
    	DllStructSetData($COPYDATA, 2, StringLen($sCmd) + 1)
    	DllStructSetData($COPYDATA, 3, DllStructGetPtr($CmdStruct))
    	DllCall('User32.dll', 'None', 'SendMessage', 'HWnd', $Scite_hwnd, _
            	'Int', $WM_COPYDATA, 'HWnd', $My_Hwnd, _
            	'Ptr', DllStructGetPtr($COPYDATA))
    EndFunc
    
    
    Func MY_WM_COPYDATA($hWnd, $msg, $wParam, $lParam)
    	Local $Temp=""
    	Local $COPYDATA = DllStructCreate('Ptr;DWord;Ptr', $lParam)
    	Local $COPYDATA_StringLen = DllStructGetData($COPYDATA, 2)
    	Local $CmdStruct = DllStructCreate('Char['&$COPYDATA_StringLen&']', DllStructGetData($COPYDATA, 3))
    	$COPYDATA_String = StringLeft(DllStructGetData($CmdStruct, 1), $COPYDATA_StringLen)
    ;~ 	$Temp=GUICtrlRead($Liste)
    	_GUICtrlRichEdit_AppendText ($Liste, @CRLF &$COPYDATA_String)
    ;~ 	GUICtrlSetData($Liste,$Temp & @CRLF & $COPYDATA_String)
    EndFunc
    
    
    Func _EXIT()
    	Exit
    EndFunc
    Alles anzeigen

    Und hier das Script zum auslesen:


    AutoIt
    #include <Array.au3>
    #include <GuiRichEdit.au3>
    
    
    While 1
    	Sleep(100)
    	If ProcessExists("test.exe") Then
    		$temp = ProcessList("test.exe")
    		If $temp[0][0] > 1 Then
    			Sleep(100)
    		Else
    			$hwnd =  _GetHwndFromPID($temp[1][1])
    			$control = ControlGetHandle($hwnd, "", "RICHEDIT50W1")
    			$temp2 = _GUICtrlRichEdit_GetText($hwnd)
    			MsgBox(0, 0, $temp2)
    			Exit
    		EndIf
    	EndIf
    WEnd
    
    
    
    
    Func _GetHwndFromPID($PID)
        $hWnd = 0
        $stPID = DllStructCreate("int")
        Do
            $winlist2 = WinList()
            For $i = 1 To $winlist2[0][0]
                If $winlist2[$i][0] <> "" Then
                    DllCall("user32.dll", "int", "GetWindowThreadProcessId", "hwnd", $winlist2[$i][1], "ptr", DllStructGetPtr($stPID))
                    If DllStructGetData($stPID, 1) = $PID Then
                        $hWnd = $winlist2[$i][1]
                        ExitLoop
                    EndIf
                EndIf
            Next
            Sleep(100)
        Until $hWnd <> 0
        Return $hWnd
    EndFunc
    Alles anzeigen


    Irgendwelche Ideen? :)

    Edit2: Ok, ich habs jetzt gelöst. Mit ListBoxen funktioniert da auslesen aus dem anderen Programm. Auch wenn man das GUI des anderen nicht zeigt :)

  • Problem mit WIndows Context Menü und Shared-Variables - Programm verhält sich beim ersten Aufruf anders

    • Leo.1906
    • 4. Juli 2016 um 20:30

    Hallo Leute,

    ich hab hier ein Problem das ich nicht verstehe. Hab schon so mega viel getestet, aber ich versteh nicht warum es nicht klappt .. :D
    Erstmal etwas hinführendes:

    Wenn man in Windows ein Programm im Contextmenü von Dateien registriert und mehrere Dateien selektiert und dann den Befehl ausführt, wird das registrierte Programm mehrfach gestartet, anstatt einmal. Hierbei wird immer die selektierte Datei als Parameter übergeben. Also muss man hier ein Workaround machen. Es geht leider wirklich nicht anders ..
    Man könnte jetzt den Parameter den Windows übergibt in eine Datei schreiben und das Hauptprogramm diese ständig angucken lassen, aber das würde zu extrem vielen Festplattenzugriffen führen, was suboptimal ist :D
    Also erstelle ich eine Variable im RAM auf welche zwei Autoit-Exen zugreifen können. An sich keine schwere Sache dank der vielen UDFs die es für Autoit schon gibt.
    Doch leider verhält sich das Programm, wenn es durch Windows aufgerufen wird beim ersten Start anders, als bei den darauf folgenden.

    Ich weiß nicht ob ihr mir bis hierhin folgen könnt ..

    Ich habe meine Code auf die nötigen Stellen vereinfacht, damit das Problem nachvollzogen werden kann.
    Alle nötigen includes und eine compilierte Exe findet sich im Anhang.
    Bevor die Main.exe bzw. au3 ausgeführt werden kann muss einmal das Install-Script ausgeführt werden.

    Hier mal der Code vom Install:

    AutoIt: install.au3
    #RequireAdmin
    #AutoIt3Wrapper_UseX64=y
    
    
    Global $dest = "C:\Test"
    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\test", "MUIVerb", "REG_SZ", "Test1")
    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\test\command", "", "REG_SZ", $dest&"\test.exe %1 test1|test2")
    RegWrite("HKEY_CLASSES_ROOT\*\shell\Test", "MUIVerb", "REG_SZ", "test")
    RegWrite("HKEY_CLASSES_ROOT\*\shell\Test", "SubCommands", "REG_SZ", "test")


    Und hier der Code der Main.au3:


    AutoIt: Main.au3
    #include "_SharedVar2.au3"
    
    
    Global $dest = "C:\Test"
    DirCreate($dest)
    Global $L_var1 = 1
    Global $L_var2 = 2
    _SharedVar_SetDeclarationsInProcess(0,1)
    _SharedVar_DeclareVar($L_var1,'char[4000]', "")
    _SharedVar_DeclareVar($L_var2,'char[4000]', "")
    Global $pointer = $gg_sv_pPointer4vars
    
    
    _createExe($pointer)
    If @error Then ;in very rare cases the pointer can't be created. If so then retry it ..
    	Run(@AutoItExe)
    	Exit
    EndIf
    
    
    While 1
    	If ProcessExists("test.exe") Then	;let the other program finish it's writing
    		While ProcessExists("test.exe")
    			Sleep(500)
    		WEnd
    	EndIf
        If _sv_read($L_var1) <> "" Then
    		MsgBox(0, _sv_read($L_var2), _sv_read($L_var1))
    		_sv_write($L_var1, "")
    		_sv_write($L_var2, "")
    	EndIf
    	Sleep(200)
    WEnd
    
    
    
    
    Func _createExe($pointer)
    	Local $file
    	$src = 		'#NoTrayIcon' & @CRLF & _
    				'#include "_SharedVar.au3"' & @CRLF & _
    				'If $cmdline[0] > 0 Then' & @CRLF & _
    				'	$cmd = ""' & @CRLF & _
    				'	For $i = 1 to ($cmdline[0]-1)' & @CRLF & _
    				'		$cmd = $cmd & $cmdline[$i] & " "' & @CRLF & _
    				'	Next' & @CRLF & _
    				'	$cmd = $cmd & "|"' & @CRLF & _
    				'	_SharedVar_SetDeclarationsInProcess('&@AutoItPID&',1, String('&$pointer&'))' & @CRLF & _
    				'	Global $O_var1 = 1' & @CRLF & _
    				'	Global $O_var2 = 2' & @CRLF & _
    				'	_SharedVar_DeclareVar($O_var1)' & @CRLF & _
    				'	_SharedVar_DeclareVar($O_var2)' & @CRLF & _
    				'	$temp = _sv_read($O_var1)' & @CRLF & _
    				'	_sv_write($O_var1,$temp & $cmd)' & @CRLF & _
    				'	_sv_write($O_var2,$cmdline[$cmdline[0]])' & @CRLF & _
    				'EndIf'
    	$file = FileOpen($dest&"\test.au3", 2)
    	FileWrite($file, $src)
    	FileClose($file)
    	FileInstall("_SharedVar.au3", $dest&"\_SharedVar.au3", 1)
    	FileInstall("Array.au3", $dest&"\Array.au3", 1)
    	FileInstall("NomadMemory.au3", $dest&"\NomadMemory.au3", 1)
    	FileInstall("StringConstants.au3", $dest&"\StringConstants.au3", 1)
    	FileInstall("MsgBoxConstants.au3", $dest&"\MsgBoxConstants.au3", 1)
    	FileInstall("AutoItConstants.au3", $dest&"\AutoItConstants.au3", 1)
    	FileInstall("Aut2exe.exe", $dest&"\Aut2exe.exe", 1)
    	RunWait($dest&"\Aut2exe.exe /in "&$dest&"\test.au3", "", @SW_HIDE)
    	FileDelete($dest&"\Aut2exe.exe")
    ;~ 	FileDelete($dest&"\test.au3")
    	FileDelete($dest&"\_SharedVar.au3")
    	FileDelete($dest&"\Array.au3")
    	FileDelete($dest&"\AutoItConstants.au3")
    	FileDelete($dest&"\NomadMemory.au3")
    	FileDelete($dest&"\MsgBoxConstants.au3")
    	FileDelete($dest&"\StringConstants.au3")
    	If FileExists($dest&"\test.exe") Then
    		SetError(0)
    	Else
    		SetError(1)
    	EndIf
    EndFunc
    Alles anzeigen

    Das ganze funktioniert so, dass die Main.exe eine zweite erstellt, in welche die PID des Hauptprozesses und die Speicheradresse im RAM geschrieben wird. Das muss leider so sein, da sich diese beiden Variablen bei jedem Start der Main.exe ändern. Die zweite exe wird von Windows aufgerufen, wenn man den Rechtsklick macht und übergibt den dabei als Parameter übergebenen Pfad inklusive der Parameter an das Main Script.
    Die Includes habe ich so angepasst, dass sie stand-alone sind und auch auf PCs ohne Autoit compiliert werden können.
    Das funktioniert alles ohne Probleme.

    Das Problem ist folgendes:

    Wenn ich zwei Dateien markiere, dann sollten der Pfad und die exe getrennt durch ein Pipe | in die shared Variable geschrieben werden.
    Dies geschieht allerdings nur beim zweiten Aufruf des Programms. Beim ersten wird nur eine hineingeschrieben. Warum weiß der Geier .. ?(:cursing:

    Getestet wird, indem zwei Dateien markiert werden und dann Rechtsklick -> test -> Test1

    Ich hoffe ihr könnt euch die Zeit nehmen um da mal einen Blick drauf zu werfen. Ich bin mit meinem Latein leider echt am Ende .. :/

    Vielen vielen Dank schonmal im Vorraus für eure Zeit! :)

    P.S.: Das Script (main.au3) funktionieren nur im compilierten Zustand und nur wenn es als x86 compiliert wurde

    Dateien

    Problem.zip 3,51 MB – 371 Downloads
  • Wie stoppe ich einen Timer?

    • Leo.1906
    • 29. Juni 2016 um 15:23
    Zitat von Oscar

    Auf diese Weise ist der Timer völlig überflüssig!Wenn Du eine Funktion mit AdlibRegister aufrufst, dann legst Du die Aufrufhäufigkeit ja mit AdlibRegister fest z.B. alle 250 ms (Standard).
    Willst Du, dass etwas nach beispielsweise 5 Sekunden passiert, so kannst Du einfach eine globale Variable hochzählen und wenn diese >=20 (1 / 4 * 20 = 5) ist, die entsprechenden Befehle ausführen.

    Hm .. das ist natürlich auch keine schlechte Idee. Daran hab ich noch garnicht gedacht :D
    Danke dafür :)

  • Wie stoppe ich einen Timer?

    • Leo.1906
    • 29. Juni 2016 um 11:44

    Ah okay :D
    Ich dachte das ist eine extra Funktion die ich quasi mit TimerInit erstelle und die dann eben läuft und dabei Resourcen verwendet (verschwendet wenn nicht gebraucht).
    Also wenn das sowieso etwas ist das läuft, dann hast du natürlich recht. Danke für die Erklärung :)

  • Wie stoppe ich einen Timer?

    • Leo.1906
    • 29. Juni 2016 um 11:23

    Ich verstehe die Timer Funktion nicht so ganz glaube ich ..
    Ich habe ein Script OHNE gui in der ich einen Timer benutzen möchte. Ich starte den Timer und frage ihn während das Script läuft in einer Adlib ab.
    Wenn der Timer > 5 Sekunden ist, dann passiert etwas. An dieser stelle brauche ich den Timer nicht mehr und will ihn stoppen/löschen, damit ich ihn noch einmal neu starten kann, WENN er gebraucht wird. Also einfach auf 0 setzen ist blöd.
    Warum gibt es keine Timer-Stop funktion? Die _Timer_KillTimer Funktion will immer eine hwnd haben, die ich nicht liefern kann. Keine Ahnung wofür genau das gebraucht wird ..

    Ich hoffe ihr versteht mein Problem auch ohne das ich den Quellcode poste. Ich will einfach nur wissen wie man den Timer stoppt oder zerstört. :)

    lg
    Leo

  • RegWrite funktioniert nicht richtig

    • Leo.1906
    • 27. Juni 2016 um 11:38

    Alles klar, wieder was gelernt. Wobei ich ja als Verbindung der beiden Threads bestehe und Ergebnisse die mich weiterbringen hier einbringen könnte (ebenso anders herum). Da ich davon ausgehe, dass die wenigsten der User im englischen Forum deutsch können.
    Aber egal, genug hier. Das wird hier nur noch mehr Offtopic.
    Ich merks mir fürs nächste mal.

  • RegWrite funktioniert nicht richtig

    • Leo.1906
    • 27. Juni 2016 um 11:26

    Mein Problem wurde dort in der Sekunde gelöst, in der du geantwortet hast. Ich habe das hier sofort geschrieben ..
    Ist es falsch sich an verschiedenen Stellen Hilfe zu suchen?

  • RegWrite funktioniert nicht richtig

    • Leo.1906
    • 27. Juni 2016 um 11:13

    Sorry, hatte ich vergessen zu schreiben. Natürlich führe ich das Script mit Adminrechten aus ..
    Aber bei dem Problem wurde mir jetzt im englischen Dorum geholfen. Das Problem ist einfach nur, dass Scite das Script als 32 Bit ausführt, wenn man das nicht extra anders angibt. Und dann werden die Registry-Keys an den falschen Ort geschrieben.
    Das Problem ist also somit gelöst denke ich :D

  • RegWrite funktioniert nicht richtig

    • Leo.1906
    • 27. Juni 2016 um 10:50

    Hallo Leute,

    ich hab hier ein Problem ..
    Und zwar versuche ich mit Autoit ein paar Registyeinträge zu schreiben, aber so wie es für mich aussieht, kann Autoit nicht auf diesen Bereich der Registry zugreifen ..
    Hier mal der Code:

    AutoIt
    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\test\command", "", "REG_SZ", "C:\test\convert.exe %1 geojson|convert")


    Der Pfad ist definitiv richtig, der command an sich denke ich auch ..
    Die Registry an dieser Stelle auslesen geht:


    AutoIt
    MsgBox(0, 0, RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Windows.burn", "Description"))

    Diese Einträge, die Windows erstellt hat mit Autoit zu bearbeiten, funktioniert allerdings wieder nicht ..
    Sehr seltsam. In meinen Augen ein Autoit-Bug.

    Eine mögliche Lösung wäre es, eine ".reg" Datei zu schreiben und diese dann auszuführen, aber das ist eine sehr unsaubere Methode, die ich eigentlich nicht benutzen möchte.
    Es ärgert mich schon ein wenig, dass es nicht möglich ist das direkt aus dem Script heraus auszuführen ..

    Habt ihr Ideen? Was mache ich falsch? :) #

    Edit: Das OS ist Windows 7 x64 Deutsch btw ..

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™