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. GtaSpider

Beiträge von GtaSpider

  • Gedankenfehler?!?

    • GtaSpider
    • 28. November 2014 um 20:14

    Welche AutoIt Version benutzt du? Bei mir funktioniert das Tadellos. Die zweite MsgBox zeigt halt Wirrwarr an. Aber in der dritten MsgBox wird wieder richtig dekodiert.

    Die Crypt Funktionen geben ein Binären Wert aus, die 0x1234ABCD Daten können aber auch als String verwechselt werden (Hier sieht man übrigends den Nachteil, dass AutoIt auf Namenskonvention kein Wert liegt) sind aber wie gesagt Binär. D.h. 0x414243 wird nicht als "0x414243" in die Textdatei geschrieben sondern als "ABC" (ASCII). _Crypt_DecryptData formatiert aber Strings wieder ganz normal in Binärdaten um, das heißt ABC wird wieder zu 0x414243. Deswegen funktioniert die letzte Funktion (bei mir mit AutoIt 3.3.12.0)

    Alternativ

    [autoit]

    FileWrite($file,String($bEncrypted));Zeile 14

    [/autoit]

    Gruß,
    Spider

  • Run und falsche PID

    • GtaSpider
    • 27. November 2014 um 22:21

    Hallo

    Zu aller erst: Ein Prozess kann seine PID nicht ändern. Entweder startet die EXE sich selber neu (und bekommt somit eine neue PID zugewiesen) oder sie behält ihr PID.

    Bei dir ist es ein wenig was anderes. Du startest das Programm mit @ComSpec und dahinter den Programm Name. Was passiert: ComSpec ist der Prozess cmd.exe (Die Konsole). Die hat eine eigene PID. Diese startet nun PLINK. Plink bekommt dadurch aber auch eine eigene PID. Wenn sich nun Plink neu startet (aus irgendeinem internen Grund) dann greift deine cmd.exe nicht mehr auf plink zurück.

    Mein Tipp: Ohne @ComSpec arbeiten sondern plink.exe direkt starten und dann jedes mal mit ProcessExists("plink.exe") die PID herrausfinden bevor du ein StdOut benutzt.

    Gruß,
    Spider

  • Autoit: Live Log anzeigen

    • GtaSpider
    • 25. November 2014 um 15:53

    Hey,

    Kompeliert als EXE oder als au3-Script? So oder so: ConsoleWrite gibt Daten entweder in die Console von SciTE aus oder wenn du das Programm als CUI kompelierst in einem DOS Fenster.

    Als CUI kompelierst du dein Programm mit der aktuellen AutoIt Version, in dem du das hier ganz oben in dein Script schreibst:

    [autoit]

    #pragma compile(Console, True)

    [/autoit]

    In SciTE gibt es ausserdem die Möglichkeit jede einzelne Zeile automatisch mit ConsoleWrite zu besetzten: Tools -> Trace: Add Trace Line
    Alternativ kannst du das alles aber auch als LOG Datei ausgeben. Dafür gibt es in AutoIt schon die UDF _FileWriteLog.

    Gruß,
    Spider

  • RegisterWaitForSingleObject zum abfangen von Events mit Callback Funktionen

    • GtaSpider
    • 24. November 2014 um 17:20

    Hallo,

    Ich war auf der Suche nach einer Möglichkeit die Funktion WaitForSingleObject als ein OnEvent zu benutzten, also nicht darauf warten zu müssen bis die Funktion fertig ist (das Event wahr ist) um während darauf zu warten noch andere Dinge im Script zu machen. Die Windows API hat dafür die Funktion RegisterWaitForSingleObject; da es dafür aber noch keine AutoIt Implementierung gab, hab ich das in die Hand genommen.

    Die einzige Restriktion: Es kann immer nur ein Event zur Zeit abgefangen werden. Um das zu umgehen, könnte man mit einem statischen Array arbeiten, da dies aber meistens nicht gebraucht wird und nicht ganz sauber ist, habe ich es so gelassen wie es ist.

    Vielleicht kann es ja jemand gebrauchen. :)

    Beispiel:

    Spoiler anzeigen
    [autoit]

    #include <WinAPI.au3>
    #include 'RegisterWaitForSingleObject.au3'

    [/autoit] [autoit][/autoit] [autoit]

    Global $fExit = False

    [/autoit] [autoit][/autoit] [autoit]

    Local $hPid = Run("notepad.exe")
    Local $hProcess = _WinAPI_OpenProcess(0x00100000, False, $hPid) ; SYNCHRONIZE (0x00100000)
    ControlSetText(WinWait("[CLASS:Notepad]"), "", "[CLASS:Edit; INSTANCE:1]", "Close Editor or wait 3 seconds for timeout")

    [/autoit] [autoit][/autoit] [autoit]

    ;Registers the _TestFunc with a timeout of 3 secs.
    ;The _TestFunc shall be like this: _TestFunc($fTimeout)
    ;where $fTimeout signalise wether timeout reached (True) or event is in signaled state (False)
    _WinAPI_RegisterWaitForSingleObject($hProcess, "_TestFunc", 3000)

    [/autoit] [autoit][/autoit] [autoit]

    While Not $fExit
    ConsoleWrite("Do some stuff at " & @HOUR & ":" & @MIN & ":" & @SEC & "." & @MSEC & @CRLF)
    Sleep(500)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    ConsoleWrite("Bye" & @CRLF)
    _WinAPI_CloseHandle($hProcess)

    [/autoit] [autoit][/autoit] [autoit]

    Func _TestFunc($fTimeout)
    If $fTimeout Then
    ConsoleWrite("Timeout reached" & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    Else
    ConsoleWrite("Object is in signaled state" & @CRLF)
    EndIf
    $fExit = True
    EndFunc ;==>_TestFunc

    [/autoit]

    lg,
    Spider

  • Neuste Dateien zuerst speichern

    • GtaSpider
    • 15. November 2014 um 14:52

    Habs mal in H&Ü verschoben.

  • GUICtrlCreateListViewItem ist zu langsam? -> Problem gelöst, aber Warum ist das so?

    • GtaSpider
    • 3. November 2014 um 02:38

    Hey,

    Wenn du _BeginUpdate und _EndUpdate richtig benutzt sollte das auch ein massiven Geschwindigkeitsboost hervor rufen. Zu den Gruppen kann ich nichts sagen. Aber zum Löschen gibt's noch ein Tipp von mir:

    Ich habe letztens auch festgestellt, dass das leeren eines ListViews unglaublich lange dauert und habe mir dann mal die Funktion _GuiCtrlListView_DeleteAllItems angesehen. Dort sieht man: Wenn es ein AutoIt control (GuiCtrlCreateListView) ist wird jedes einzelne Element von "Hand" gelöscht, wenn es ein WinApi control ist (_GuiCtrlListView_Create) dann wird einfach nur eine Message abgefeuert; das sollte sehr fix gehen. Leider gibt es in der aktuellen UDF (GuiListView.au3, sowohl Stable als auch Beta) einen bösen Bug.

    Genaueres findest du hier: http://www.autoitscript.com/forum/topic/16…istview-create/ so klappt das mit dem Löschen des ListViews auch super schnell. Allerdings musst du aufpassen: Die WM MEssage Funktioniert zwar auch mit GuiCtrlListViewCreate, allerdings gibt es dann hier ein Speicherleck, weil die Controls zwar aus dem ListView entfernt werden, aber trotzdem AutoIt intern immer noch existieren. Das heißt die Funktion solltest du nur bei _GuiCtrlListView_Create benutzten. Die ist sowieso schneller als GuiCtrlCreateListView, deswegen würde ich dir empfehlen nur _GuiCtrlListView_Create zu benutzten.

    Gruß,
    Spider

  • Abwesenheitsmodus (AWAY-Mode) erkennen

    • GtaSpider
    • 2. November 2014 um 17:41

    Hey,

    Also um herauszufinden wann das System in den Suspend Modus geht habe ich dir hier mal was geschrieben, sollte eigentlich auch für den Away Mode gehen. Was für ein Betriebsystem benutzt du?

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $PBT_APMRESUMESUSPEND = 0x12
    Global Const $PBT_APMSUSPEND = 0x4

    [/autoit] [autoit][/autoit] [autoit]

    GUICreate("")
    GUIRegisterMsg($WM_POWERBROADCAST,"WM_POWERBROADCAST")

    [/autoit] [autoit][/autoit] [autoit]

    While Sleep(100)
    ToolTip(@SEC&"."&@MSEC)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func WM_POWERBROADCAST($hWnd, $iMsg, $wParam, $lParam)
    Switch $wParam
    Case $PBT_APMSUSPEND
    ConsoleWrite(@HOUR&":"&@MIN&":"&@SEC&"."&@MSEC&" - Leg mich schlafen!" & @CRLF)
    ;Hier schreibst du was er tun soll wenn er im Suspens Modus ist
    Case $PBT_APMRESUMESUSPEND
    ConsoleWrite(@HOUR&":"&@MIN&":"&@SEC&"."&@MSEC&" - Bin wieder wach!" & @CRLF)
    ;Hier schreibst du was er tun soll wenn er wieder aufwacht
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc

    [/autoit]

    Gruß,
    Spider

  • Abwesenheitsmodus (AWAY-Mode) erkennen

    • GtaSpider
    • 29. Oktober 2014 um 19:46

    Hey,

    Bin mir nicht ganz sicher, aber ich denke meine UDF könnte dir hier weiter helfen ;)
    http://www.autoitscript.com/forum/topic/108983-idleit/

    Gruß,
    Spider

  • Geschwindigkeit Strukturen zwischen den AutoIt Versionen

    • GtaSpider
    • 29. Oktober 2014 um 14:33

    Hey,

    Hab aus Interesse überprüft, wie die Geschwindigkeit zwischen den verschiedenen AutoIt Versionen bei Strukturen variiert.
    Falls es jemanden interessiert:
    3.3.8.1 am schnellsten
    3.3.12.0 kurz dahinter
    3.3.13.19 kurz dahinter

    x64 ist hier noch mal ein wenig schneller als x86
    Getestet auf nem relativ schwachbrüstigen Win8.1

    Der Sourcecode und die Log Files sind im Anhang.

    lg,
    Spider

  • Verzeichnis per Dialog erzeugen und auswählen

    • GtaSpider
    • 27. Oktober 2014 um 17:57

    Hey,

    In der neuen AutoIt Version (3.3.12.0) wird eigentlich standardmäßig, wenn Vista oder höher Installiert ist, der ganz neue Dialog gezeigt:
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    lg,
    Spider

  • XML oder XML-ähnliche Struktur auslesen

    • GtaSpider
    • 27. Oktober 2014 um 00:33

    Hey,

    Oder trau dich mal an StringRegExp ran. Ist immer gut, wenn man das irgendwann mal lernt ;)

    lg,
    Spider

  • Passwort verschlüsseln / auslagern

    • GtaSpider
    • 22. Oktober 2014 um 14:39

    Ah, stimmt. Ja, dann bringt dir das nichts.

  • Passwort verschlüsseln / auslagern

    • GtaSpider
    • 22. Oktober 2014 um 14:05

    Hey,

    Wenn dein Passwort kein allerwelts Passwort ist, sondern etwas komplexer würde ich mit MD5 Hashes arbeiten.
    Vorteil hier: Selbst wenn jemand den Sorucecode knackt bringt ihm das nichts da das Passwort gar nicht geschpeichert wird sondern nur der Hash.
    Nachteil: Wenns ein nicht so komplexes Passwort ist, kann es relativ simpel geknackt werden (Wie, tut hier nichts zur Sache ;) )

    Du könntest es auch um nochmal sicher zu gehen, den MD5 Hash noch mal Hashen, oder verschlüsseln.

    [autoit]

    ;Zum schreiben:
    $vMD5 = _Crypt_HashData(InputBox("","Bitte geben Sie das passwort ein welches geschrieben werden soll","passwordMuchWowVeryComplexSuchSafe53453213"),$CALG_MD5)
    IniWrite("set.ini","opt","key",$vMD5)
    ;und später zum auslesen:
    $vMD5 = IniRead("set.ini","opt","key","")
    If _Crypt_HashData(InputBox("","Bitte geben Sie das passwort ein"),$CALG_MD5) = $vMD5 Then MsgBox(0,"","Richtiges Passwort!")

    [/autoit]

    lg
    Spider

  • Like oder nicht Like - das ist die Frage!

    • GtaSpider
    • 18. Oktober 2014 um 01:45

    Hey,

    So, ich melde mich auch mal zu Wort. Habe die letze Seite mal überflogen und stimme auf jeden Fall mit Lottich überein.
    Likes für eine richtige Antwort zu Sammeln ist meiner Meinung nach Sinnlos. Bisher habe ich es meistens so gesehen, dass wenn jemand eine Frage hatte, jemand die Antwort gegeben hat und zum Schluss der Threadstarter gesagt hat: "Ah super, danke dir!"

    Da brauchen wir keinen Like Button, wo kommen wir denn da hin! Nein, ein Like Button hat für mich ganz einfach den Vorteil, dass wenn z.B. jemand ein Script postet, oder aber auch ein Problem gelöst wurde, welches sehr viele Nutzer betrifft (gerade z.B. Neulinge die durch die Suche drauf gestoßen sind, und dann sehen: Ah! Da gibt es schon ein Lösungvorschlag, der ist super, den Like ich mal) gibt es dem ganzen ein Zugewinn an Übersichtlichkeit

    Mal als Beispiel. Ich bin neu hier im Forum, tralalalala, und wollte jetzt Mal mein erstes TCP/IP Script programmieren. Mhh. Wieso funktioniert das nicht? Gebe ich mal in die Suche "TCP" ein und schau was kommt. Und dann kann der Nutzer die Posts nach Relevanz (das richtige Wort hier finde ich, nicht nach like-punkten oder so was) sortieren, und zack! Sieht er, dass vor drei Monaten ein anderer Neuling auch Probleme hatte und die Antwort anscheind 20 andere Nutzer auch zufrieden gestellt hat. Dem neuen Nutzer hilft diese auch und schon sind es 21.

    Oder: Jemand sucht nach einer Möglichkeit wenn die Maus über ein Control fährt, dass sich dann ein Label ändert. Es gibt tausende UDFs die dieses Thema behandeln, aber eine oder zwei die dieses Thema am saubersten Behandeln bzw am zuverlässigsten Funktionieren. Wenn der User also wieder nach Relevanz sortiert, findet er mit Sicherheit die, mit der die meisten Zufrieden sind und muss nicht vorher mehrere UDFs ausprobieren, die alle nicht so richtig funktinoeiren bis der User dann endlich die richtige gefunden hat.

    Um das noch mal Klar zu stellen: Ich spreche mich auf jeden Fall gegen ein globalen Like-Counter, dafür aber für ein lokalen Relevanz-Counter.

    Lieben Gruß,
    Spider

  • Forum-Umstellung Problemsammlung

    • GtaSpider
    • 14. Oktober 2014 um 13:23

    Wenn man irgendwas auf AutoIt.de via Google sucht landet man automatisch wieder auf der Startseite (AutoIt.de)


    http://www.autoit.de/index.php?page=Thread&threadID=43837


    Müsste man also entweder neu indexieren lassen oder den alten Syntax auf den neuen Link führen.

    Siehe 3. Beitrag hier.

    Vielen Dank noch mal Gun-Food für das Update :)

    lg
    Spider

  • EAN-Strichcode nach dem erstellen als Bild spechern

    • GtaSpider
    • 12. Oktober 2014 um 18:48

    Hey Alina,

    Das ist aber eine unsaubere Lösung. Da würde ich dir lieber die hier empfehlen. Ist zwar auf italienisch, sollte aber selbsterklärend sein. Musst einfach nur z.B. "Salva Immagine" übersetzten zu "Speichere Bild" etc.

    http://www.blogbox.it/autoit-generat…ean-13-e-ean-8/
    http://s5.histats.com/stats/r.php?2194708&100&69213&urlr=&www.blogbox.it/wp-content/uploads/2014/01/AutoIt-Generatore-Barcode.rar

    Gruß,
    Spider

  • AutoIt-Skript von Windows 8.1 auf Windows Phone 8.1 umziehen?

    • GtaSpider
    • 29. September 2014 um 20:38

    Hey,

    Windows Phone ist ein geschlossenes System (ähnlich wie iOS). Um dafür programmieren zu dürfen, d.h. um überhaupt ein Programm auf dein Smartphone laden zu können welches du selbst geschrieben hast, brauchst du eh erstmal ein Developer Account. Dieser Kostet dich ein wenig was (mittlerweile glaub ich einmalige Gebühr...) und dann kannst du mit Visual Studio anfangen für Windows Phones zu programmieren.

    Da gibts keine Shell, kein Terminal, kein AutoIt ;) Ich weiß, all die tollen Smartphones können so viel, aber es sind halt immer noch Telefone. Zumindest Windows Phone hat diesen Standard gesetzt (worüber ich persönlich sehr froh bin). Wenn du frei Programmieren möchtest und dein Smartphone nicht hauptsächlich als Telefon benutzten willst, würde ich dir eher zu einem Android raten. Da kannst du mit Java relativ leicht und schnell (auf einem gerooteten Smartphone) programmieren.

    Gruß,
    Spider

  • AutoIt-Skript von Windows 8.1 auf Windows Phone 8.1 umziehen?

    • GtaSpider
    • 29. September 2014 um 12:10

    Hey Holzkopf,

    AutoIt ist nicht mit Windows Phone oder Windows RT kompatibel. Das hängt ganz simpel daran, dass die beiden Systeme auf ARM laufen, AutoIt läuft nur auf Intel/AMD x86/x64. Da müsstest du dir schon Visual C# o.ä. aneignen.

    lg,
    Spider

  • Abbruch nach 33000 Sekunden

    • GtaSpider
    • 23. September 2014 um 20:44

    Hey,

    Ahja :D
    http://www.spiegel.de/netzwelt/web/w…e-a-993197.html

    Gruß,
    Spider

  • ListViews sehen unterschiedlich aus

    • GtaSpider
    • 18. September 2014 um 20:26

    Hey Tweaky,

    Du setzt die Styles mit $LVM_SETEXTENDEDLISTVIEWSTYLE d.h. du überschreibst alle vorherigen und addierst sie nicht. Außerdem würde ich dir raten hier mit den internen Funktionen von AutoIt zu arbeiten (auch wenn die das gleiche machen, aber warum sich das Leben schwerer machen als es sein muss? ;) )

    Spoiler anzeigen
    [autoit]

    #Region ;************ Includes ************
    #Include <ListViewConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <MsgBoxConstants.au3>
    #include <WindowsConstants.au3>
    #EndRegion ;************ Includes ************

    [/autoit] [autoit][/autoit] [autoit]

    GUICreate("listview items", 800, 250)
    Local $idListview = GUICtrlCreateListView("col1 |col2|col3 ", 10, 10, 300, 150, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER), BitOR($LVS_EX_DOUBLEBUFFER, $WS_EX_CLIENTEDGE))
    GUICtrlSetStyle($idListview,Default,BitOR($LVS_EX_FULLROWSELECT,$LVS_EX_GRIDLINES,$WS_EX_CLIENTEDGE,$LVS_EX_DOUBLEBUFFER))

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Local $idListview2 = GUICtrlCreateListView("col1 |col2|col3 ", 330, 10, 300, 150, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER), BitOR($LVS_EX_DOUBLEBUFFER, $WS_EX_CLIENTEDGE, $LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES))

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    ; Loop until the user exits.
    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    ExitLoop

    [/autoit] [autoit][/autoit] [autoit]

    Case $idListview
    MsgBox($MB_SYSTEMMODAL, "listview", "clicked=" & GUICtrlGetState($idListview), 2)

    [/autoit] [autoit][/autoit] [autoit]

    EndSwitch
    WEnd

    [/autoit]

    Gruß,
    Spider

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™