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
Beiträge von Yjuq
-
-
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
-
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.

-
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=31948Hier einmal eine Musterlösung:
Spoiler anzeigen
[autoit]; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +
[/autoit] [autoit][/autoit] [autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>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)
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent($GUI_EVENT_CLOSE, 'GUI_EVENT_CLOSE')
GUISetOnEvent($GUI_EVENT_SECONDARYUP, 'GUI_EVENT_SECONDARYUP')$hChild = GUICreate('', 60, 100, 430, 430, $WS_POPUPWINDOW, -1, $hMain)
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, 'GUI_EVENT_PRIMARYDOWN')
GUISetOnEvent($GUI_EVENT_SECONDARYUP, 'GUI_EVENT_SECONDARYUP')GUISetState(@SW_SHOW, $hMain)
[/autoit] [autoit][/autoit] [autoit]; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +
[/autoit] [autoit][/autoit] [autoit]While Sleep(10)
[/autoit] [autoit][/autoit] [autoit]
WEnd; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +
[/autoit] [autoit][/autoit] [autoit]Func GUI_EVENT_CLOSE()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFuncFunc GUI_EVENT_SECONDARYUP()
[/autoit] [autoit][/autoit] [autoit]
Local Static $bState
$bState = Not $bState
($bState) ? (GUISetState(@SW_SHOW, $hChild)) : (GUISetState(@SW_HIDE, $hChild))
EndFuncFunc GUI_EVENT_PRIMARYDOWN()
[/autoit] [autoit][/autoit] [autoit]
MsgBox(0, 'xxxxx', 'xxxxx', 0, $hChild)
GUI_EVENT_SECONDARYUP()
EndFunc; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +
[/autoit]Um ein AutoIt Code in einen Spoiler zu setzen benutze folgenden BB-Code: [ spoiler ] [ autoit ] CODE [ /autoit ] [ /spoiler ]
-
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.
User Defined Functions:
[autoit]
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:; #FUNCTION# ====================================================================================================================
[/autoit]
; Name ..........: function
; Description ...:
; Syntax ........: function()
; Parameters ....:
; Return values .: None
; Author ........: Your Name
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================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 -
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. -
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.
- 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

-
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')
[/autoit] [autoit][/autoit] [autoit]
While Sleep(10)
If _IsPressed('61', $hDLL) Then _Code() ; NUMPAD 1
If _IsPressed('1B', $hDLL) Then Exit ; ESC
WEnd
DllClose($hDLL)Func _Code()
[/autoit]
ConsoleWrite('True' & @CRLF)
EndFuncAlternativ 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.
-
Hey

Frag mit _IsPressed() einfach die Taste ab und führe dann den gewünschten Code aus. -
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]
[/autoit] [autoit][/autoit] [autoit]
$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"Global $userINI1[4]
[/autoit] [autoit][/autoit] [autoit]
$userINI1[0] = "AA"
$userINI1[1] = "BB"
$userINI1[2] = "CC"
$userINI1[3] = "DD"For $j = 0 To UBound($userINI) - 1
[/autoit]
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 -
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
[/autoit] [autoit][/autoit] [autoit]
GUICreate ('Helping Tool', 250, 250, 190, 280)
$idC = GUICtrlCreateLabel ('Clicks: ', 15, 15, 100, 17)
GUISetState()While True
[/autoit] [autoit][/autoit] [autoit]
If GUIGetMsg() = -3 Then ExitIf _IsPressed('01') Then
[/autoit]
While _IsPressed('01') And Sleep(10)
WEnd
$iCounts += 1
GUICtrlSetData($idC, 'Clicks: ' & $iCounts)
EndIf
WEnd -
Hey
[autoit]
Setze einfach den Präprozessorbefehl "#AutoIt3Wrapper_Run_AU3Check = N" am Anfang deines Skriptes. So wird der Syntaxcheck deaktiviert und Umlaute werden akzeptiert:#AutoIt3Wrapper_Run_AU3Check = N
[/autoit][autoit][/autoit][autoit]
$t = DllStructCreate('int äx; int öx; int üx')
$t.äx = 3
$t.öx = 5
$t.üx = 7ConsoleWrite($t.äx & @CRLF & $t.öx & @CRLF & $t.üx & @CRLF)
[/autoit] -
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.
-
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.] -
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). -
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 =)
-
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.
-
Coole Idee chessi

Soll das Contorl später mit den AutoIt GUI Funktionen kompatible werden?Ich freue mich schon auf die fertige UDF!

-
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('')
[/autoit][autoit][/autoit][autoit]
$id = GUICtrlCreateButton('', 0, 0, 100, 100)
GUICtrlSetOnEvent($id, '_Exit')
GUISetState()While GUIGetMsg() <> -3
[/autoit][autoit][/autoit][autoit]
WEndFunc _Exit()
[/autoit]
Exit
EndFunc -
Ach sorry, hab die nacht nicht geschlafen ;x
Ich korrigiere das schnell noch! Danke für den Hinweis