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

Beiträge von WhiteF

  • _ArrayDisplay mit Columntitle verwenden

    • WhiteF
    • 14. März 2014 um 07:12

    hi,
    vielen dank für deinen beitrag.
    ich hab jetzt nocht einen Columntitle zum Syntax hinzugefügt > Ein Leerzeichen:

    [autoit]

    _ArrayDisplay($arrU, $window_title, -1, 0, "" , "|", "lfd Nr|A|At Klartext|Z|B|Mg|Fg|Eg| ")

    [/autoit]


    _____________________________________________________________________________________________^_

    Nun werden alle Zeilen mit den Columntitles ausgegeben; jedoch wird eine weitere leere Spalte zum Schluss angefügt.
    Ich kann damit nun leben, aber ist dennoch irgendwie eigenartig!

  • _ArrayDisplay mit Columntitle verwenden

    • WhiteF
    • 13. März 2014 um 18:33

    hallo,
    irgendwie habe ich Probleme beim verwenden von "_ArrayDisplay".
    Ich habe ein 2D-Array und möchte es mir lediglich nur nochmal visualisiert darstellen.

    meine array.au3 basiert auf dieser Funktion. (Nicht auf diese hier)

    [autoit]

    $arrU[12][10]

    [/autoit]

    Mit dem einen Syntax bekomme ich mein Array und den entsprechenden Columntitles angezeigt, jedoch nur bis zur 8 Zeile, obwohl das Array 12 Zeilen hat! Und eine Spalte wird nicht angezeigt.
    (Die 8 Zeile des Array ist leer, die 9 Zeile des Array ist leer, die 10 Zeile des Array jedoch ist wieder beschrieben).

    [autoit]

    _ArrayDisplay($arrU, $window_title, -1, 0, "" , "|", "lfd Nr|A|At Klartext|Z|B|Mg|Fg|Eg")

    [/autoit]

    Mit dem anderen Syntax bekomme ich mein Array ohne den entsprechenden Columntitles angezeigt, jedoch alle 12 Zeilen, so wie alles sein sollte.

    [autoit]

    _ArrayDisplay($arrU, $window_title, -1, 0, "|", "lfd Nr|A|At Klartext|Z|B|Mg|Fg|Eg")

    [/autoit]

    Weiß jmd was ich am Syntax ändern muss, damit alle Zeilen ausgegeben werden mit Columntitles?

    VG

  • Addition von Dezimalzahlen mit Nachkommastellen

    • WhiteF
    • 11. März 2014 um 12:55

    Danke an alle!
    Zum schluss lag es jetzt noch am tausender Trennzeichen...

    Das eine ")" war durch abkürzung des codes falsch mitübernommen ;)

    so klappts:

    [autoit]


    Func ...

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

    dim $z1 = 0.00 ;Ist nun nicht mehr als String deklariert

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

    for i = .....
    $z1_Aktuell = StringMid($line, 32, 16)

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

    msgbox(4096, "", $z1 & " + " & $z1_Aktuell & @CRLF & _
    "$z1 + $z1_Aktuell")

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

    $z1_Aktuell = _CheckDec($z1_Aktuell) ; In dieser Funktion wird aus einer DE Zahl (7.223,14) eine EN Zahl (7,223.14)

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

    $z1 = $z1 + $z1_Aktuell

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

    msgbox(4096, "", "Summe= " & $z1 )

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

    Next

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

    EndFunc

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

    Func _CheckDec($value)
    ; Funktion zum umwandeln von DE Zahlen in EN Zahlen
    $value = StringReplace($value, ",", ",,")
    $value = StringReplace($value, ".", "")
    $value = StringReplace($value, ",,", ".")
    ;msgbox(4096, "", "checkvalue: " & $value)
    return $value
    EndFunc

    [/autoit]

    Vielen Dank

  • Addition von Dezimalzahlen mit Nachkommastellen

    • WhiteF
    • 11. März 2014 um 11:08

    hi,
    habe nun deine Tipps umgesetzt:

    [autoit]


    Func ...

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

    dim $z1 = 0.00 ;Ist nun nicht mehr als String deklariert

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

    for i = .....
    $z1_Aktuell = StringMid($line, 32, 16))

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

    msgbox(4096, "", $z1 & " + " & $z1_Aktuell & @CRLF & _
    "$z1 + $z1_Aktuell")

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

    $z1_Aktuell = _CheckDec($z1_Aktuell) ; In dieser Funktion wird aus einer DE Zahl (7.223,14) eine EN Zahl (7,223.14)

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

    $z1 = $z1 + $z1_Aktuell

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

    msgbox(4096, "", "Summe= " & $z1 )

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

    Next

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

    EndFunc

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

    Func _CheckDec($value)
    ; Funktion zum umwandeln von DE Zahlen in EN Zahlen
    $value = StringReplace($value, ",", ",,")
    $value = StringReplace($value, ".", ",")
    $value = StringReplace($value, ",,", ".")
    ;msgbox(4096, "", "checkvalue: " & $value)
    return $value
    EndFunc

    [/autoit]

    MsgBox Output:

    Code
    0 + 7,016.00
    $z1   +   $z1_Aktuell
    Summe= 7
    ---
    7 + 6,887.00
    $z1   +   $z1_Aktuell
    Summe= 13
    ---
    13 + 60.00
    $z1   +   $z1_Aktuell
    Summe= 73
    Alles anzeigen

    Was ist den jetzt noch falsch?!

    VG

  • Addition von Dezimalzahlen mit Nachkommastellen

    • WhiteF
    • 11. März 2014 um 09:09

    Bei der MsgBox-Ausgabe kann man die Rechnung mitverfolgen...
    Ab der dritten Rechnung sind die Ergebnisse falsch.

    VG

  • Addition von Dezimalzahlen mit Nachkommastellen

    • WhiteF
    • 11. März 2014 um 08:21

    hallo,
    irgendwie verzweifel ich gerade...

    ich möchte 2 zahlen in einer Schleife addieren:

    [autoit]


    dim $z1 = "0.00"

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

    for i = .....
    $z1_Aktuell = StringMid($line, 32, 16))

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

    msgbox(4096, "", $z1 & " + " & $z1_Aktuell & @CRLF & _
    "$z1 + $z1_Aktuell")

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

    $z1 = $z1 + $z1_Aktuell

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

    msgbox(4096, "", "Summe= " & $z1 )

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

    Next

    [/autoit]

    Meine Msgbox sehen dann so aus:

    Code
    0.00 + 7.016,00
    $z1   +   $z1_Aktuell
    Summe= 7.016
    ---
    7.016 + 6.887,00
    $z1   +   $z1_Aktuell
    Summe= 13.903
    ---
    13.903 + 60,00
    $z1   +   $z1_Aktuell
    Summe= 73.903
    Alles anzeigen

    Wie man sieht, funktionieren die ersten beiden Additionen, nur bei der Dritten (13.903 + 60,00) erscheint als Ergebnis 73.903 .
    Bei anderen Programmiersprachen deklariere ich ja um vorhinein die variablen, jedoch bei autoit nicht. ich vermute das er irgendwie durcheinanderkommt.

    Wisst ihr wie ich mein code anpassen muss?

    Viele Grüße und Danke bereits im Vorraus!

  • Zahl (Int, Float) in Tausendergruppierung ausgeben, Währungsformatierung

    • WhiteF
    • 10. März 2014 um 14:11

    hi,
    kannst du die funktion um ein parameter erweitern, sodass auch bei ergebnissen mit keiner nachkommastelle, dennoch 2 nachkommazahlen mitausgegeben werden?

    Zur Zeit:
    _NumberFormatThousand("300,00")
    =
    300

    Nach Änderung:
    _NumberFormatThousand("300,00")
    =
    300,00

  • AutoIt, Word und Ich...

    • WhiteF
    • 5. März 2014 um 15:40

    Hi,
    Ich klinke mich mal hier mitein...
    Wenn das word dokument noch nicht gespeichert ist, wie bekomme ich es dann an die bookmarks ran? Kann man das object onthefly übertragen?
    Oder muss man wirklich das aktive dokument temporär abspeichern?

    VG

  • Gleiche IP bei zwei PCs? o.O

    • WhiteF
    • 16. September 2013 um 20:21

    http://de.wikipedia.org/wiki/Port_%28Protokoll%29

  • Nicht-Standard Control anklicken ?

    • WhiteF
    • 16. September 2013 um 20:19

    Das stimmt, der Ordner könnte oft vorkommen!! Deswegen sollte man beim verwenden von ImageSearch dies immer im Hinterkopf behalten und aussagekräftige Bilder verwenden damit keine Redundanzen auf dem Bildschirm vorkommen.
    Ich hätte zB dieses Bild verwendet.
    [Blockierte Grafik: http://www.bilder-upload.eu/thumb/cfb710-1379355404.png]

    Entweder nimmt man hier dann die Mitte abzüglich 20, oder die linke obere ecke plus 10 oder ähnlich.

    Aber ein Shellexecute mit den korrekten Parametern (sofern man sie kennt) ist noch sauberer.

  • Anwendung bekommt keine GUI / Fokus

    • WhiteF
    • 16. September 2013 um 20:00

    Neues Notebook kaufen, bzw. das nicht mehr supportete XP wegschmeißen und was neues drauf machen.
    Alles andere wird sich dann bestimmt klären...

  • Nicht-Standard Control anklicken ?

    • WhiteF
    • 16. September 2013 um 19:54

    hi,
    ich hatte auch solch ein problem und bei dir würden 2 Lösungen passen:
    1. ControlClick bezogen auf einen festen X- und Y-Wert, sofern der WindowTitle vorhanden ist (den button name einfach weglassen, jedoch die Anführungszeichen aufführen)
    2. Oder du benutzt "_ImageSearch()". Danach erhälst du die X- und Y-Werte des Bildes und kannst anhand dieser Daten dann, ein ControlClick oder MouseClick machen (lieber ControlClick).

    Ich empfehle Variante 2 - schliesst Eventualitäten aus.

  • Gleiche IP bei zwei PCs? o.O

    • WhiteF
    • 16. September 2013 um 19:35

    Die Internet-IP ist bei beiden PC's die gleiche... diese wird dem Router vergeben, mit dem man ins Internet geht.
    Eine lokale IP, damit der Router intern im Netzwerk die PC's unterscheiden kann, sollte einmalig sein; oft gebraucht wird hier
    "192.168.0.0" - "192.168.0.255"
    "192.168.1.0" - "192.168.1.255"
    Da du geschrieben hattest, dass du dich nicht auskennst, müsste man erstmal wissen welche ip du hast.
    am besten machst du mal cmd auf; also START, dann gibst du cmd ein, drückst Enter, dann erscheint so ein kleines schwarzes eingabefenster und dort schreibst du:
    ipconfig -all > c:\ip.txt
    evtl. bei fehlendem schreibzugriff (UAC^^):
    ipconfig -all > d:\ip.txt

    den inhalt der ip.txt poste mal hier rein... genauso wie die 2 ip adressen die dir vom script ausgegeben werden... dann sehen wir weiter...

    EDIT: sogar 2 leute waren schneller^^

  • WaitForImageSearch "extern" aufrufen erfolglos

    • WhiteF
    • 16. September 2013 um 16:05

    Ich bin nun selbst auf die Lösung des Problems gekommen!!

    Ich kläre nochmal auf:
    Mit dem Programm "Project1+Unterordner.exe" (erstellt mit Delphi) soll eine Aut-It exe namens "test.exe" geöffnet werden, die sich im Unterordner "test\test\" befindet.
    \Project1+Unterordner.exe
    \test\test\test.exe

    Project1+Unterordner.exe: Öffnet lediglich die Auto-It exe Datei.
    Delphi-Code: Project1+Unterordner.exe

    Code
    unit test2;
    interface
    uses
      Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
      Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, ShellAPI;
    
    
    type
      TForm1 = class(TForm)
        Button1: TButton;
        Label1: TLabel;
        Memo1: TMemo;
        Label2: TLabel;
        Memo2: TMemo;
        procedure Button1Click(Sender: TObject);
      private
        { Private-Deklarationen }
      public
        { Public-Deklarationen }
      end;
    
    
    var
      Form1: TForm1;
    
    
    implementation
    
    
    {$R *.dfm}
    
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    ShellExecute(Application.Handle, 'open', PChar('test\test\test.exe'), nil, nil, SW_NORMAL);
    end;
    
    
    end.
    Alles anzeigen

    test.exe: Prüft jede Sekunde ob das Icon "Computer" (Windows 8) sich auf dem Screen befindet. Das Bild welches zur Identifikation dient ist die "pc.png"
    Auto-It-Code: test.exe

    [autoit]

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

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

    ;~ HotKeySet("{NUMPAD2}", "_task0")

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

    Global $x1 = 0
    Global $y1 = 0

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

    While 1
    Sleep(1000)
    _task0()
    WEnd

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

    Func _task0()
    while 1
    if _ImageSearch("pc.png", 1, $x1, $y1, 0) = 1 Then
    MsgBox(4096, "", "Computer (Arbeitsplatz) gefunden!")
    EndIf
    WEnd
    EndFunc

    [/autoit]


    >>> Anbei liegt das Projekt mit den jew. Dateien ab.

    Wenn ihr nun das Projekt welches eig. doch recht simpel strukturiert ist ausprobiert, werdet ihr folgendes feststellen können:
    Doppelklick auf "Project1+Unterordner.exe":
    >Click auf Button
    >Auto-It "test.exe" wird gestartet
    >Aber es erscheint kein MsgBox(4096, "", "Computer (Arbeitsplatz) gefunden!") obwohl das "Computer" Icon vorhanden ist

    Doppelklick auf "\test\test\test.exe"
    >Auto-It "test.exe" wird gestartet
    >Es erscheint die MsgBox(4096, "", "Computer (Arbeitsplatz) gefunden!") sofern das "Computer" Icon vorhanden ist

    Mir ist aufgefallen, dass das Problem hier an der Pfadangabe der Bilddatei liegt.
    Man hätte annehmen können, dass Bilddatei "pc.png" sich abhängig von der Auto-It exe bezieht, demnach: im selben Ordner.
    Dies stimmt auch, sofern man die "test.exe" startet.
    Startet man allerdings mit "Project1+Unterordner.exe" die Auto-It exe funktioniert das Script nicht... wieso... naja, verschiebt man die "pc.png" in das Verzeichnis in der auch "Project1+Unterordner.exe" liegt, dann läuft es.
    Die Bilddateiangabe bezieht sich nun immer auf die Ursprungsexe?! Ein simples "@ScriptDir &" als weitere Parameterangaber zur Bilddatei hilft hier, da hiermit der Pfad der bilddatei nun eindeutig identifiziert wird.

    Das Problem lässt sich hiermit beheben:

    [autoit]

    _WaitForImageSearch("pc.png", 1, $x1, $y1, 0)

    [/autoit]

    muss wie folgt geändert werden:

    [autoit]

    _WaitForImageSearch(@ScriptDir & "pc.png", 1, $x1, $y1, 0)

    [/autoit]

    Ich finde das wirklich nice 2 know, da dieses Example ohne "@ScriptDir &" viel zu oft im Internet kursiert...
    (Ganz schön viel Text für soetwas simples, aber ich hoffe ich kann hiermit viele andere User ihre ratlosigkeit klären :D )

  • WaitForImageSearch "extern" aufrufen erfolglos

    • WhiteF
    • 16. September 2013 um 09:55

    Hallo,
    Die überschrift ist sehr dürftig, deshalb erklär t ich kurz mal:
    Ich habe eine au3 projekt mit einer _WaitForImageSearch funktion.

    Mit delphi habe ich mir eine GUI gebastelt und möchte dort auch bleiben, da ich hier mehr möglichkeiten habe die daten für autoit vorzubereiten. Mit dieser GUI ehabe kann ich ein paar daten erfassen, diese werden in eine ini datei gespeichert. Wenn man in der gui auf "starten" klickt, dann wird die autoit exe gestartet, welche wiedereum auf die ini zugreift und die daten verarbeitet.

    Wenn ich die autoit exe starte läufts einwandfrei.
    Wenn ich allerdings mit meiner delphi gui die autoit exe starte läuft das script, aber bei _WaitForImageSearch rasselt er für 2 sekunden ($waitsecs) und sagt mir dann mittels msgbox dass kein bild gefunden worden ist, obwohl es offensichtlich da ist. Ein öffnen der auutoit datei mittels call in einer cmd datei klappt auch tadellos.
    In delphi verwende ich den befehl ahellexecute mit der shellapi.


    Kann mir hier jmd weiterhelfen??

  • Controlgettext("") von unbekanntem aber fokussiertem control herausfinden

    • WhiteF
    • 14. September 2013 um 10:28

    ja ok,
    nun bitte ich nur noch um konstruktive Antworten.

    Wobei ich persönlich dann doch immer das ControlClick bevorzuge, da das Script ein Teil weiter unabhängiger ist. Dann können auch User mit div. Bildschirmauflösungen das Script nutzen vorausgesetzt, die DPI stimmt das activeWindow ist gleichbleibend.
    Besser finde ich dann doch die Methode mittels Tabulator von Control/Element zu Control/Element zu springen, da hier Bildschirmauflösung und DPI scheissegal ist aber die TabStops immer gleich bleibend sind; einziges Problem ist wenn die Controls/Elements ihre TabStop Eigenschaften OnTheFly disabled oder weitere Control/Elemente OnTheFly bzw. automatisch hinzugefügt werden.
    Aber ein simples MouseClick ist meines Erachtens immer die Notlösung; aber auch bei mir nicht ausreichend.

    Meine Versuche (nach meinen persönlichen Favoriten sortiert):
    1. ControlClick mit Namen/ID des Buttons - Name des Controls/Element fehlt
    2. Send("{TAB}") - In der VBA UserForm variiert der Anzahl der Textbox, sodass keine Aussage über die Anzahl der TabStops zu treffen ist.
    3. ControlClick mit X-/Y-Koordinaten - Buttonposition variiert, deswegen entfällt eine Bestimmung mit X-/Y-Koordinaten
    4. MouseClick mit X-/Y-Koordinaten - Buttonposition variiert, deswegen entfällt eine Bestimmung mit X-/Y-Koordinaten

  • Controlgettext("") von unbekanntem aber fokussiertem control herausfinden

    • WhiteF
    • 10. September 2013 um 08:07

    Hi, ersttmal danke für deinen beitrag.
    Der gedanke ist in erster linie gut und für das beiliegende projekt ausreichend; jedoch für das eig. Projekt nicht verwendbar, da die position des "ok" buttons variieren kann.

    Viele grüße

  • Controlgettext("") von unbekanntem aber fokussiertem control herausfinden

    • WhiteF
    • 9. September 2013 um 09:28

    Ich würde mich wirklich freuen wenn mir jmd anhand des beiliegenden projekts zeigen kann, wie man dienamen dieser elemente in vba ermittelt bzw anspricht.

  • Controlgettext("") von unbekanntem aber fokussiertem control herausfinden

    • WhiteF
    • 5. September 2013 um 19:35

    hi,
    anbei eine abgespeckte form meines Projekts , da mein eigentliches Projekt firmenbedingt so nicht veröffentlicht werden kann. Das Problem ist aber genauso vorhanden!

    Download Projekt: Test.zip

    VG

  • Controlgettext("") von unbekanntem aber fokussiertem control herausfinden

    • WhiteF
    • 4. September 2013 um 14:03

    Die von methode von BugFix hört sich gut an, habe es ausprobiert, aber funktioniert leider nicht.

    Hat da jmd andere erfahrungen gemacht?

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™