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

Beiträge von Oscar

  • Wie / Wo werden Funktionsaufrufe gespeichert? Kann man diesen "Speicher" löschen?

    • Oscar
    • 1. Dezember 2008 um 18:03

    Das ist auch so einfach, wenn man erstmal aufgehört hat in GOTO-Dimensionen zu denken. GOTOs sind (zum Glück) nicht in AutoIt enthalten. Die führen nur zu "unlesbaren" Code.
    Mit den Schleifenbefehlen (While...WEnd, Do...Until und For...Next) kann man alle GOTOs vergessen.
    Funktionen hingegen, sind Unterprogramme (Routinen), die beim erreichen von EndFunc, von allein beendet werden oder mit Return vorzeitig (z.B. innerhalb einer If...Then-Anweisung) beendet werden können.
    Wenn man eine bestimmte Funktion innerhalb dieser Funktion wieder aufruft, so nennt man das Rekursion. Dafür gibt es durchaus Anwendungsmöglichkeiten, aber man muss auf die Abbruchbedingungen achten, sonst wird die max. Rekursionstiefe erreicht und das Script wird mit einer Fehlermeldung beendet. Als GOTO-Ersatz darf das aber nicht verwendet werden.

  • Wie / Wo werden Funktionsaufrufe gespeichert? Kann man diesen "Speicher" löschen?

    • Oscar
    • 1. Dezember 2008 um 17:32

    Benutze einfach ineinander verschachtelte Schleifen:

    Spoiler anzeigen
    [autoit]


    start()
    Func start()
    Local $i
    While 2
    ;Anweisungen wie z.B. Seitenanwahl etc.
    $inaktiv = TimerInit()
    While (1)
    ;send(Passwort)
    ;send(ENTER)
    $inaktiv_diff = TimerDiff($inaktiv)
    If $inaktiv_diff > 50000 Then ExitLoop
    WEnd
    WEnd
    EndFunc ;==>start

    [/autoit]
  • TrayIcon Hilfe

    • Oscar
    • 1. Dezember 2008 um 16:52

    Entscheidend ist TraySetClick().
    Damit entscheidest Du mit welche(r/n) Maustaste(n) Du das normale Traymenü aufrufen willst. Den Event kannst Du aber trotzdem von beiden Tasten abfragen (siehe TrayGetMsg) und entsprechend reagieren.

  • Wie / Wo werden Funktionsaufrufe gespeichert? Kann man diesen "Speicher" löschen?

    • Oscar
    • 1. Dezember 2008 um 16:46

    Eine Funktion ist kein Ersatz für GOTO!
    Dafür gibt es Schleifen-Befehle. Zeig mal Dein Script, dann können wir Dir leichter helfen.

  • TrayIcon Hilfe

    • Oscar
    • 1. Dezember 2008 um 16:43

    Ich denke mal, Du meinst sowas:

    Spoiler anzeigen
    [autoit]


    #include<GUIConstantsEx.au3>
    #include <Constants.au3>
    #NoTrayIcon

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

    Opt("TrayMenuMode", 1) ; Default tray menu items (Script Paused/Exit) will not be shown.
    $hGui = GUICreate('test')

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

    $settingsitem = TrayCreateMenu("Settings")
    $displayitem = TrayCreateItem("Display", $settingsitem)
    $printeritem = TrayCreateItem("Printer", $settingsitem)
    TrayCreateItem("")
    $aboutitem = TrayCreateItem("About")
    TrayCreateItem("")
    $exititem = TrayCreateItem("Exit")
    TraySetClick(8)
    TraySetState()

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

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    Switch TrayGetMsg()
    Case $TRAY_EVENT_PRIMARYDOWN
    GUISetState(@SW_SHOW)
    Case $aboutitem
    MsgBox(64, "About:", "AutoIt3-Tray-sample")
    Case $exititem
    Exit
    EndSwitch
    WEnd

    [/autoit]
  • Fenster an einer bestimmten Position öffnen

    • Oscar
    • 1. Dezember 2008 um 16:25

    Herzlich willkommen hier im Forum.
    Wenn Du eine Frage hast, dann erstelle ruhig einen neuen Thread. Einen alten Thread zu verwenden ist nicht so sinnvoll.

    Hier mal ein Beispielscript (2 Notpads öffnen und nach links oben sowie recht oben verschieben):

    [autoit]


    ShellExecute('notepad.exe')
    ShellExecute('notepad.exe')
    WinWait('Unbenannt')
    WinWait('Unbenannt')
    $aList = WinList("Unbenannt -", "")
    WinMove($aList[1][1], '', 0, 0, 480, 320)
    WinMove($aList[2][1], '', @DesktopWidth-480, 0, 480, 320)

    [/autoit]
  • taste gedrückt halten

    • Oscar
    • 1. Dezember 2008 um 04:01

    Sorry, dass ich diesen alten Thread nochmal ausgrabe. ;)

    Aber ich habe gerade eine bessere Variante für den "Filmstreifen" erstellt. Dazu braucht man folgendes:

    AutoIt-Script

    Spoiler anzeigen
    [autoit]


    #include<IE.au3>
    #include<GUIConstantsEx.au3>
    #include<WindowsConstants.au3>

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

    HotKeySet('{Esc}', '_End')
    $oIE = _IECreateEmbedded()
    $hGUI1 = GUICreate('', 248, 619, -1, -1, $WS_POPUP, $WS_EX_TRANSPARENT)
    GUICtrlCreateObj($oIE, 0, 0, 248, 619)
    _IENavigate($oIE, @ScriptDir & '\filmstreifen.html')
    GUISetState()

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

    While True
    Sleep(20)
    WEnd

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

    Func _End()
    Exit
    EndFunc

    [/autoit]

    HTML-Seite

    Spoiler anzeigen
    HTML
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    	<head>
    		<title>filmstreifen</title>
    		<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
    		<style type="text/css">
    			body { 
    			margin-left:0px; 
    			margin-right:0px; 
    			margin-top:0px; 
    			margin-bottom:0px;
    			background-image:url(filmstreifen.jpg);
    			}
    			div { 
    			margin-left:28px; 
    			margin-right:28px; 
    			margin-top:0px; 
    			margin-bottom:0px;
    			font-family:Times;
    			font-size:24px;
    			color:#ffcc66;
    			text-align:center;
    			}
    		</style>
    	</head>
    	<body scroll="no">
    		<marquee height="619" width="248" direction="up" scrolldelay="25" behavior="scroll">
    		<div>
    			Beta 1.6.1.8 (2007-06-09)
    			2007-06-08 - Added: Resizing property to remain controls
    			2007-06-07 - Added: context menu for toolbar with "Customize" command (calling options)
    			2007-06-07 - Fixed: negative values for ListView column width (thanks kanumi)
    			2007-05-31 - Fixed: save button state (thanks martin)
    			2007-05-31 - Changed: redone many parts of code in picture selector
    			2007-05-31 - Added: ability to have custom path for pictures/icons
    			2007-05-30 - Added: picture open dialog filters revised, translation added
    			2007-05-30 - Fixed: Button icon genearation (thanks pixels75)
    			2007-05-30 - Fixed: Icon genearation icon index (now with -)
    			<p>&nbsp;</p>
    			Beta 1.6.1.8 (2007-05-30)
    			2007-05-30 - Added: Undo functionality
    			2007-05-24 - Added: initial support for projects (unfinished yet) 
    			2007-05-23 - Added: forget ContextMenu for tab
    			2007-05-22 - Changed: remove accelerators from Toolbar customizing lists
    			2007-05-22 - Added: Koda understand relative paths to forms in the scripts in the #Region directive 
    			2007-05-10 - Fixed: BS_LEFTTEXT style replaced with equal BS_RIGHTBUTTON, that referenced in include (thanks Fox2)
    			2007-05-10 - Changed: redone component palette on TB2k (in order context help work, internal)
    			2007-05-09 - Fixed: chanaged forgotten parts, related to fully qualified names
    			2007-05-09 - Changed: removed "ShowHint" property, this is give nothing but messing
    			2007-05-09 - Added: extended custom formatting to form too
    			2007-05-08 - Added: implemented HTML Help help system (big thanks EulerG for help)
    		</div>
    		</marquee>
    	</body>
    </html>
    Alles anzeigen

    und das Hintergrundbild. Alles zusammen gibt es als ZIP-Archiv im Anhang.

  • Thread-Watcher - [ v1.0.3 & Updater]

    • Oscar
    • 30. November 2008 um 19:08

    Hab noch was: ;)

    Das hier:

    [autoit]

    _IECreate($temp_read)

    [/autoit]

    würde ich lieber in das ändern:

    [autoit]

    ShellExecute($temp_read)

    [/autoit]

    Ja, ich bin Firefox-User. :)

  • kleins prob. mit GUI

    • Oscar
    • 30. November 2008 um 18:54

    Ja! Hier mal die geänderte HTML-Datei:

    Spoiler anzeigen
    HTML
    <html>
    <head>
    <title>lauftext</title>
    <style type="text/css">
    	body { margin-left:0px; margin-right:0px; margin-top:0px; margin-bottom:0px }
    </style>
    </head>
    
    
    <body bgcolor="#d8e4f8">
    <MARQUEE height="94" width="195" direction="up" scrolldelay="200" behavior="scroll" bgcolor="#d8e4f8">
    <font color="#" size="1" face="Arial, Helvetica, sans-serif ">
    <center>
    <b>About-window</b><br><br>
    done by<br><br>
    <b>karroffel</b><br><br>
    <br>
    123<br>
    <br>
    456<br>
    789<br>
    <br>
    abcdefghijklmnopqrstuvwxyz<br>
    <br>
    (c) by karroffel, 2008<br>
    <br>
    </center>
    </font>
    </MARQUEE>
    </body>
    </html>
    Alles anzeigen
  • Popup Menü auf Listvieweintrag

    • Oscar
    • 30. November 2008 um 18:32

    Dann verstehe ich aber den Sinn von Dim nicht mehr, wenn alles außerhalb einer Funktion sowieso als global angesehen wird.
    Ich bin auch der Meinung, dass das in irgendeiner älteren AutoIt-Version noch nicht so war... :huh:

  • _MultiFileCopy

    • Oscar
    • 30. November 2008 um 18:15

    Die Abfrage geschieht etwas "ungewöhnlich", weil man in der Callback-Routine keine Messages abfragen kann. Deshalb gibt es dort:

    [autoit]


    If _IsPressed('01', Int($aSplit[12])) And ($pos[4] = Int($aSplit[7])) Then Return 1

    [/autoit]
  • Popup Menü auf Listvieweintrag

    • Oscar
    • 30. November 2008 um 18:04
    Zitat von ari


    Man kann in der Func auf die Variable bzw. deren Inhalt zugreifen.

    [autoit]

    AutoItSetOption("MustDeclareVars", 1)

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

    Local $sTest = "Das ist ein Test"

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

    _TestFunc()

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

    Func _TestFunc()
    MsgBox(4096, "nix", $sTest)
    EndFunc

    [/autoit]

    Äh?! Das funktioniert ja tatsächlich! Seit wann geht das denn? Das ist doch ein Bug! :wacko:

  • Variable einer Website auslesen

    • Oscar
    • 30. November 2008 um 00:55

    _StringBetween gibt ein Array zurück:

    [autoit]


    $string = _INetGetSource("http://127.0.0.1/planets")
    $wert =_StringBetween($string,">Wert: ","<br>Aktionspunkte ")
    If IsArray($wert) Then MsgBox(0, "", $wert[0])

    [/autoit]

    Edit: Und _InetGetSource nicht in Anführungsstriche.

  • 2 GUIs modal zueinander öffnen

    • Oscar
    • 30. November 2008 um 00:44

    Wenn das zweite GUI-Fenster geöffnet ist, einfach GUISetState(@SW_DISABLE, $GUI1) ausführen.

  • Mehrere Infos aus einer Ini datei rauslesen

    • Oscar
    • 30. November 2008 um 00:39

    Das kommt darauf an, was für Daten Du speichern und wie Du sie organisieren möchtest.
    Schreib doch mal ein paar Beispieldaten. Dann kann man besser eine Empfehlung geben.


    Edit: Drei Antworten (nahezu zeitgleich) und das nach nur 4 Minuten. Wir sind gut heute! :)

  • Variable einer Website auslesen

    • Oscar
    • 30. November 2008 um 00:16

    Schau Dir mal _InetGetSource und _StringBetween an. Damit solltest Du das hinkriegen. :)

  • Skript zum Auslesen der Inhalte eines Verzeichnisses und Weitergabe in eine Textdatei

    • Oscar
    • 30. November 2008 um 00:10

    @Onkel-tom: Mir ging es vor allem um die letzten Zahlen (vor dem .mp3). Wenn die max. 2stellig sind, dann funktioniert das untenstehende Script.

    @Xeno: Kannst Du Dir mal den zweiten Teil des Scripts ansehen? Das ist irgendwie merkwürdig (siehe Kommentare) oder ich habe da etwas nicht verstanden...

    Spoiler anzeigen
    [autoit]


    #include<Array.au3>
    #Include <File.au3>
    ; Testdaten

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

    ;~ For $i = 1 To 20
    ;~ FileWrite(FileOpen(@ScriptDir & '\F--_Title_01_Chapter ' & $i & '.mp3', 1), '')
    ;~ Next

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

    $FileList = _FileListToArray(@ScriptDir, '*.mp3', 1)
    If IsArray($FileList) Then
    For $i = 1 To $FileList[0]
    $Replace = StringRegExp($FileList[$i], '(\D)(\d\.mp3)', 3)
    If IsArray($Replace) Then $FileList[$i] = StringRegExpReplace($FileList[$i], '\D\d\.mp3', $Replace[0] & '0' & $Replace[1])
    Next
    _ArraySort($FileList)
    _ArrayDisplay($FileList)
    _FileWriteFromArray(@ScriptDir & '\MP3-List.txt', $FileList)
    EndIf

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

    ; Das Folgende funktioniert komischerweise nicht!
    ; Der Anfang des Replacestring '$10$2$3' wird als $10 interpretiert, obwohl es lt. Hilfe nur $0...$9 geben sollte.
    ; Tatsächlich beginnen die Back-References aber mit $1
    ; Wie kann man das aber schreiben, wenn zwischen Back-Reference $1 und $2 eine Null eingefügt werden soll?
    $FileList = _FileListToArray(@ScriptDir, '*.mp3', 1)
    If IsArray($FileList) Then
    For $i = 1 To $FileList[0]
    $FileList[$i] = StringRegExpReplace($FileList[$i], '(\D)(\d)(\.mp3)', '$10$2$3')
    Next
    _ArraySort($FileList)
    _ArrayDisplay($FileList)
    _FileWriteFromArray(@ScriptDir & '\MP3-List.txt', $FileList)
    EndIf

    [/autoit]
  • Ideen

    • Oscar
    • 29. November 2008 um 22:05
    Zitat von r1fLeX

    Aber mein Chef ist gleichzeitig mein Vater der soll nicht wissen das ich programmiere.

    Programmieren = Böse oder wie? :huh::S

  • Ideen

    • Oscar
    • 29. November 2008 um 21:45

    @r1fLeX: Ich denke, Du hast nicht die richtige Motivation. Besonders den Vorschlag von Raupi finde ich äußerst passend. Dort besitzt Du doch bereits das nötige Hintergrundwissen (oder kannst es Dir aneignen, was zugleich der Ausbildung dienlich wäre). Und wer das spätere Programm dann benutzt, kann Dir doch eigentlich egal sein. Hauptsache ist doch, dass Du das Problem in ein Programm umgesetzt hast. Das sollte Deine Motivation sein: Ich habe es geschafft!
    BTW: Mit so einem Programm könntest Du doch Deinen Ausbilder beeindrucken. Macht sich immer gut, wenn sich ein Auszubildender auch "privat" mit der Materie beschäftigt.

  • _FileListToArray bei FTP Server

    • Oscar
    • 29. November 2008 um 21:35

    Wenn das ein FTP-Server ist, den Du selbst betreibst, kannst Du Dir eine Dateiliste als Textdatei auf den Server packen und diese dann (vom Client) mit InetGet holen und auswerten.

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™