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

Beiträge von Dio

  • Word Dokument drucken

    • Dio
    • 23. Juni 2009 um 15:57

    Ok ich hab das Ganze nochmal von der anderen Seite versucht:

    Spoiler anzeigen
    [autoit]


    ...
    $Text=_RTFCreateDocument($Font)
    $Textblock=_RTFAppendString($Text,_ArrayToString($MonatZSummeArray,""),$FontColour,$Fontsize,$FontStyle,$Font)
    $oFormatErgebnisDatei=_WordCreate("",0,0)
    $FormatErgebnisDatei=_WordDocOpen($oFormatErgebnisDatei,@ScriptDir&"\MonateErgebnisDatei.doc",3)
    if @error Then
    MsgBox(0,"",@error)
    EndIf

    FileWrite($FormatErgebnisDatei,$Textblock)

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

    _WordDocPrint($FormatErgebnisDatei,0,1,0,0,$ListboxText)
    _WordDocClose($FormatErgebnisDatei)

    [/autoit]

    Der Druck klappt so.Jedoch funktioniert das FileWrite() nicht. Das heißt ich drucke jetzt ein leeres Dokument.
    Wie bekomme ich jetzt den formatierten Text da rein?

    Edit: Sorry für den Doppelpost ;)

  • Pixel Search problem

    • Dio
    • 22. Juni 2009 um 16:38

    Die Vergleiche in Zeile 7 müssen == statt = sein. Sonst hält er es für eine Zuweisung.

  • Word Dokument drucken

    • Dio
    • 22. Juni 2009 um 16:15

    Also Du meinst so?

    Spoiler anzeigen
    [autoit]


    ...
    $Text=_RTFCreateDocument($Font)
    $Textblock=_RTFAppendString($Text,_ArrayToString($MonatZSummeArray,""),$FontColour,$Fontsize,$FontStyle,$Font)
    $hFormatErgebnisDatei=FileOpen("MonateErgebnisDatei.doc",1)$FormatErgebnisDatei ab
    FileWriteLine($hFormatErgebnisDatei,$Textblock)
    FileClose($hFormatErgebnisDatei)
    $FormatErgebnisDatei=_WordAttach("MonateErgebnisDatei.doc","FileName")
    if @error Then
    MsgBox(0,"",@error)
    EndIf
    $FormatErgebnisDatei=_WordDocGetCollection($oFormatErgebnisDatei,0)
    ...

    [/autoit]

    Leider immernoch Error 7

  • Word Dokument drucken

    • Dio
    • 22. Juni 2009 um 13:47

    Ja das geht.

  • Word Dokument drucken

    • Dio
    • 22. Juni 2009 um 13:18

    Hallo,

    ich möchte ein Word-Dokument drucken welches zuvor mit FileOpen erstellt wurde.

    [autoit]


    ...
    $Text=_RTFCreateDocument($Font)
    $Textblock=_RTFAppendString($Text,_ArrayToString($MonatZSummeArray,""),$FontColour,$Fontsize,$FontStyle,$Font)
    $hFormatErgebnisDatei=FileOpen("MonateErgebnisDatei.doc",1)
    FileWriteLine($hFormatErgebnisDatei,$Textblock)
    $oFormatErgebnisDatei=_WordAttach("MonateErgebnisDatei.doc","FileName")
    _WordDocPrint($oFormatErgebnisDatei,0,1,-1,1,$ListboxText)
    ...

    [/autoit]

    Ich brauche für _WordDocPrint die Objektvariable des Word-Dokuments. Erstelle ich ein Dokument per _WordCreate funktioniert FileWriteLine nicht mehr.
    Bei dem Quellcode bekomme ich Error 7 (keine Übereinstimmung).

    Was mache ich denn da falsch?


    Gruß Dio

  • Tabstopp in Worddokument setzen

    • Dio
    • 12. Juni 2009 um 16:23

    Hmm, stimmt. Dann kann ich Buchstaben zählen. Danke BugFix, das hilft schonmal weiter.

    Aber genau bestimmen wohin der TAB springen soll kann man nicht, oder?

  • Tabstopp in Worddokument setzen

    • Dio
    • 12. Juni 2009 um 11:53

    Hallo zusammen,
    ich hab ein kleines Schönheitsproblemchen.

    In einem Worddokument sollen eingefügte Strings gleich ausgerichtet.
    Die Strings werden per _ArrayToString aus einem Array rausgeschnibbelt.

    Code
    $Textblock=_RTFAppendString($Text,_ArrayToString($MonatZSummeArray,""),$FontColour,$Fontsize,$FontStyle,$Font) ;formatiert den Text
    FileWriteLine($FormatErgebnisDatei,$Textblock)


    Jedem String ist entweder ein @TAB bzw. @CRLF angehangen, damit eine Art Liste entsteht.
    Also:

    • String 1 @TAB
    • String 2 @CRLF
    • String 3 wieder @TAB


    usw.

    Sieht dann in etwas so aus:

    Code
    Januar      400
    Februar     300
    März    297

    Da März zu wenige Buchstaben hat wird noch auf den ersten Tabstopp gesprungen, anstatt auf den zweiten (wie bei Januar, Februar).

    Die beste Lösung die mir einfällt wäre den Tabstopp festzusetzen, aber ich habe dazu nix gefunden.

    Wie könnte ich das hinbekommen, dass die Ausrichtung passt und auch bei einer variabel verlängerten Liste funktionieren würde?


    Gruß
    Dio

  • Active Desktop maximieren

    • Dio
    • 21. Februar 2009 um 14:15

    Danke für die Antwort.

    Klappt leider nicht ganz. Er packt sich auf jedenfall schon mal den active Desktop.
    Die Position wird richtig verschoben, aber die Größe wird nicht richtig verändert.

    Da es auf einem erweiterten Desktop(rechts vom primären) angezeigt werden soll, hab ich den Code noch etwas angepasst.

    [autoit]

    ControlMove('Program Manager', "", 'Shell Embedding1',1441, 0, 1024, 768)

    [/autoit]

    Warum ändert er die Größe nicht, obwohl er augenscheinlich das richtige Fenster hat.

    [Blockierte Grafik: http://img3.imagebanana.com/img/y1oyzy4/thumb/autoitdesktop.JPG]
    1= erscheinendes Fenster 2=ursprüngliches Fenster

    Führe ich das Skript aus erscheint Fenster 1, aber Fenster 2 bleibt vorhanden. Wenn ich auf Fenster 2 klicke verschwindet Fenster 1 wieder. Mit Fenster 1 reagiert nicht auf Klicks oder ähnliches.

    Gruß Dio

  • Active Desktop maximieren

    • Dio
    • 21. Februar 2009 um 10:48

    Hey,

    vll kam meiner erster Post etwas blöd rüber, weil ich meine bisherigen Lösungsansätze nicht gezeigt hab.

    Also ich hab mit WinSetState & @SW_SHOWMAXIMIZED versucht. Ich denke grundsätzlich könnte das auch das Richtige sein. Problem ist nur das der active Desktop diegleiche Bezeichnung wie der Desktop hat. Mit den erweiterten Fensterinfo's müsste es funktionieren, denn der ActiveDesktop hat Instanz 2 und der Desktop die 1.

    Ich hab's so versucht, doch das klappt nicht.

    [autoit]

    WinSetState("[TITLE:Program Manager;Class:Internet Explorer_Server ;Instance:2]", "", @SW_SHOWMAXIMIZED)

    [/autoit]

    Das zeigt mir das WindowInfoTool zum active Desktop
    [Blockierte Grafik: http://img3.imagebanana.com/img/qwnh5bt/thumb/autoitdesktop.JPG]

    Ich weiß nicht ob ich da komplett falsch rangehe. Der active Desktop wird ja ansich als Desktop behandelt. Können ihn dann die "Win"-Funktionen überhaupt beeinflussen?

  • Active Desktop maximieren

    • Dio
    • 20. Februar 2009 um 13:47

    Sers Leute,

    ich hab ein kleines Problemchen und würde mich freuen wenn Ihr mir dabei helfen könntet.

    Ich habe einen erweiterten Desktop eingerichtet. Auf diesem soll ein active Desktop laufen der eine Internetseite anzeigt.
    Wer es nicht kennt: Der active Desktop ist quasi ein Browserfenster das nicht in der Tasklist angezeigt wird. Rechtsklick auf Desktop --> Desktop --> Customize Desktop --> Reiter "Web"

    Ich möchte ein Skript erstellen was diesen active Desktop auf dem erweiterten Desktop automatisch maximiert! 8|

    Kriegt man sowas hin?

    Gruß Dio

  • Mehrere Usereingaben über InputBox

    • Dio
    • 24. Januar 2009 um 19:56

    Sers zusammen,
    für ein kleines Prog muss der Benutzer 10 Eingaben machen. Leider ist mit einer InputBox nur eine Eingabe möglich. Kann man irgendwie die 10 Eingaben in einem Schwung machen lassen? Also ohne das man 10 InputBoxen benutzen muss.
    Gruß und Dank
    Dio

  • IE Formulare bearbeiten

    • Dio
    • 23. Dezember 2008 um 16:30

    Ok hab das jetzt probiert, leider erfolglos ;(

    aber danke das Ihr mich so gut unterstützt, das ist nicht selbstverständlich... :thumbup:

    Also so sieht mein (Test-)Quelltext aus:

    Spoiler anzeigen
    [autoit]

    #include <IE.au3>
    ;MsgBox(0,"AutoDiscountDeleter","Darauf achten dass:" & @lf & @lf & "- die letzten beiden Häkchen in der Liste (Paystatus 'A' und Grand Total) entfernt sind" & @lf & "- die Markierung in der Maske auf 'Due Date' liegt" & @lf & @lf & "'OK' klicken um zu starten")

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

    $oIE = _IEAttach ("Speed Status - Update Single Pay Item - Microsoft Internet Explorer", "embedded")

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

    ;while WinExists("Speed Status - Update Single Pay Item - Microsoft Internet Explorer")
    $oForm = _IEFormElementGetObjByName($oIE, "taskId", 3)
    _IEFormElementSetValue($oForm, "hier geaendert")
    ;Wend

    [/autoit]


    Das hat das Prog von FunKey (s. o.) ausgespuckt:

    Spoiler anzeigen
    Code
    Form-Index: 0 / Name: 0
    Form: 0 /Element: 0 /Name: divtag
    Form: 0 /Element: 1 /Name: indent
    Form: 0 /Element: 2 /Name: nodeId
    Form: 0 /Element: 3 /Name: paramRole
    Form: 0 /Element: 4 /Name: paramCollapsed
    Form: 0 /Element: 5 /Name: a
    Form-Index: 1 / Name: 0
    Form: 1 /Element: 0 /Name: nodeId
    Form: 1 /Element: 1 /Name: a
    Form-Index: 2 / Name: 0
    Form: 2 /Element: 0 /Name: a
    Form: 2 /Element: 1 /Name: paramRole
    Form-Index: 3 / Name: 0
    Form: 3 /Element: 0 /Name: a
    Form-Index: 4 / Name: 0
    Form: 4 /Element: 0 /Name: taskId
    Form: 4 /Element: 1 /Name: pTaskId
    Form: 4 /Element: 2 /Name: taskView
    Form: 4 /Element: 3 /Name: taskSeqNum
    Form: 4 /Element: 4 /Name: a
    Form-Index: 5 / Name: 0
    Form: 5 /Element: 0 /Name: paramRole
    Form-Index: 6 / Name: Preferences
    Form: 6 /Element: 0 /Name: menuLaunchPreference
    >Exit code: 0	Time: 0.747
    Alles anzeigen

    Das Prog von Funkey musste ich etwas anpassen, das sieht so aus:

    Spoiler anzeigen
    [autoit]

    #include <IE.au3>

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

    $oIE =_IEAttach ("Speed Status - Update Single Pay Item - Microsoft Internet Explorer", "embedded") ;hier Namen des Fensters eintragen
    $oForms = _IEFormGetCollection ($oIE)
    If @error Then
    MsgBox(0, '', 'Keine Formen enthalten')
    Else
    $Index = 0
    For $oForm In $oForms
    ConsoleWrite('Form-Index: ' & $Index & ' / Name: ' & $oForm.Name & @CRLF)
    $oFormElements = _IEFormElementGetCollection($oForm)
    If IsObj($oFormElements) Then
    $IndexElement = 0
    For $oElement In $oFormElements
    ConsoleWrite('Form: ' & $Index & ' /Element: ' & $IndexElement & ' /Name: ' & $oElement.Name & @CRLF)
    $IndexElement += 1
    Next
    EndIf
    $Index += 1
    Next
    EndIf

    [/autoit]

    Also ich hab bei meinen Versuchen immer jeweils einen Formnamen eingefügt und dahinter die Index-Zahl. Hab das Prog gestartet (die entsprechende Seite hat natürlich existiert aber war nicht aktiv).
    Meine Gedanke war, dass in das entsprechende Formularfeld der String "hier geaendert" geschrieben werden sollte. War aber bei keinem einzigsten Formularfeld der Fall - ich hab alle Namen und Indexkombinationen aus der Formliste versucht.

    Ich bin etwas ratlos woran der Fehler liegt. Ob die Liste falsch ist oder mein (Test-)Quelltext? Es wundert mich schon das keiner der Formnamen auch nur im Ansatz ähnlich ist mit den Bezeichnungen der Formularfelder.

  • IE Formulare bearbeiten

    • Dio
    • 22. Dezember 2008 um 17:32

    So, jetzt hab ich's mit _IEAttach versucht und das scheint zu funzten...

    Das kommt raus:

    Spoiler anzeigen
    [autoit]

    Form-Index: 0 / Name: 0
    Form: 0 /Element: 0 /Name: divtag
    Form: 0 /Element: 1 /Name: indent
    Form: 0 /Element: 2 /Name: nodeId
    Form: 0 /Element: 3 /Name: paramRole
    Form: 0 /Element: 4 /Name: paramCollapsed
    Form: 0 /Element: 5 /Name: a
    Form-Index: 1 / Name: 0
    Form: 1 /Element: 0 /Name: nodeId
    Form: 1 /Element: 1 /Name: a
    Form-Index: 2 / Name: 0
    Form: 2 /Element: 0 /Name: a
    Form: 2 /Element: 1 /Name: paramRole
    Form-Index: 3 / Name: 0
    Form: 3 /Element: 0 /Name: a
    Form-Index: 4 / Name: 0
    Form: 4 /Element: 0 /Name: taskId
    Form: 4 /Element: 1 /Name: pTaskId
    Form: 4 /Element: 2 /Name: taskView
    Form: 4 /Element: 3 /Name: taskSeqNum
    Form: 4 /Element: 4 /Name: a
    Form-Index: 5 / Name: 0
    Form: 5 /Element: 0 /Name: paramRole
    Form-Index: 6 / Name: Preferences
    Form: 6 /Element: 0 /Name: menuLaunchPreference

    [/autoit]

    Also ehrlich gesagt kann ich damit nicht so richtig was anfangen, aber werde einfach jedes Feld probieren bis ich das Richtige hab.

    Das mache ich dann mit den Funktionen _IEFormElementGetObjByName und _IEFormElementSetValue, richtig?

  • IE Formulare bearbeiten

    • Dio
    • 17. Dezember 2008 um 16:08

    Ahhh ok, danke!

    Ich hab den Code von Dir mal etwas umgemodelt, weil das Formular nicht direkt aufrufbar ist. Das erscheint erst nach einer Suchanfrage.

    [autoit]

    #include <IE.au3>

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

    $Url = 'http://blablabla.com:7794/jde/E1Menu.maf?envRadioGroup=&jdeowpBackButtonProtect=PROTECTED'
    ;$oIE = _IECreate ($Url)
    WinWaitActive("Speed Status - Update Single Pay Item - Microsoft Internet Explorer")
    $oForms = _IEFormGetCollection ($Url)
    If @error Then
    MsgBox(0, '', 'Keine Formen enthalten')
    Else
    $Index = 0
    For $oForm In $oForms
    ConsoleWrite('Form-Index: ' & $Index & ' / Name: ' & $oForm.Name & @CRLF)
    $oFormElements = _IEFormElementGetCollection($oForm)
    If IsObj($oFormElements) Then
    $IndexElement = 0
    For $oElement In $oFormElements
    ConsoleWrite('Form: ' & $Index & ' /Element: ' & $IndexElement & ' /Name: ' & $oElement.Name & @CRLF)
    $IndexElement += 1
    Next
    EndIf
    $Index += 1
    Next
    EndIf

    [/autoit]

    Also das Prog läuft fehlerfrei durch, aber es kommt die MessageBox. Also er findet keine Forms. Woran kann das denn liegen?
    Ein Formular müsste es sein. Zumindest hat es Eingabefelder bzw. Datenfelder. Ähnlich einer Anzeige mit Informationen über einen Artikel (VK, Lagerort, EK, Anlagedatum usw). Einige Felder sind eben veränderbar und eines dieser will ich finden.

  • IE Formulare bearbeiten

    • Dio
    • 17. Dezember 2008 um 10:00

    Danke für die fixen Antworten! ^^

    Zitat von leviathan


    bzw du kannst auch auf die Forms via Index zugreifen und nur eine Nummer mitgebe

    Ja, hab ich so ähnlich schon gehört, aber ich raff das nicht so recht. Gibt's ein Tut oder FAQ oder so zu diesen Geschichten? Die AutoIT-Hilfe kann mir da nicht wirklich helfen. Sie erklärt wie ich die Funktion anwende, aber nicht wie ich die nötigen Informationen dazu finde (was ja auch ok ist, sonst würde die Hilfe ja jeden Rahmen sprengen).

    Zitat von funkey

    Schreibt die Informationen in die Console von Scite!

    Tja, also wenn ich das ausführe öffnet sich sich der IE und ruft AutoIt.de auf, aber schreiben tut er da nix. Die Console von Scite ?( ... das wo ich den Quelltext reinschreibe nennt sich doch die Console oder?

    Ich hab das Ganze auf Seiten wie arcor.de schon hinbekommen, weil dort die Bezeichnungen klar waren. Dort wo ich es aber tatsächlich anwenden will ist der Quellcode so undurchsichtig das ich nix finde. Kenn mich aber eben mit HTML und so nicht so gut aus das ich genaue erkenne was jetzt ein Formularfeld ist und was nicht.

  • IE Formulare bearbeiten

    • Dio
    • 16. Dezember 2008 um 09:55

    Hallo,

    ich beschäftige mich grad mit Formularen im Internet Explorer.

    Dabei verwende ich Funktionen wie:
    _IEFormGetObjByName
    _IEFormElementGetObjByName

    Ich komme soweit auch klar, mit den Hilfe-Files. Mein größtes Problem ist die Namen der der "Forms" und so weiter herauszufinden. Oft sind diese nicht sehr klar benannt (finde ich).
    Wäre dankbar für ein par Tipps wie ich erkenne welche "Form" für wss zuständig ist, bzw. was ist der name und was die ID.
    So richtig kann ich das noch nicht unterscheiden.

    Gruß
    Dio

  • Anfänger-Key-Skript - Welche Funktion brauch ich?

    • Dio
    • 12. Dezember 2008 um 11:27

    Ok ich werd mir das mal ansehen.

    Aber ich hab's jetzt relativ sicher hinbekommenin dem ich die Delayzeiten stark verkürzt hab.

    Er drückt jetzt die drei Tasten innerhalb von 3 Millisekunden und wartet dann 3 Sekunden. Sollte das Laden des nächsten Datensatzes länger als drei Sekunden dauern, "drückt er zwar die Tasten aber es passiert ja noch nix da ja noch geladen wird. Es wäre schon ein riesiger Zufall wenn exakt innerhalb dieser 3 Milisekunden der Datensatz fertiggeladen wäre und damit falsch bearbeitet würde.

    Ich weiß das ist nicht sonderlich professionell, aber für's erste funzt es :D

    Aber ich werd mir mal die Funktionen ansehen, vll bekomm ich's damit 100%ig hin.

    Danke

  • Anfänger-Key-Skript - Welche Funktion brauch ich?

    • Dio
    • 11. Dezember 2008 um 15:18

    Hallo zusammen, liebe AutoIt-Community,

    ich versuche ein kleines Skript zu erstellen was mir das Bearebiten von Datensätzen auf einem Server erleichtert.

    Ich hab auch schon rumprobiert und so halbwegs funktioniert es auch schon, aber ein Hürde konnte ich noch nicht nehmen.

    In bestimmten Datensätzen soll ein Feld gelöscht werden. Diese Datensätze werden in einer Maske angezeigt. Standartmäßig bin ich - wenn ich die Maske aufrufe - in einem Datumsfeld. Von diesem Feld muss ich per Tab in ein anderes switchen. Diese Feld per Backspace löschen und dann die Änderung per crtl+alt+o bestätigen.

    Durch das Bestätigen wird automatisch zum nächsten Datensatz gewechselt. Dort geht das Ganze von vorne los.

    Bisher sieht das Ganze so aus:

    Code
    WinWaitActive("Speed Status - Update Single Pay Item - Microsoft Internet Explorer")
    $n = 1
    do 
    	if WinActive("Speed Status - Update Single Pay Item - Microsoft Internet Explorer") Then 
    		opt("SendKeyDelay", 500)
    		Send("{tab}{Backspace}^!o")
         	Sleep(5000)
    	Else
    		$n = 0
    	EndIf
    until $n = 0
    Alles anzeigen

    Das Problem ist der Übergang wenn der den nächsten Datensatz lädt. Im Moment überbrücke ich das indem ich einfach 5 Sek Wartezeit hab. Das ist natürlich weder effektiv noch sicher (ich ändere ja evtl falsche Felder in den Datensätzen).
    Sollte mal das laden des nächsten Datensatzes mal länger als 5Sek dauern - kann durchaus vorkommen - springt er einfach in die Schleife. Mit etwas Pech ist der neue Datensatz zum Tab noch nicht da, aber zum Backspace. Somit löscht er das falsche Feld und bestätigt das auch noch.

    Gibt es da eine sicherere Lösun dafür?

    Vielen Dank im Voraus :D

    Grüße
    Dio

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™