Beiträge von Kanashius
-
-
Ich für meinen Teil rate auch davon ab für sowas die WindowsRegistry zu verwenden. Mich nervt es. Ich setze mindestens jedes halbe Jahr meinen Rechner neu auf und dann darf man alle Programme, die dort was ablegen, neu isntallieren... einfach nur nervig. Für sowas finde ich eine config Datei deutlich besser.
-
AutoIt
Alles anzeigen#include <WinAPISys.au3> local $oldTime=0,$time=3000;$Time=Zeit in Millisekunden die nichts gemacht wurde local $bClosed=false While sleep(100) $iIdleTime = _WinAPI_GetIdleTime() if $bClosed and $iIdleTime < $time then $bClosed=false endif If (NOT $bClosed) and $iIdleTime > $time+$oldTime Then WinClose("[active]") $oldTime+=$time $bClosed=true endif WEnd
Das dürfte machen was du willst
-
SInd auf jedenfall coole Effekte Glaub ich hab noch nicht alles Entdeckt
einziger Fehler den ich fand: Nach klick auf Starwars schmierts ab, wenn man auf Infobox klickt, aber das liegt vermutlich daran, dass er dann in ner andern Schleife ist, denke ich
Grad das Textdrehen fand ich cool
MfG Kanashius
-
_GUICtrlListView_ClickItem klickt ein Item an -> markiert es, ist also nicht das, was du willst.
Für alles was das anklicken,... betrifft sieh dir mal das Beispiel hier an: https://www.autoitscript.com/autoit3/docs/l…View_Create.htmInsbesondere Der große Packen an auskommentierten Zeilen ist sehr gut, wenn man wissen will, worauf man alles reagieren kann.
Was das andere Fenster angeht empfehle ich: Steig auf den OnEventMode um (Das Beispiel zu https://www.autoitscript.com/autoit3/docs/f…lSetOnEvent.htm sollte dabei helfen)
Wenn du es nur schnell zum testen willst:
1. änder Zeile 156 zu ExitLoop und mach vorher ein guidelete($XXX), damit nicht das ganze Programm beendet wird, sondern nur das Fenster geschlossen
Eine andere Möglichkeit wäre noch, die Gui und deren Controls GLobal zu deklarieren und dort in der Haupt-While-Schleife drauf zu reagieren. -
Das kommt drauf an. Entwerder schreibst du die Fehler mit ConsoleWriteError ( "data" ) in den Errorstream (der wird zum Beispiel in CMD ausgegeben, wenn du das Programm mit cmd startest (start x.exe). Sieht man aber nur, wennn man sich die Fehlr auch ausgeben lässt. Einfach beim Ausführen mit doppelklick sieht man davon nichts.
Ansonsten kann man die Daten auch in eine Datei schreiben. Sollte man dann auch hinterherräumen, damit nicht sinnlos große mengen speicherplatz verwendet werden.
ConsoleWrite("") Kann auch für Logs verwendet werden. Ist dann auch in cmd sichtbar. ConsoleWriteError ist nur für Probleme/Fehler gedacht.Das ganze bedeutet halt arbeit.
Nach jedem Befehl (der Probleme machen könnte) @error zu checken und die jeweilige Ausgabe machen
Vor Arrayzugriffen, etc. checken, dass das Array auch passend ist,... -
Genau dafür gibt es doch die Excel-UDF von Water
https://www.autoitscript.com/wiki/Excel_UDF
https://www.autoitscript.com/autoit3/docs/l…0Management.htm
_Excel_BookNew
_Excel_RangeInsert
_Excel_RangeRead
_Excel_RangeWritedürfte das sein was du suchst
Ich habs aber noch nie benutzt. Mag kein Excel und besitz auch nur für Notfälle OpenOffice -
Nun. Log-Dateien werden geschrieben und zeigen dem Programmierer, wo sich das Programm befindet.
Deshalb ist es bei Fehlermeldungen für Programmierer auch wichtig, eine genaue beschreibung zu bekommen. Nur dann kann man nach dem Fehler suchen.
Wenn man nicht genau weiß, woran es liegt nutzt man Debugger. Das hilft aber nur, wenn man den Fehler nachvollziehen kann.
Also einfach den User genau beschreiben lassen, was er gemacht hat, dass es zu dem Fehler kam.
Einen anderen Weg solche Fehler zu finden gibt es nicht wirklich.Man muss sich als Programmierer mit dem Programm auskennen und darauf hoffen, dass die nutzer die fehler genau beschreiben können.
(Ausgenommen virtuelle Maschienen, die können umfangreichere Infos zu Fehlern geben, da sie den Prozess die ganze Zeit "beobachten" /siehe z.B. Java). -
Einfach die Hilfe zu dem Befehl durchlesen. Ganz am Ende steht auch meistens ein Beispielcode.
Also, ganz wichtig: Immer die Hilfe zu Befehlen durchlesen (sofern man die Befehle nicht kennt)AutoIt
Alles anzeigen#include <Crypt.au3> #include <MsgBoxConstants.au3> Example() Func Example() Local Const $sUserKey = "CryptPassword" ; Declare a password string to decrypt/encrypt the data. Local $sData = "..upon a time there was a language without any standardized cryptographic functions. That language is no more." ; Data that will be encrypted. Local $bEncrypted = _Crypt_EncryptData($sData, $sUserKey, $CALG_RC4) ; Encrypt the data using the generic password string. $bEncrypted = _Crypt_DecryptData($bEncrypted, $sUserKey, $CALG_RC4) ; Decrypt the data using the generic password string. The return value is a binary string. MsgBox($MB_SYSTEMMODAL, "Decrypted data", BinaryToString($bEncrypted)) ; Convert the binary string using BinaryToString to display the initial data we encrypted. EndFunc ;==>Example
Du brauchst also kein externes Tool. (Das würde ich sonst auch zu dem Vorschlag dranschreiben.)
Du brauchst nur die beiden Befehle, ein Passwort und suchst dir einen Algorithmus aus, das ist alles.Bei dem Beispiel würde der Inhalt der Datei, die ausgelesen wird in $bEncrypted stehen. Mit encrypt werden die Daten verschlüsselt.
Wenn du dir das Beispiel ansiehst wirst dus schnell verstehen
MfG Kanashius
-
Du musst nur in deiner WM_NOTIFY($hWnd, $MsgID, $wParam, $lParam) Methode
_GUIListViewEx_WM_NOTIFY_Handler($hWnd, $MsgID, $wParam, $lParam)
aufrufen (am besten direkt am Anfang).Das Problem ist, dass dein GUIRegisterMsg die Registrierung der UDF überschreibt (in _GUIListViewEx_MsgRegister() wird WM_NOTIFITY registiert).
Somit musst du nur die Funktion, die dort registriert wird manuell aufrufen.
Dort wird neben $WM_NOTIFY auch $WM_MOUSEMOVE,$WM_LBUTTONUP und $WM_SYSCOMMAND registriert. Fall du also eine davon registrieren musst, musst du auch die entsprechenden Funktionen aufrufen.
Du darfst auf keinen Fall dein GuiRegisterMsg hinter dem _GUIListViewEx_MsgRegister schreiben, andernfalls wird deine Registrierung überschrieben -> nur der kram der UDF funktioniert. Dort willst du deine Aufrufe ja nicht reinschreiben, denke ichMfG Kanashius
-
Wenn du die Datei verschlüsselst und beim einlesen mit Autoit entschlüsselst und das passwort dafür nur in der kompilierten exe ist, wäre es sogar noch sicherer
_Crypt_EncryptData
_Crypt_DecryptData
Die Daten einmal verschlüselt speichern und sonst einfach mit fileread (und fileopen mit binary als parameter) öffnen und decrypten -
Ja, das sind nur die von Autoit für Scite neu festgelegten. Die, die von Scite kommen findest du hier:
https://autoit.de/www.scintilla.org/SciTEDoc.html#Keyboard
sind aber glaub ich auch nicht alle -
Ne. Programmierer meiden copy&paste (C&P steht für strg+c und strg+v) bei gleichem Code, denn:
1. Wenn man nen bisschen programmiert hat geht die Schleife schneller
2. Wenn man eine Änderung vornimmt (was recht oft passiert) muss man diese nur an einer Stelle durchführen und nicht x-mal
3. Wenn man code z.b. in eine funktion auslagert kann man ihn beliebig oft ausführen, nur in dem man eine Funktion aufruft.Gibt bestimmt noch mehr Gründe, die mir jetzt nicht einfallen
-
Bei einer Zuweisung darf kein Global davor stehen. Das ist nur zur Deklaration (Bekanntmachung) der Variable. Danach wird nurnoch ohne Global darauf zugegriffen.
So sollte es gehen:AutoIt#include <array.au3> Global $ioffsetanmy = 43 Global $ianmy[20] = [123] for $i=0 to 14 step 1 $ianmy[$i+1] = $ianmy[0] + $ioffsetanmy*$i next _ArrayDisplay($ianmy)
PS: Programmierer sind faul! Sie würde niemals bei jeder Zuweisung Global davorschreiben. Und sie würden auch keine solche Zuweisungsliste manuell hinschreiben/C&P. Dafür gibt es Schleifen
-
Ich empfehle dir den Vorschlag von Xorianator zu nutzen, falls du aber umbedingt Arrays benutzen willst:
ReDim $array[ubound($array)+1] ; -> Array ist 1 größer
ReDim $array[ubound($array)-1] ; -> Array ist 1 kleiner
Das ist aber nicht zu empfehlen, wenn es oft passiert, denn jedesmal, wenn die Größe geändert wird, wird der gesamte (bzw. bis zur verkleinerten Größe) Array-Inhalt einmal kopiert!!! Das ist nicht sehr performant... -
Ein Child-Fenster ist ein ganz normales Fenster, nur dass es zu dem anderen Fenster gehört. Es ist dem Fenster untergeordnet und kann nicht ohne dieses existieren. (Ein Child-Window kann z.b. auch ohne ränder,... in einem Fenster sein und du merkst nichtmal, dass es 2 Fenster sind)
-
z.B. so:
AutoIt
Alles anzeigen#include <Misc.au3> Local $hDLL = DllOpen("user32.dll") Local $bPressed=true While Sleep(50) While _IsPressed(21, $hDLL) if $bPressed then wave() $bPressed=false endif Sleep(50) WEnd While _IsPressed(22, $hDLL) if $bPressed then wood() $bPressed=false endif Sleep(50) WEnd if NOT $bPressed Then $bPressed=true WEnd Func wave() $coords = MouseGetPos() MouseClick("left", 1038, 704, 1, 1) MouseClick("left", $coords[0], $coords[1], 1, 1) EndFunc ;==>wave Func wood() $coords = MouseGetPos() MouseClick("left", 1012, 707, 1, 1) ; MouseClick("left", $coords[0], $coords[1], 1, 1) EndFunc ;==>wood
-
Wenn du mit _isPressed arbeitest kannst du abfragen, ob eine Taste gedrückt wurde. Dort dann einfach ne While-Schleife, solange, wie die Taste gedrückt wird und danach erst weiter.
-
Wenn ich mich richtig entsinne werden E-Mails mit HTML gestylt. Also musst du das HTML interpretieren und in PDF umwandeln
Ein Commandlineconverter z.B.: http://wkhtmltopdf.org/downloads.html -
Zum Switch:
Man kann einen Wert dort übergeben und die Case behandeln die möglichen Eingaben. Gibt es kein Case dafür wird Case Else genommen. Existiert der nicht passiert nichts.zu 2.:
Nimm zum Beispiel ne For-Schleife:Hier wir erst von 0:100 bis 0:100 gesucht, dann von 0:200 bis 0:200,... bis 0:400
Die Werte musst du dir dann passend berechnen, dass es so ist wie du es haben möchtest.