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

Beiträge von Yjuq

  • Aufgabe mit AutoIt lösbar?

    • Yjuq
    • 21. Februar 2014 um 22:11

    So ganz verstehe ich dein Problem nicht.
    Wenn du dein Programm startest ("123.EXE") wird ein Fenster angezeigt.
    In diesen Fenster befindet sich die Beschriftung "Geben Sie die Werte (B1) (A3) ein".
    Nun möchtest du die Werte die in der Text Datei hinterlegt sind in das gestartete Programm eingeben?
    Und das automatisch? Habe ich das so richtig verstanden?
    -> Das wäre dann so möglich mit AutoIt

  • Wie erstellt man Dokumentationen zu einem vorhandenden Autoit Script?

    • Yjuq
    • 21. Februar 2014 um 22:03

    Für PDF Dateien verwende ich Microsoft Word 2010.
    Die *.docx Files lassen sich einfach in *.pdf Files exportieren.
    Für *.chm Files habe ich mir das Programm BookME gedownloadet.
    Es wird kostenlos angeboten. Den Downloadlink habe ich nicht mehr.
    Für *.html Files (um diese schnell zu erstellen) verwende ich einen Editor.
    Diese haben auch einen speziellen Namen der mir aber entfallen ist.
    ~ Make :)

  • Zahlenrätzel

    • Yjuq
    • 21. Februar 2014 um 16:10

    Kann mir jemand erklären was mit der Wertigkeit einer Zahl gemeint ist? Ich habe durch googeln nur erfahren dass es sich dabei um eine Ziffer in einer Zahl handelt. Aber das kann so nicht stimmen...

    Ich kann mir unter den Begriff überhaupt nichts vorstellen was dieses Rätsel nicht einfacher macht. ^^

  • Bei zweitem Fenster funktioniert "GUISetOnEvent($GUI_EVENT_PRIMARYDOWN,..." nicht

    • Yjuq
    • 21. Februar 2014 um 00:36

    Ganz einfach: Weil WinWaitClose() dein Programm vollkommen durcheinander wirft.
    Für gewöhnlich verwendet man eine Schleife die verhindert dass dein Programm verlassen wird.
    Zudem solltest du dir angewöhnen alles zu deklarieren was vorher deklarierbar ist.

    Das heißt:
    Definiere am Anfang deines Programmes ruhig alle GUI's die du im späteren Programm anzeigen möchtest. Du kannst diese ja einfach mit GUISetState() anzeigen oder ausblenden. Zudem schmeißt mir die SciTE ein ERROR entgegen, weil deine Variable $kontexthandle nicht global definiert ist. Siehe dir doch einmal das Tutorial von chesstiger an: http://www.autoit.de/index.php?page=Thread&threadID=31948

    Hier einmal eine Musterlösung:

    Spoiler anzeigen
    [autoit]

    ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +

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

    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>

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

    Opt('GUIOnEventMode', 1)

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

    Global $hMain, $hChild

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

    ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +

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

    $hMain = GUICreate('zzzzzzzzzz', 500, 300, 400, 400)
    GUISetOnEvent($GUI_EVENT_CLOSE, 'GUI_EVENT_CLOSE')
    GUISetOnEvent($GUI_EVENT_SECONDARYUP, 'GUI_EVENT_SECONDARYUP')

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

    $hChild = GUICreate('', 60, 100, 430, 430, $WS_POPUPWINDOW, -1, $hMain)
    GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, 'GUI_EVENT_PRIMARYDOWN')
    GUISetOnEvent($GUI_EVENT_SECONDARYUP, 'GUI_EVENT_SECONDARYUP')

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

    GUISetState(@SW_SHOW, $hMain)

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

    ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +

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

    While Sleep(10)
    WEnd

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

    ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +

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

    Func GUI_EVENT_CLOSE()
    Exit
    EndFunc

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

    Func GUI_EVENT_SECONDARYUP()
    Local Static $bState
    $bState = Not $bState
    ($bState) ? (GUISetState(@SW_SHOW, $hChild)) : (GUISetState(@SW_HIDE, $hChild))
    EndFunc

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

    Func GUI_EVENT_PRIMARYDOWN()
    MsgBox(0, 'xxxxx', 'xxxxx', 0, $hChild)
    GUI_EVENT_SECONDARYUP()
    EndFunc

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

    ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +

    [/autoit]

    Um ein AutoIt Code in einen Spoiler zu setzen benutze folgenden BB-Code: [ spoiler ] [ autoit ] CODE [ /autoit ] [ /spoiler ]

  • Wie erstellt man Dokumentationen zu einem vorhandenden Autoit Script?

    • Yjuq
    • 21. Februar 2014 um 00:06

    Schönen guten Abend :)
    Ich versuche es mal so allgemein wie möglich zu halten. Im Grunde kann eine Dokumentation verschieden ausfallen. Der Sinn und Zweck ist auf jeden Fall z.B. die Verwendung eines Programmes den Benutzer beizubringen, oder die Funktionen / Klassen (bezogen auf C++ u. ähnliches) in einer UDF (oder auch DLL) zu dokumentieren damit der Programmierer diese verwenden kann. Alle drei Möglichkeiten (Programm, UDF / Klassenbibliothek und DLL’s) werde ich hier einmal erläutern. Für Fehler und deren Folgen übernehme ich keine Haftung. :P

    User Defined Functions:
    Hier im Forum wird hauptsächlich mit *.au3 Files gehandelt welche eindeutig in der Rohversion vorliegen. Dabei hat jeder Zugriff auf den Sourcecode und kann diesen nach Belieben verändern. Dies ist auch in anderen Programmiersprachen wie C++ der Fall. Nur dort werden Funktionsansammlungen anderes benannt. Ich weiß nicht ob meine Informationsquelle zuverlässig ist, aber ich glaube sie heißen dort „Header“ oder auch „Klassenbibliotheken“. Zwischen Unterschiede lässt sich streiten und ist definitiv nicht das Thema meines Textes. Jedenfalls, so finde ich, sind diese am leichtesten zu dokumentieren weil die Beschreibungen direkt als Kommentar im Sourcecode hinterlegt werden kann. Dabei sollten folgende Dinge beachtet werden:
    - Zuerst muss eine vollständige Beschreibung der Funktion vorliegen. Beantworte einfach dazu die Frage „Was macht diese Funktion?“ und du hast deine Arbeit getan. Wichtig ist vor allem dass entweder in der Sprache deiner Zielgruppe geschrieben wird oder in Englisch. Alles andere wäre nur unsinnig.
    - Nun kommen die Parameter dran. Beschreibe jeden Parameter einzeln! Die Frage „Welche Werte nimmt der Parameter entgegen und warum?“ hilft dir dabei. Halte dich dabei so kurz wie möglich (Besonders bei langen Funktionen).
    - Zuletzt wird dokumentiert welchen Wert die Funktion zurückgibt und wie dieser weiterverarbeitet werden kann.
    Die oberen genannten Punkte stellen dabei nur eine Mindestanforderung dar. Gerne dürfen selber weitere Punkte hinzugefügt werden. Auch je nach Programmiersprache variiert dieses. Beispielsweise muss für eine Klasse in C++ noch zusätzlich die Klasse beschrieben werden. Oder auch Konstanten müssen für ihren Zweck erläutert werden. AutoIt stellt zum Glück einen Funktionsheader zur Verfügung der auch in allen Standard UDF’s verwendet wird:

    [autoit]

    ; #FUNCTION# ====================================================================================================================
    ; Name ..........: function
    ; Description ...:
    ; Syntax ........: function()
    ; Parameters ....:
    ; Return values .: None
    ; Author ........: Your Name
    ; Modified ......:
    ; Remarks .......:
    ; Related .......:
    ; Link ..........:
    ; Example .......: No
    ; ===============================================================================================================================

    [/autoit]

    Programme:
    Manchmal möchte Mann eine Dokumentation schreiben weil er befürchtet dass Frau mit dem komplexen System nicht klar kommt. Meistens sind diese auch tatsächlich hilfreich. Zuerst sollte man sich überlegen in welchen Sprachen man seine Dokumentation schreibt (vorzugsweise in der, die auch das Programm verwendet) und welches Format man verwendet. Mit Format meine ich nicht die üblichen Dateiendungen wie *.html oder *.pdf etc. sondern die Form bzw. den Stil der Dokumentation. Man kann es selbstverständlich als offline Website aufbauen oder als einfache PDF hinterlegen, muss man aber nicht. Ein klassisches Dateiformat wäre z.B. *.chm welche Windows automatisch seinen Hilfedatei Look verpasst. Andere Alternativen wäre beispielsweise ein externes Programm zu schreiben welches die einzelnen Texte formatiert anzeigt. So lassen sich auch ganz individuelle Bedienelemente hinzufügen. Jedenfalls sollte eine allgemeine Beschreibung des Programmes vorhanden sein. Eine einfache und simple Frage wäre: „Was macht das Programm?“ Natürlich sollte man den Text ein wenig ausschmücken und rudimentäre Werbebanner hinzufügen. Weitere wichtige Punkte sind Beschreibungen zu allen Bedienungselementen in dem selbst geschriebenen Programm. Weiteres lässt sich ergänzen.

    DLL’s:
    Im Grunde werden diese genauso dokumentiert wie UDF’s nur mit dem Unterschied, dass dies in einer externen Datei geschehen muss, weil der Sourcecode für den Programmierer nicht einsehbar ist. Auch hier müssen wieder die Mindestanforderungen erfüllt werden. Dabei sollten aber auch wirklich nur Funktionen dokumentiert werden, die relevant für die Programmierer sind, welche die DLL später verwenden. Meist gibt es zu den DLL’s auch Header (meist in C oder C++ der Fall) wo auch die Beschreibungen hinterlegt werden können. Allerdings gehe ich dazu nicht weiter ein weil man meist keine Dokumentationen zu DLL’s schreibt sondern welche zu vorhanden DLL’s sucht.

    Ich hoffe ich konnte dir etwas weiterhelfen. Falls du Fragen hast oder etwas unklar ist, dann sag mir Bescheid. Wie man sieht bin ich in voller Schreiblust. ^^
    ~ Make

  • programm beenden

    • Yjuq
    • 19. Februar 2014 um 15:01

    Ich gehe mal davon aus dass du die *.wav Datei via SoundPlay() abspielst. Sieh dir mal den zweiten Parameter davon an.
    Zudem kannst du ein selbsgeschriebenes Programm beenden indem du den Exit Befehl nutzt.

    Falls dir das nicht weiterhilft:
    Mehr kann meine Kristallkugel leider nicht hergeben.
    Sinnvoll wäre der Sourcecode oder eine verkürzte Version welches dein Problem veranschaulicht.

  • Programmierer Gesucht

    • Yjuq
    • 18. Februar 2014 um 19:54

    Guten Abend :)
    Vielleicht solltest du erst einmal ein wenig über dein Programm erzählen welches verbessert werden soll. Ich bin mir sicher dass mir alle hier zustimmen würden, dass man sich unter deinen Angaben überhaupt nichts vorstellen kann. Ich helfe dir auch gerne ein wenig:

    Erst einmal wäre es sinnvoll zu wissen, wie das besagte Programm heißt. Unter Umständen könnte es der eine oder andere bereits kennen. (Dies setzt natürlich voraus, dass es öffentlich zugänglich ist.) Falls nichts bleibt dir nichts anderes übrig als selber darüber zu berichten.

    - Was ist die Hauptaufgabe des Programmes?
    >> Wofür ist das Programm überhaupt? Was macht es? Welche Features könnten für den weiteren Auftrag relevant sein? Etc.

    - In welches Themengebiet fällt deine Anfrage in der Programmierung?
    >> Damit meine ich, ob die Aufgabe beispielsweise darin besteht einen schwierigen Algorithmus für komplizierte Berechnungen zu entwickeln, oder es vielleicht um ein grafisches Meisterwerk geht. Du hast ja bereits gesagt dass es um Webseiten geht, also wird es vermutlich irgendetwas mit dem Internet zu tun haben.

    - Welche Informationen über das Programm sind noch relevant?
    >> Beispielsweise wäre es sinnvoll zu wissen, in welcher Sprache dein Programm überhaupt geschrieben ist. Zwar gehe ich davon aus dass es in AutoIt geschrieben ist, aber ich finde es gehört zu einer ordentlichen Anfrage dazu. Oder es könnte ja sein, dass du dich im Forum geirrt hast. :D

    - Was genau verlangst du nun von dem Programmierer?
    >> Soll nur eine weitere Feature hinzugefügt oder gleich das ganze Design verändert werden? Wie schätzt du den Arbeitsaufwand ein? Gibt es eine zeitliche Begrenzung oder steht es frei wann der Programmierer fertig ist? Einfach alle Details die irgendwie wichtig sein könnten nennen. Man muss ja auch eben wissen worum es hier geht und selber die Arbeit abschätzen können. Vielleicht lohnt es sich für die 100€ ja auch gar nicht. *g*

    Kurz und knapp: Deutlich mehr Informationen solltest du schon preisgeben. Das bringt nur dir und uns Vorteile. Wir müssen nicht nachfragen und du musst dieselbe Frage nicht (vielleicht) 20 mal beantworten.

    Mfg. Make :)

  • HotKeySet, Taste gedrückt halten

    • Yjuq
    • 13. Februar 2014 um 06:57

    Naja, bei mir steigt die CPU Auslastung um etwa 10% beim Programmstart. Danach bleibt sie konstant bei 3% - 5%.
    Zudem weiß ich auch garnicht was an _IsPressed() verwerflich sein soll.:

    Spoiler anzeigen
    [autoit]

    #include <Misc.au3>

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

    $hDLL = DllOpen('User32.dll')
    While Sleep(10)
    If _IsPressed('61', $hDLL) Then _Code() ; NUMPAD 1
    If _IsPressed('1B', $hDLL) Then Exit ; ESC
    WEnd
    DllClose($hDLL)

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

    Func _Code()
    ConsoleWrite('True' & @CRLF)
    EndFunc

    [/autoit]

    Alternativ kannst du ja mal schauen, ob du nicht irgendwie die WM_HOTKEY, WM_GETHOTKEY oder WM_SETHOTKEY Message dazu missbrauchen kannst. Die dazu passende Funktion auf msdn lautet RegisterHotKey.

  • HotKeySet, Taste gedrückt halten

    • Yjuq
    • 12. Februar 2014 um 20:16

    Hey :)
    Frag mit _IsPressed() einfach die Taste ab und führe dann den gewünschten Code aus.

  • Kleines Problem mit 2 For Next Schleifen

    • Yjuq
    • 11. Februar 2014 um 01:55

    Das könnte nicht nur so sein, das ist der Fehler!
    Wie shadow667 bereits sagte überschreibst du alle Werte nochmal, wenn die $j For-Schleife bei 3 angelangt ist, mit "\mainDD".
    Es ist nur eine Schleife nötig. Siehe hier:

    Spoiler anzeigen
    [autoit]

    $drive = StringLeft(@ScriptDir, 2)

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

    Global $userINI[4]
    $userINI[0] = $drive & "\myprog\main\1.ini"
    $userINI[1] = $drive & "\myprog\main\2.ini"
    $userINI[2] = $drive & "\myprog\main\3.ini"
    $userINI[3] = $drive & "\myprog\main\4.ini"

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

    Global $userINI1[4]
    $userINI1[0] = "AA"
    $userINI1[1] = "BB"
    $userINI1[2] = "CC"
    $userINI1[3] = "DD"

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

    For $j = 0 To UBound($userINI) - 1
    If IniRead($userINI[$j], "Section", "Testkey1", $drive & "\main\" & $userINI1[$j] & "") = 0 Then IniWrite($userINI[$j], "Section", "Testkey1", $drive & "\main\" & $userINI1[$j] & "")
    If IniRead($userINI[$j], "Section", "Testkey2", $drive & "\main\" & $userINI1[$j] & "") = 0 Then IniWrite($userINI[$j], "Section", "Testkey2", $drive & "\main\" & $userINI1[$j] & "")
    Next

    [/autoit]
  • Clickzähler

    • Yjuq
    • 10. Februar 2014 um 21:15

    Du verwechselst da was!
    MouseDown() bewirkt, dass die gewählte Taste gedrückt und gehalten wird bis MouseUp() aufgerufen wird.
    Deshalb bleibt auch die GUI an der Maus kleben. :)

    Am besten du verwendest _IsPressed() oder GUIGetCursorInfo um abzufragen ob die Maustaste gedrückt ist.

    Spoiler anzeigen
    [autoit]

    #include <Misc.au3>

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

    Global $iCounts, $idC
    GUICreate ('Helping Tool', 250, 250, 190, 280)
    $idC = GUICtrlCreateLabel ('Clicks: ', 15, 15, 100, 17)
    GUISetState()

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

    While True
    If GUIGetMsg() = -3 Then Exit

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

    If _IsPressed('01') Then
    While _IsPressed('01') And Sleep(10)
    WEnd
    $iCounts += 1
    GUICtrlSetData($idC, 'Clicks: ' & $iCounts)
    EndIf
    WEnd

    [/autoit]
  • Umlaut in Funktion von OleObject $abc.einfü

    • Yjuq
    • 9. Februar 2014 um 14:09

    Hey :)
    Setze einfach den Präprozessorbefehl "#AutoIt3Wrapper_Run_AU3Check = N" am Anfang deines Skriptes. So wird der Syntaxcheck deaktiviert und Umlaute werden akzeptiert:

    [autoit]

    #AutoIt3Wrapper_Run_AU3Check = N
    $t = DllStructCreate('int äx; int öx; int üx')
    $t.äx = 3
    $t.öx = 5
    $t.üx = 7

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

    ConsoleWrite($t.äx & @CRLF & $t.öx & @CRLF & $t.üx & @CRLF)

    [/autoit]
  • AdlibRegister in v3.3.10.2 geändert/unbrauchbar?

    • Yjuq
    • 6. Februar 2014 um 23:45

    Prinzipiell würde ich sowieso von AdlibRegister abraten und die Timer Funktionen empfehlen.
    Da das Skript sowieso während der Ausführung der registrierten Funktion gestoppt wird macht das kein Unterschied.
    Nur der Bug von AdlibRegister wird eben so umgangen. :)

  • Variablen ständig abfragen?

    • Yjuq
    • 6. Februar 2014 um 20:24

    Guck mal nach ob deine Funktion eventuell durch eine Bedingung etc. Aufgerufen wird.
    Vielleicht hat sich da der Teufel versteckt. Am einfachsten ist es natürlich den Sourcecode hochzuladen.
    Denk bitte daran beim Hochladen die entsprechende Funktion zu nennen welche nicht aufgerufen wird.
    [Zeilennummern wären da sicherlich hilfreich, je nachdem wie groß dein Sourcecode ist.]

  • Variablen ständig abfragen?

    • Yjuq
    • 5. Februar 2014 um 23:36

    Die einfachste Möglichkeit wäre da sicherlich den Funktionsaufruf in die Hauptschleife zu setzen.
    Falls die Funktion in ein bestimmten Intervall aufgerufen werden soll, so würde ich auf die Timer Funktionen statt AdlibRegister zurückgreifen.
    Aber dennoch sollte das so möglich sein (obwohl man bei AdlibRegister ein wenig vorsichtig sein sollte).

  • Happy Birthday, Andy

    • Yjuq
    • 4. Februar 2014 um 23:15

    Ah Andy :)
    Von mir gibt es natürlich auch Geburtstagsgrüße!

    Ich bin wirklich froh darüber dieses Forum gefunden zu haben. Es macht mir hier einfach unheimlich Spaß und Freude. Vor allem bin ich von dieser Hilfsbereiten Art allerseits begeistert. Und diese Wahnsinns Geduld die man mit mir aufbringen muss...

    Ich möchte dir (Und natürlich auch allen anderen) für deine (eure ^^) Hilfe bedanken! Andy, ich wünsche dir von Herzen noch sehr lange erfreuliche Jahre!

    Gruß Cederik =)

  • MultiStateButton

    • Yjuq
    • 3. Februar 2014 um 16:37

    Ich meine sowas hier: GUICtrlSetTip($cMSB, 'Tip')
    Das dein Control eben auf die Funktionen reagiert.
    Auf einige reagiert es ja schon. Aber trotzdem fehlen nochn paar.
    Das war damit gemeint. ^^

  • MultiStateButton

    • Yjuq
    • 2. Februar 2014 um 23:49

    Coole Idee chessi :)
    Soll das Contorl später mit den AutoIt GUI Funktionen kompatible werden?

    Ich freue mich schon auf die fertige UDF! :)

  • Ordner per Drag & Drop in ListView einfügen...

    • Yjuq
    • 2. Februar 2014 um 15:06

    Nein...
    Du kannst entweder nur den MessageLoop Mode oder den OnEvent Mode verwenden.
    Beides ist so zusammen nicht möglich.

    Hier als kleines Beispiel:

    [autoit]

    Opt('GUIOnEventMode', 1)

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

    $hGUI = GUICreate('')
    $id = GUICtrlCreateButton('', 0, 0, 100, 100)
    GUICtrlSetOnEvent($id, '_Exit')
    GUISetState()

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

    While GUIGetMsg() <> -3
    WEnd

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

    Func _Exit()
    Exit
    EndFunc

    [/autoit]
  • 2 While Schleifen? Wird Multithreading verlangt?

    • Yjuq
    • 2. Februar 2014 um 14:48

    Ach sorry, hab die nacht nicht geschlafen ;x
    Ich korrigiere das schnell noch! Danke für den Hinweis

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™