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

Beiträge von entsel

  • kopiere alles aber überschreibe nichts

    • entsel
    • 23. April 2018 um 09:21

    Stimmt, das Leerzeichen hat gefehlt, aber auch so:

    Code
    RunWait(@ComSpec & " /c " & "robocopy.exe", "g:\2018\" & " " & "f:\sicherung\2018\" & " /ETA /MAXAGE:" & $von & " /MINAGE:" & $bis)

    bleibt das Ergebnis das Gleiche

    Parameter für robocopy in der Konsole ausgeben ... ? - damit bin ich im Moment überfordert, wie mach ich das?

    _FileListToArrayRec("g:\2018\") - das erkennt mein Autoit3 zwar nicht als Befehl/Funktion (blau, Parametervorschlag, Hilfe) erzeugt aber ein Array, allerdings auch nur eine Ebene. Muss mich noch mit den Optionen beschäftigen, vielleicht brauchts da was?

    (Hilfe dazu hab ich gefunden: https://autoit.de/onlinehilfe/li…tToArrayRec.htm)

    SG

  • kopiere alles aber überschreibe nichts

    • entsel
    • 23. April 2018 um 08:36

    Danke für die Antworten.

    Bei meinen Versuchen hat Dircopy einen Ordner nicht mehr "angerührt" wenn dieser schon vorhanden war - also auch keine neuen Unterordner/Dateien dort hinein kopiert - oder hab ich da was übersehen?

    Batch-Datei - ist schon mal ein Schritt weiter.

  • kopiere alles aber überschreibe nichts

    • entsel
    • 23. April 2018 um 08:23

    Servus zusammen

    Manche Leute tun sich mit dem Computer schwer und ich hab (blöderweise?) in den Raum gestellt, mit einem Script zu helfen, mich dabei aber wohl zu weit aus den Fenster gelehnt (vielleicht auch, weil ich schon etwa 5 Jahre nix mehr programmiert habe?).

    Es sollen Daten von einer Speicherkarte (Registrierkassa) auf eine ext. Festplatte kopiert werden. Auf der Karte gibt es Jahresordner, z.B. "g:\2018\". Dieser Ordner soll jeweils kopiert werden - mit all seinen Unter- bzw. Unterunterordnern und mit allen deren Dateien. Aber bereits gesicherte, gesunde Daten sollen nicht mit eventuell beschädigten Dateien/Ordner von der Karte überschreiben werden (sensibler Umgang mit Speicherkarte fraglich).

    Der Kopiervorgang sollte daher mit den Parametern "kopiere alles aber überschreibe nichts" laufen.

    1. Dircopy kann das aber nicht und auch bei xcopy oder Robocopy hätte ich diese Möglichkeit jetzt nicht gesehen - oder gibts die Möglichkeit doch, weil so aussergewöhnlich scheint mir die Aufgabe auch nicht.

    2. Da die Sicherung am Monats-/Quartalsende erfolgen soll hab ich's übers Datum probiert - kopiere alle Dateien (mit Ordnerstruktur), die im Zeitraum erstellt wurden.

    Auf "g:\2018\" hab ich einige Ordner/Dateien angelegt (mit den entsprechenden Erstelldaten), da ich die Originalkarte nicht zur Verfügung habe. Ich hoffe, dass dort die Ordner/Dateien entsprechend angelegt werden.

    Code
    $von = 20180301
    $bis = 20180331
    RunWait(@ComSpec & " /c " & "robocopy.exe", "g:\2018\" & "f:\sicherung\2018\" & " /ETA /MAXAGE:" & $von & " /MINAGE:" & $bis)

    Es scheint, als ob robocopy zwar gestartet würde - etwas (ein DOS-Fenster?) blitzt kurz auf - aber es wird nichts kopiert.

    Bin mir aber auch nicht sicher, ob die obige Syntax stimmt.

    3. Einlesen der Ordner/Dateistruktur und kopieren mit Filecopy (flag-8) - hätte gehofft, das Einlesen geht mit _FileListToArray - das liest aber nur eine Ordnerebene - also auch nix.

    Nun hoffe ich auf Eure Unterstützung - Ideen? Hinweise?

    SG entsel

  • Spielzeiten von Video-Dateien auslesen

    • entsel
    • 26. November 2016 um 17:48

    Danke Euch - werd mir das mal zu Gemüte führen ...

    SG, entsel

  • Spielzeiten von Video-Dateien auslesen

    • entsel
    • 25. November 2016 um 10:29

    Hallo

    Es ist jetzt schon einige Jahre her, seit ich das letzte Mal mit Autoit gearbeitet habe und ich hab vieles vergessen - muss mich quasi neu einlesen.
    Jetzt möchte ich aber wieder was tun und zwar Eigenschaften, vor allem die Länge, von Videodateien (hauptsächlich mp4-Dateien) auslesen.

    Vielleicht könnt Ihr mir dazu ein paar Stichworte liefern - was includen, Funktionsnamen, etc. - damit ich mich auf das Wesentliche konzentrieren kann?

    Danke, entsel

  • Mail erstellen

    • entsel
    • 30. Januar 2013 um 18:53

    So, wie angekündigt, meine Umsetzung.

    Wie schon erwähnt werden die Adressen, Betreff, Anhang und Nachrichtentext anderweitig zusammengestellt - würde hier zu weit führen - deshalb die Dummys.
    Ich hab eine Funktion gebastelt, der ich jeweils die entsprechenden Daten übergebe.
    Die Lösungen für Adressen und Anhänge habe ich gewählt, weil das flexibler ist (ein oder mehrere)

    Spoiler anzeigen
    [autoit]

    #include <OutlookEx.au3>

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

    Global $sAdresse = "name1@mail.at;name2@mail.at"
    Global $sBetreff = "Subject=" & "Lieferung - Projekt Nr 123456..."
    Global $sAnhang = "c:\test.dwg;c:\test.pdf"
    Global $sNachrText = "<basefont face=Arial>" & "<basefont size=3>" & "Sehr geehrte Damen und Herren" & "<br>" & "<br>" ; Schriftart, Schriftgröße, 1.Textzeile, 2x Zeilenumbruch
    $sNachrText &= "Dies ist die Nachricht ..."

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

    sendemail($sAdresse, $sBetreff, $sNachrText, $sAnhang)

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

    ;---------------------------------------------
    Func sendemail($sAdresse, $sBetreff, $sNachrText, $sAnhang)
    Global $oOutlook = _OL_Open()
    _OL_MailSignatureSet("entsel-2", "") ; in Outlook vorhandene Signatur
    $oItem = _OL_ItemCreate($oOutlook, $olMailItem, "", "", $sBetreff)

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

    Local $aRecipients ;empfänger
    If $sAdresse <> "" Then
    $aRecipients = StringSplit($sAdresse, ";", 2)
    _OL_ItemRecipientAdd($oOutlook, $oItem, Default, $olTo, $aRecipients)
    EndIf
    Local $aAttachments ;anhang
    If $sAnhang <> "" Then
    $aAttachments = StringSplit($sAnhang, ";", 2)
    _OL_ItemAttachmentAdd($oOutlook, $oItem, Default, $aAttachments)
    EndIf

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

    $oItem.BodyFormat = $olFormatHTML
    $oItem.GetInspector
    $sBody = $oItem.HTMLBody
    $oItem.HTMLBody = $sNachrText & $sBody
    $oItem.Display

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

    _OL_MailSignatureSet("entsel-1", "entsel-1") ; zurückstellen auf Standard-Signatur
    EndFunc ;==>sendmailma31

    [/autoit]


    Danke water, für den Tipp mit @error - das werde ich mir noch zu Gemüte führen.

  • Mail erstellen

    • entsel
    • 28. Januar 2013 um 19:03

    Besten Dank Euch beiden - mit diesen Infos kann auch ich was anfangen. Und @ water - Danke auch von mir für die UDF.

    Über das Objectmodel von Outlook ($vOL_Result.GetInspector) werde ich
    mir wirklich nicht den Kopf zerbrechen - wäre vergeudete Energie. (Aber immerhin weiß ich jetzt, wo's herkommt).

    Ich konnte mich heute zwar nicht so viel damit beschäftigen, wie ich wollte, hab aber schon einige erfolgreiche Testläufe geschafft.
    Nächster Schritt - Einbau ins Programm und Test mit richtigen Daten.
    Werd's dann posten, wenn's läuft.

  • Mail erstellen

    • entsel
    • 27. Januar 2013 um 19:30

    Hallo qwert23

    Die obige Antwort galt water, Deinen Beitrag habe ich erst danach gesehen.
    Keine Polemik - sollte nur meinen Status Quo in Erinnerung rufen bzw. ergänzen.

    Danke für Dein Beispiel, werds morgen (im Büro) ausprobieren (hab zu Hause Thunderbird)

    Ein paar Fragen hätte ich auch dazu (falls Du die eine oder andere beantworten magst):

    [autoit]

    $oOutlook = $oOutlook = _OL_Open()

    [/autoit]


    ...diese doppelte Zuweisung hat einen bestimmten Zweck? (oder ist ein Versehen?)

    $olMailItem und $emsend:
    Da habe ich vergeblich gesucht, wo denen ein Wert zugewiesen wird - um zu verstehen, was sie genau beinhalten (die Beschreibung der Parameter hilft mir nicht recht weiter).
    (hab die Zeichenkette "$emsend_oft =" und "$olMailItem =" weder hier noch in der OutlookEx.au3 gefunden)

    ... $emsend_oft ist ein Outlookformular ...
    Wurde der schon (anderweitig) ein Wert zugeordnet? Ich nehme an, "", erzeugt eine Mail ohne (bzw. Standard-)Formular - richtig?

    Und zu

    [autoit]

    $vOL_Result.GetInspector

    [/autoit]


    fand ich auch keine Infos, weder in der Autoit-Hilfe noch in der OutlookEx.au3.
    (mit "$" beginnen doch normal Variablennamen, aber das ... ?( )

    Was die Empfänger betrifft - das _OL_ItemRecipientAdd wird wohl genauso funktionieren wie Dein _OL_ItemAttachmentAdd.
    Sind meistens 2 externe (aus *.ini) - "name1@mail.at; name2@mail.at" würde wohl "@scriptDir&"\test.txt"" ersetzen.

    Danke

  • Mail erstellen

    • entsel
    • 27. Januar 2013 um 18:04

    wie ich bereits sagte:

    Zitat

    Leider bin ich noch nicht so weit um das Wiki zu verstehen (nicht mal, wenn's auf Deutsch wäre).

    Zitat

    Ich hab auch versucht, in der OutlookEX.au3 irgendwelche Hinweise
    (Zusammenhänge) zu finden um auch noch die Adresse und eventuell einen
    Anhang einzubauen - leider vergeblich. Ich kam nicht dahinter, welche
    Werte sich in den diversen Variabeln verbergen bzw. wo sie zugewiesen
    werden.

    Ich bin leider kein "Profi" (wie Du?!) sonder noch Anfänger was Autoit betrifft - zweitens ist mein Schul-Englisch seit 40 Jahren Geschichte - Entschuldigung.
    Und um was zu lernen braucht man eben "sicheres Wissen" - die englischen Unterlagen reichen bei mir eben nur für bessere Vermutungen.
    (Drum hab ich mich ja auch auf autoit.de angemeldet und nicht auf autoitscript.com ;) - in der Meinung, hier auch deutschsprachige Infos zu erhalten)

  • Mail erstellen

    • entsel
    • 27. Januar 2013 um 16:55

    Danke

    Werd mal das Web durchsuchen, ob ich irgendwo Anleitungen finde, wo und wie die beiden Begriffe zu verwenden sind.
    Zur Not bleiben ja noch Try & Error

  • Mail erstellen

    • entsel
    • 25. Januar 2013 um 14:36

    Hallo H2O

    Danke für Deine Antwort.

    Die zweite Möglichkeit mit der

    [autoit]

    _OL_Wrapper_SendMail

    [/autoit]

    aus OutlookEX.au3 kann ich also vergessen.

    Leider bin ich noch nicht so weit um das Wiki zu verstehen (nicht mal, wenn's auf Deutsch wäre).
    Aber meine 3.Möglichkeit schaut dem HMTL-Beispiel schon sehr ähnlich (könnte glatt von dort sein ;) ).
    Ich hab auch versucht, in der OutlookEX.au3 irgendwelche Hinweise (Zusammenhänge) zu finden um auch noch die Adresse und eventuell einen Anhang einzubauen - leider vergeblich. Ich kam nicht dahinter, welche Werte sich in den diversen Variabeln verbergen bzw. wo sie zugewiesen werden.

    Am ehesten hätte ich noch vermutet, dass folgende Zeile ergänzt gehört:

    [autoit]

    $oItem = _OL_ItemCreate($oOutlook, $olMailItem, "", "", "Subject=Betreff öäüß", "Adresse=mail@adresse.at", "Anhang=c:\text.txt")

    [/autoit]

    ...funktioniert so natürlich nicht ...

    und hier steht ja auch nix von Adresse bzw. Anhang - aber auch nix vom Betreff (und der funktioniert dennoch):
    ;) Syntax.........: _OL_ItemCreate($oOL, $iItemType, $vFolder = ""[, $sTemplate = ""[,$sP1 = ""[, $sP2 = ""[, $sP3 = ""[, $sP4 = ""[, $sP5 = ""[, $sP6 = ""[, $sP7 = ""[, $sP8 = ""[, $sP9 = ""[, $sP10 = ""]]]]]]]]]]])

    ... vielleicht ist es ja die Bezeichnung "Subject" ? ... aber was gehört statt Adresse bzw. Anhang hin ? ... Reihenfolge ? ...


    [autoit]

    $oItem.HTMLBody = "Nachricht öäü?..." & $sBody

    [/autoit]

    Da wird dem Body wohl der Nachrichtentext mit der Signatur zugewiesen (das hab sogar ich geschnallt),
    aber gibts auch sowas, wie

    [autoit]

    $oItem.Adresse

    [/autoit]

    natürlich nicht mit der Zeichenfolge "Adresse", sondern der richtigen Bezeichnung?

    Fragen über Fragen ...

    Bitte um noch etwas Aufklärung, vor allem was das Hinzufügen von Adresse und Anhang betrifft.

    Schöne Grüße von A zu A
    entsel

  • Mail erstellen

    • entsel
    • 23. Januar 2013 um 19:06

    Servus

    Es gibt zwar schon etliches zum Thema EMail, aber das "Richtige" habe ich dennoch nicht gefunden.

    Das Programm soll E-Mails erstellen - und vorweg - ich hab keine Zugangsdaten für _INetSmtpMailCom (Mailserver, Passwort, etc.)

    Bis jetzt hab ich

    [autoit]

    _INetMail($sMailadr, $sBetreff, $sNachrText)

    [/autoit]

    verwendet.

    [autoit]

    $sMailadr = "mail@adresse.at" ; aus Projektdaten
    $sBetreff = "betrifft öäüß..." ; aus Projektdaten
    $sNachrText = "Nachrichtentext ... öäüß ..." ; je nach Art der Mail (Anfrage, Bestellung, Lieferung, ...

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

    $sAnhang = "c:\test.txt"

    [/autoit]

    ... werden zuvor im Programm zugewiesen.

    Nachteile:
    1) Keine Signatur und kein Anhang möglich (?)
    2) kann keine Umlaute und "ß" - müssen extra korrigiert werden

    =========================================================================================

    Hab dann weitere Möglichkeiten gefunden:

    Spoiler anzeigen
    [autoit]

    ;~ keine Ahnung, was die folgenden beiden Zeilen bewirken (sollen), es funktioniert eigentlich auch ohne sie ...?
    ;~ #AutoIt3Wrapper_AU3Check_Parameters= -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
    ;~ #AutoIt3Wrapper_AU3Check_Stop_OnWarning=Y

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

    #include <OutlookEX.au3>

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

    ;~ ... Mail senden: ("entsel-0" und "entsel-1" sind in Outlook vorhandene Signaturen)

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

    _OL_MailSignatureSet("entsel-1", "") ; gewünschte Signatur setzen
    $oOutlook = _OL_Open()
    _OL_Wrapper_SendMail($oOutlook, $sMailadr, "", "", $sBetreff, $sNachrText, $sAnhang, "", "")
    _OL_Close($oOutlook)

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

    _OL_MailSignatureSet("entsel-0", "") ;auf Standardsignatur zurücksetzen

    [/autoit]

    1) Was muss ich ändern/ergänzen, damit die Mail nicht gleich gesendet, sondern nur erstellt und zur Kontrolle (und eventuellen weiteren Bearbeitung) geöffnet wird.
    Das Abschicken soll manuell über den Senden-Button erfolgen.

    2) Wie kann ich bewirken, dass noch eine (der bereits vorhanden Signaturen) angehängt/verwendet wird - die hier verwendete

    [autoit]

    _OL_MailSignatureSet ()

    [/autoit]

    funktioniert leider nicht.
    (ich glaube mich zu erinnern, dazu was gelesen zu haben, find's aber nicht mehr)

    =========================================================================================

    Dritte Möglichkeit:

    Spoiler anzeigen
    [autoit]

    #include <OutlookEX.au3>
    Global $oOutlook = _OL_Open()

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

    _OL_MailSignatureSet("entsel-1", "")

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

    $oItem = _OL_ItemCreate($oOutlook, $olMailItem, "", "", "Subject=Betreff öäüß")
    $oItem.BodyFormat = $olFormatHTML
    $oItem.GetInspector
    $sBody = $oItem.HTMLBody
    $oItem.HTMLBody = "Nachricht öäü?..." & $sBody
    $oItem.Display

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

    _OL_MailSignatureSet("entsel-0", "entsel-0")

    [/autoit]

    Funktioniert mit Signatur, aber wie könnte ich da noch die EMail-Adresse und den Anhang einbauen.


    Bitte um Eure Hilfe
    SG, entsel

  • Default-Wert mit Enter übernehmen

    • entsel
    • 10. Juli 2012 um 18:23

    Hallo BugFix

    Mit Deinem Code kann ich jetzt meine Vorstellungen verwirklichen, auch wenn mir die Funktion WM_COMMAND nach wie vor unverständlich ist - genauso, wie die Tatsache, dass sowas AutoIt nicht eingebaut hat. 
    (In AutoLisp/DCL-(DialogControlLanguage) reicht dafür ein "allow_accept=true")

    Vielleicht magst Du noch dazu beitragen, dass etwas mehr Licht in meine trübe Birne kommt.

    [autoit]

    Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)

    [/autoit]


    Nach meinem Verständis müßte die Funktion mit den 4 Parametern aufgerufen werden (?), es gibt aber nur mehr die Zeile

    [autoit]

    GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND')

    [/autoit]


    in der "WM_COMMAND" vorkommt - und keine Parameter!?

    Deshalb ist es mir ein Rätsel, woher die Variablen $hWnd, $iMsg, $iwParam, $ilParam ihre Werte haben, ebenso wie die daraus resultierenden Variablen -
    z.B.

    [autoit]

    $iCode = BitShift($iwParam, 16) ; Hi Word.

    [/autoit]


    Ebenso bekommt $GUI_RUNDEFMSG nie einen Wert zugewiesen? Soll aber wohl nur eine Meldung raus/rückgeben?

    Auf das setzen des Focus mit

    [autoit]

    ControlFocus($hGUI, '', $aInput[$iNext][0])

    [/autoit]


    könnte ich wohl verzichten, weil ich das ja abhängig von der jeweiligen Eingabe mit

    [autoit]

    GUICtrlSetState($input3, $GUI_FOCUS)

    [/autoit]


    erledige - richtig?

    Die Spalte 1 im Array $aInput beginnt mit 3 (und nicht mit 0 oder 1) - Zufall ?
    und es gäbe noch weitere Fragen, aber das soll ja hier nicht in einem Lehrgang enden ...

    Vielleicht kannst mir die eine oder andere Frage noch beantworten, ansonsten nehm' ich's als gegeben ...


    Ja, und natürlich ein großes DANKESCHÖN für Deinen Code.
    Danke auch an Christoph und Micha.

  • Default-Wert mit Enter übernehmen

    • entsel
    • 8. Juli 2012 um 10:23

    Vielleicht noch ein Beispiel zur Klarstellung wie ich mir das vorstelle (es geht nicht um AutoVervollständigung)
    Es soll ein Name erfasst werden - zB. Müller Gerd:
    - Ich starte das Programm, gebe die Projektnummer ins entsprechende Feld - ENTER.
    - Aus einer INI-Datei werden die bereits vorhandenen Daten gelesen und an entsprechender Stelle eingetragen.
    - Ich klicke nun ins betreffende Eingabefeld und trag den NachNamen ein - Enter.
    - Jetzt wird geprüft, obs den Namen schon gibt (INI-Datei) und wenn er nur einmal vorkommt, wird "Gerd" ins entsprechende Eingabefeld geschrieben und der Focus dorthin weitergereicht. *)
    - Ein ENTER würde dann den Vornamen bestätigen (bewirkt aber rein gar nix, warum das nicht eingebaut ist, ist mir unverständlich), weitere Vorgabemöglichkeiten prüfen, und den Focus weiterreichen.
    Aber weils ja auch der Müller Thomas sein könnte, müsste man die Vorgabe auch überschreiben können.
    - Nun könnte weiter dessen Dienststelle vorgeschlagen werden - ENTER - die Adresse - ENTER -, usw..
    - Mit OK werden die Daten in die INI geschrieben und das Programm beendet.


    *) Idealerweise würde ich mehrere (für diesen Nachnamen) vorhandene Vornamen in einem Combofeld zur Auswahl angebieten, wobei man einen weiteren über dessen Edit-Feld hinzufügen können sollte. Dort kann ich zwar was reinschreiben, aber ein ENTER bewirkt auch da rein gar nix. (aber das hab ich auch an anderer Stelle bereits angesprochen)

    BugFix
    Nachdem ich meinen Text verfasst habe (stelle ihn jetzt trotzdem rein) sehe ich grad Deine Ergänzung - werd mal schauen, ob mein bescheidener Horizont dafür ausreicht.

  • Default-Wert mit Enter übernehmen

    • entsel
    • 7. Juli 2012 um 19:02

    Servus

    Vielleicht habe ich an anderer Stelle ([ offen ] Vorgaben in Input-Felder mit Enter übernehmen) zu speziell gefragt (Sackgasse?), aber weil ich nicht glauben kann, dass es dafür keine einfache ;) Lösung geben soll, hier nochmal allgemeiner gefragt:

    In einem GUI sollen Daten eingegeben/erfasst werden. Allerdings nicht in einer bestimmten Reihenfolge, sondern wie sie grad anfallen. Und vielfach gibt es Default-Werte - sei es auf Grund von Wahrscheinlichkeiten (ist zu 98% immer "xyz") oder weil sie sich von anderen Werten ableiten lassen (und es gibt Ausnahmen).

    Das Eintragen der Default-Werte ginge ja mit GUICtrlSetData und mit GUICtrlSetState($xyz, $GUI_FOCUS) könnte man den Focus setzen.
    Aber gibt es auch eine (andere s.o. ?) Möglichkeit, die Vorgabewerte einfach durch drücken der ENTERtaste zu übernehmen?
    (auch wenn AutoIt keine ausgewachsene Programmiersprache ist - die Vorgabe, ein Programm zB. in "C:\Programme" zu installieren könnte man ja dann auch nicht einfach mit ENTER "durchwinken").
    Sollte so eine Möglichkeit tatsächlich fehlen?
    Außerdem würde ich (programmtechnisch) gern erkennen, in welches Feld Daten übernommen wurden um davon abhängig weitere Funktionen anzustoßen - zB. prüfen, ob sich durch die Eingabe weitere Vorgabewerte ergeben, weiterreichen des Focus, etc.?

    Übrigens - es gibt noch keinen Code.
    Da ich noch Anfänger bin, trage ich erst die Umsetzungsmöglichkeiten zusammen. Hätte ja nicht viel Sinn, wild drauf los zu coden um am Ende feststellen zu müssen, dass einige Bausteine fehlen (etwa der obige).
    Und (weil ich schon an anderer Stelle gefragt wurde) nein, nicht das Schreiben des Programms ist gefragt, das Aufzeigen von Lösungsmöglichkeiten für dieses spezielle Problem reicht ;)

    Schöne Grüße
    entsel

    Falls es interessiert, was es am Ende werden sollte - eine kleine Projektverwaltung mit Baustellenadressen, Kontaktpersonen, Lieferadressen, Überwachung von Terminen etc.

  • Vorgaben in Input-Felder mit Enter übernehmen

    • entsel
    • 5. Juni 2012 um 18:20

    Hallo BugFix

    Was den Wert betrifft - das hast Du ja kommentiert:
    $aInput[$i][1] = GUICtrlRead($aInput[$i][0]) ; == Wert auslesen und in das Array schreiben
    Aber -
    angenommen ich starte das Programm, gebe etwas in Input2 ein - wie könnte ich dann feststellen, dass es eben in Input2, und nicht in Input1 oder 4, 7 oder 12 eingegeben wurde.
    Oder anders gesagt, wie weiß ich (programmtechnisch), ob ich eine Adresse, den Namen des Auftraggebers oder den eines Sachbearbeiters eingegeben habe. Und abhängig davon sollten ja auch verschiedene Funktionen angestoßen werden ...

    Ich fürchte, Deine Mühe dürfte umsonst gewesen zu sein und eine Lösung scheint nicht möglich.
    Und falls doch, ist sie für mich wahrscheinlich schon zu kompliziert.

  • CuiCTRLCreateCombo soll bei manueller Eingabe auf Enter reagieren

    • entsel
    • 4. Juni 2012 um 19:36

    Das hätte ich auch schon gesucht - wozu?
    Um in der Combo-Box vorhandene Daten zur Auswahl anzubieten, mit der Möglichkeit, der Erweiterung.
    z.B. Nachnahme Müller - Gerd und Hansi sind vorhanden und werden angeboten, Thomas muss eingetragen werden.

    Ich hab dann eine Input-Box drüber gesetzt.

  • Vorgaben in Input-Felder mit Enter übernehmen

    • entsel
    • 4. Juni 2012 um 19:16

    Hallo BugFix

    Danke für Deine Mühe.
    Mit Deiner Lösung komme ich zwar mit Enter ins nächste Feld, aber was mir jetzt fehlt ist, was ich mit

    Case $input1
    GUICtrlSetData($input2, 2)

    dargestellt habe.
    Wenn ich also in Feld1 z.B. eine Baustellenadresse eingebe, könnte man davon eine zuständige Behörde ableiten (natürlich aus weiteren vorhandenen Daten) und in Feld 2 als Vorgabe eintragen, die dann meist mit Enter bestätigt werden könnte (für die Ausnahmen bleibt die Überschreibmöglichkeit). Kennt man weiters die Art des Auftrags, könnte man vielleicht den Sachbearbeiter ermitteln. Termine sind vielleicht abhängig von anderen Terminen, usw.
    Die Daten (hier als Wert 2) müssten natürlich in jedem "Case $Inputx" anders berechnet werden.

    Wenn ich aber kein "Case $input..." habe, wie kann ich da wissen, was ich grade eingegeben (welches Feld in grade befüllt) habe?
    Oder bin ich noch zu "neu" um es zu durchschauen?

  • Vorgaben in Input-Felder mit Enter übernehmen

    • entsel
    • 3. Juni 2012 um 17:01

    Hallo BugFix

    Die ersten Zeilen glaube ich in etwa zu durchschauen:
    ich vermute, es werden 2 GUI's erstellt, eine Art "Identität" abgefragt, und das 2. angezeigt.

    Mit

    [autoit]

    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")

    [/autoit]


    und

    [autoit]

    Case -3

    [/autoit]


    kann ich leider gar nix anfangen ...

    Die Funktion WM_COMMAND sollte (nach meinem Verständnis) irgendwo (mit 4 Argumenten ?) aufgerufen werden ?
    Passiert das damit ???:

    [autoit]

    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")

    [/autoit]

    ?
    Was ist dann mit der Anzahl der Argumente ?
    $hWnd, $iMsg, $iwParam, $ilParam: wird denen nie ein Wert zugewiesen? (wie etwa $hWnd = ... ?)


    Nach

    [autoit]

    Case $hWndFrom = $hIn And $iCode = $EN_CHANGE

    [/autoit]


    bzw.

    [autoit]

    Case $iCode = 0x0

    [/autoit]


    wird dann jeweils das andere GUI angezeigt/verborgen bzw. mit Daten beschickt und der Focus gesetzt,
    wenn ich's richtig verstanden hab?
    Aber was die beiden Zeilen selber bedeuten kann ich leider nicht entschlüsseln, das ist ganz offensichtlich noch zu hoch für mich.

    Würd' mich freuen, wenn Du mir das anhand meines Beispiels noch genauer erklären könntest?:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>

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

    $hGUI = GUICreate('TEST')
    $input1 = GUICtrlCreateInput('1', 40, 30, 60, 20)
    $input2 = GUICtrlCreateInput('', 40, 60, 60, 20)
    $input3 = GUICtrlCreateInput('', 40, 90, 60, 20)
    $input4 = GUICtrlCreateInput('', 40, 120, 60, 20)
    GUISetState(@SW_SHOW, $hGUI)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $input1
    $wert1 = GUICtrlRead($input1)
    GUICtrlSetData($input2, 2)
    GUICtrlSetState($input2, $GUI_FOCUS)
    Case $input2
    $wert2 = GUICtrlRead($input2)
    GUICtrlSetData($input3, 3)
    GUICtrlSetState($input3, $GUI_FOCUS)
    Case $input3
    $wert3 = GUICtrlRead($input3)
    GUICtrlSetData($input4, 4)
    GUICtrlSetState($input4, $GUI_FOCUS)
    Case $input4
    $wert4 = GUICtrlRead($input4)
    EndSwitch
    WEnd

    [/autoit]

    Wenn ich einen Wert eingebe, läufts ja weiter, ich will aber oft den Vorschlag nur mit Enter übernehmen.

  • Vorgaben in Input-Felder mit Enter übernehmen

    • entsel
    • 29. Mai 2012 um 20:06

    Danke mal für die Antwort.

    Auf den ersten Blick verstehe ich davon allerdings nur viel "Bahnhof". ?(
    Ich werde mich aber noch ausgiebiger damit beschäftigen - vielleicht geht mir ja dann das eine oder andere Licht auf - melde mich dann später wieder.

    Danke

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™