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

Beiträge von bernd670

  • Automatisch Downloaden von Rapidshare

    • bernd670
    • 11. Juni 2006 um 11:48

    Hallo und :willkommen:,

    solche Schleifen macht man besten mit TimerInit() und TimerDiff() z.B. so:

    Code
    $i = TimerInit()
    
    
    Do
        ProcessWaitClose("firefox.exe")
    	$PID = ProcessExists("firefox.exe")
    Until $PID = 0 OR TimerDiff($i) > 3600000 ; Differenz > 6 Min.

    eine andere Möglichkeit ist die Verwendung der Funktion Mod() z.B. so:

    Code
    $i = @MIN
    
    
    Do
        ProcessWaitClose("firefox.exe")
    	$PID = ProcessExists("firefox.exe")
    Until $PID = 0 OR @MIN = Mod($i + 6,60)
  • Trillian fernsteuern während Gaming?

    • bernd670
    • 10. Juni 2006 um 12:33

    Das ist eine eigenart von Windows, wenn ein Programm im Fullscreenmodus läuft. Drücke mal, wenn das Spiel aktiv ist Alt+Enter, damit kann man vom Fullscreenmodus in den Fenstermodus und umgekehrt schalten, wenn's unterstützt wird. Danach dürfte das Spiel nicht mehr minimiert werden.

  • Erkennung von Buttons bei einer HP?!

    • bernd670
    • 10. Juni 2006 um 11:40

    Hallo und :willkommen:,

    Wie @Schwester schon geschrieben hat musst du es so schreiben:

    Code
    send("{TAB 18}")
    send("{ENTER}")

    sendet 18 mal die TAB-Taste und dann Enter!

  • Geschlossen: AutoIt-Kalender

    • bernd670
    • 10. Juni 2006 um 10:52

    Hallo,

    Zitat

    Also lange rede Kurzer sinn wie kann ich das mit einer ComboBox machen? also mit einer echten, so wie in outlook? weiß jmd rat?

    Mit einer normalen ComboBox geht das nicht dafür benötigt man die ComboBoxEx. Diese ist aber in AutoIt (noch?) nicht umgesetzt!

    Im englischen Forum habe ich was gefunden. Habs aber nicht getestet ;-).

  • Neuer Absatz bei Editbox

    • bernd670
    • 10. Juni 2006 um 09:06

    Hallo,

    Einen Absatz kannst du mit @CRLF (\r\n in php) erzeugen.

    Mit dem style $ES_READONLY kann der Benutzer die Editbox nicht mehr verändern.

    Beispiel:

    Spoiler anzeigen
    Code
    #include <GUIConstants.au3>
    
    
    $Ausgabe = "Zeile 1" & @CRLF & "Zeile 2" & @CRLF & @CRLF & "Zeile 3" & @CRLF & "Zeile 4" & @CRLF 
    
    
    
    
    GUICreate("EditTest",500,300)
    GUICtrlCreateEdit($Ausgabe,10,10, 300, 200,$ES_READONLY) 
    
    
    GUISetState()
    
    
    While 1
    	$GUIMsg = GUIGetMsg()
    
    	Select 
    		Case $GUIMsg = $GUI_EVENT_CLOSE
    			ExitLoop
    
    	EndSelect
    WEnd
    
    
    Exit
    Alles anzeigen
  • Kein aktives Fenster.. unmöglich?

    • bernd670
    • 9. Juni 2006 um 21:18

    Hallo,

    der Fehler liegt in der For-Schleife, dort hast die 2 If-Abfragen ineinander verschachtelt!

    Original:

    Code
    $Pause = 1
    For $i = 0 to 4
        If $Apple[0][$i] = "×" Then
        Else
            $State = WinGetState($Apple[0][$i])
            If $State = 15 Then $Pause = 0
    
    
    
    
            If $Apple[1][$i] = "×" Then
            Else
                $State = WinGetState($Apple[1][$i])
                If $State = 15 Then $Pause = 0
            EndIf
        EndIf
    Next
    Alles anzeigen

    so gehts (ich habe die If-Abragen etwas umgestellt um unötige Else-Zweige zu vermeiden):

    Code
    $Pause = 1
    For $i = 0 to 4
        If Not ($Apple[0][$i] = "×") Then
            $State = WinGetState($Apple[0][$i])
            If $State = 15 Then $Pause = 0
        EndIf
    
    
        If Not ($Apple[1][$i] = "×") Then
            $State = WinGetState($Apple[1][$i])
            If $State = 15 Then $Pause = 0
        EndIf
    Next
    Alles anzeigen

    Kleiner Tipp: Wenn du den Code mit Tabulatoren etwas strukturierst kann man solche Fehler leichter lokalisieren! ;)

  • Geschlossen: AutoIt-Kalender

    • bernd670
    • 9. Juni 2006 um 10:39

    @gun_food Vorsicht du benutzt die gleiche Variable wie peethebee

    Code
    $gui_mnu_file = GUICtrlCreateMenu("&Datei")
    $gui_mnu_file = GUICreate("Einstellungen", 622, 441, 314, 412)


    Mit GuiGetMsg(1) wird GuiGetMsg in den erweiterten Modus geschalten und gibt als ergebnis ein Array zurück in dem auch die ID des Fensters steht von dem die Msg kommt!

    Zitat

    aus der Hilfe
    Wenn der "advanced"-Parameter verwendet wird, wird die Information in einem Array zurückgegeben:
    $array[0] = 0 oder Ereignis-ID oder Control-ID
    $array[1] = Der Fenster-Handle des Fensters, von dem das Ereignis gemeldet wird
    $array[2] = Der Control-Handle des Steuerelements, von dem das Ereignis gemeldet wird (falls anwendbar)
    $array[3] = Die aktuelle X-Position des Mauszeigers (relativ zum GUI-Fenster)
    $array[4] = Die aktuelle Y-Position des Mauszeigers (relativ zum GUI-Fenster)

    Alles anzeigen

    @1: Das mit GuiGetMsg war :schild4: ich habe Opt("GUIOnEventMode", 1) übersehen!

    Du musst die EventFunktion _close anpassen und abfragen für welches Fenster die Funktion aufgerufen wurde!

  • Berechung von Pi

    • bernd670
    • 9. Juni 2006 um 06:23

    muh_kuh, du solltest, wenn die Pause aktiv ist, der CPU mit dem Befehl Sleep etwas ruhe gönnen. Auch wenn die Berechnung dann nicht mehr läuft verbraucht die While-Schleife immer noch 100%!

    Spoiler anzeigen
    C
    HotKeySet("{ESC}", "MeinExit")
    HotKeySet("{PAUSE}", "Pause")
    #include <GUIConstants.au3>
    GUICreate("PI",550,50)
    GUISetState (@SW_SHOW)
    $X = 0
    $c= GUICtrlCreateInput($X,5,25,540,20)
    $a = 1
    $b = 0
    $pause = 0
    GUICtrlCreateLabel(" ESC = Ende | PAUSE = ruhe bis wieder PAUSE",175,5,275,20)
    
    
    GUISetState()
    While 1
    	if $pause = 0 then 
    		$X = Sqrt(6 *($b))
    		$b = $b + 1/ ($a^2)
    		$a = $a + 1
    		GUICtrlSetData ($c, $X)
    	EndIf
    
        If $pause = 1 Then sleep(50)
    WEnd
    
    
    Func Pause()
    	if $pause = 1 Then
    		$pause = 0
    	elseif $pause =0 Then
    		$pause = 1
    	EndIf
    
    EndFunc 
    
    
    Func MeinExit()
    	GUIDelete()
        Exit 
    EndFunc 
    
    
    Exit
    Alles anzeigen
  • Geschlossen: AutoIt-Kalender

    • bernd670
    • 8. Juni 2006 um 15:26

    Hi,

    ich habe ne kleine Anmerkung zu:

    Zitat

    Ich würde die Angaben mit Kommata trennen, dann wäre man mittels StringSplit schnell an den einzelnen Daten dran. Außerdem wäre der Excel-Export sehr einfach, da die Datei ja schon CSV wäre.

    Ich würde nicht das Komma nehmen zum trennen weil das auch bestimmt in der Beschreibung Verwendung findet, nehmt lieber den Backslash oder das Pipe-Zeichen! ;)

    Ansonsten finde ich das Projekt eine gute Idee und stehe euch bei Problemen wie immer gerne zur Verfügung.

  • Subscript used with non-Array variable

    • bernd670
    • 8. Juni 2006 um 11:20

    war heut morgen noch etwas früh! ;)

  • Subscript used with non-Array variable

    • bernd670
    • 8. Juni 2006 um 10:30

    kannst du mal das komplette aktualisierte Scrpit einstellen, dann schau ich nochmal drüber!

  • [Frage] Script zum Emails abrufen

    • bernd670
    • 8. Juni 2006 um 09:28

    Hallo und :willkommen:,

    trage doch einfach im Browser die URL ein die beim drücken auf "Neue Emails"
    aufgerufen wird! Die wird normal in der Adresszeile angezeigt wenn du auf den Button drückst!

    @1: Die meisten Provider bieten auch eine Möglichkeit an mit Pop3 Emails auf dem Server abzuholen!

  • Subscript used with non-Array variable

    • bernd670
    • 8. Juni 2006 um 05:41

    Hallo,

    der Fehler kommt wahrscheinlich daher das in der Liste ($List4) noch Section drinnen stehen die es nciht mehr gibt! Ändere mal die Funktion _BackupList so ab das die Liste immer erst geleert wird bevor die neuen Einträge eingetragen werden:

    Code
    Func _BackupList()
            GUICtrlSetData($List4, "")
    	$var = IniReadSectionNames(@ScriptDir & "\outlk_key.ini")
    	If @error Then 
    		MsgBox(4096, "Achtung!", "Keine gesicherten Einträge vorhanden.")
    	Else
    		For $i = 1 To $var[0]
    			GUICtrlSetData($List4, $var[$i])
    		Next
    	EndIf
    EndFunc
    Alles anzeigen

    vllt solltest du auch noch eine Meldung in _RestoreKeyFromBackupINI() ausgeben wenn die Section nicht existiert!

    Code
    Func _RestoreKeyFromBackupINI()
        $INISection = IniReadSection(@ScriptDir & "\outlk_key.ini", $EntryRestore)
        If UBound($INISection,0) <> 2 Then
            MsgBox(4096, "Achtung!", "Section " & $EntryRestore & " existiert nicht!.")
        Else
            For $i = 1 To $INISection[0][0]        
                $StrSplit = StringSplit($INISection[$i][1],";")
                RegWrite($RegKey&$EntryRestore, $INISection[$i][0], $StrSplit[2], $StrSplit[1])
            Next
        EndIf
    EndFunc
    Alles anzeigen
  • Zum lesen

    • bernd670
    • 7. Juni 2006 um 23:19

    Was ich auch jedem empfehlen kann, der sie noch nicht kennt, sind die "Barstard" Seiten! Da geht es um einen Admin an einer Uni der den Usern das Leben zur Hölle macht. ;)

    Es gibt halt überall schwarze Schafe!!

  • Berechung von Pi

    • bernd670
    • 7. Juni 2006 um 21:48

    Vieleicht ist ihm zu kalt ;) und er möchte die Heizung nicht einschalten :rofl:

  • Typ Registryeintrag ?

    • bernd670
    • 7. Juni 2006 um 21:15

    Hallo,

    so wie aussieht nutzt du ja eh die beta von AutoIt dort kann man die Eintragstypen mit @extended ermitteln z.B. so:

    Spoiler anzeigen
    Code
    Func _GetKeyToBackupINI()
    Dim $RegTypes[8]
    $RegTypes[1] = "REG_SZ"
    $RegTypes[2] = "REG_EXPAND_SZ"
    $RegTypes[3] = "REG_BINARY"
    $RegTypes[4] = "REG_DWORD"
    $RegTypes[5] = ""
    $RegTypes[6] = ""
    $RegTypes[7] = "REG_MULTI_SZ"
    
    
    Dim $i = 0
    Dim $Wert, $val, $Fehler = 0
    	Do
    		$i+ = 1
    		$Wert = RegEnumVal($RegKey&$EntryDel, $i)
    		$Fehler = @Error
    		If $Fehler = 0 Then
    			$val = RegRead($RegKey&$EntryDel, $Wert)
    			IniWrite ( @ScriptDir & "\outlk_key.ini", $EntryDel, $Wert, $val & ";" & $RegTypes[@extended] )
    		EndIf
    	Until $Fehler <> 0
    EndFunc
    Alles anzeigen

    Die Schlüssel und die Werte aus der Ini-Datei kannst du mit der Funktion IniReadSection ermitteln! ;)

    Das zurückschreiben sollte dann so gehen:

    Spoiler anzeigen
    Code
    Func _SetBackupINIToKey()
        $INISection = IniReadSection("\outlk_key.ini", "TEST")
        For $i = 1 To $INISection[0][0]
            $StrSplit = StringSplit($INISection[$i][1],";")
            RegWrite($RegKey, $INISection[$i][0], $StrSplit[2], $StrSplit[1])
        Next
    EndFunc

    ohne gewähr ;)

  • Berechung von Pi

    • bernd670
    • 7. Juni 2006 um 18:36

    Hallo,

    Zitat

    AutoIt passt seine Geschwindigkeit beim durchlaufen an die Systemgeschwindigkeit an.
    100% sind nur für einen kurzen Augenblick drin dann läuft es langsamer.

    Das kommt durch die Funktion GuiGetMsg() die sorgt dafür das auch andere Programme mal zum Zuge kommen. Einfach die Zeilen auskommentieren und die CPU läuft auf 100%. Das Programm kann dann nur noch über das TrayIcon oder den Taskmanager beendet werden!


    Code
    #include <GUIConstants.au3>
    GUICreate("PI",800,50)
    GUISetState (@SW_SHOW)
    $X = 0
    $c = GUICtrlCreateLabel($X,5,20,790,20)
    $a = 1
    $b = 0
    
    
    GUISetState()
    While 1
    ;~ $msg = GUIGetMsg()
    ;~ If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    $X = Sqrt(6 *($b))
    $b = $b + 1/ ($a^2)
    $a = $a + 1
    GUICtrlSetData($c,$X)
    WEnd
    Alles anzeigen
  • 2 Monitore parallel betreiben

    • bernd670
    • 7. Juni 2006 um 10:39

    Hi,

    du kannst auch einfach den Monitor 1 mit der Maus auf die rechte Seite von Monitor 2 ziehen (siehe Bild)!

    Dann bei Monitor 2 "Dieses Gerät als primären Monitor verwenden" anuswählen und die Startleiste einfach mit der Maus auf den gewünschten Monitor ziehen!

    @Info: Das häkchen bei "Dieses Gerät als primären Monitor verwenden" legt nur den Monitor fest auf dem die Programm, wenn sie sich die Positon beim schliessen nicht merken, geöffnet werden.

  • dllcall - pointer

    • bernd670
    • 6. Juni 2006 um 19:10

    das erzeugen, befüllen und Zeiger generieren geht so (benötigt beta):

    Code
    ; Structur erzeugen und befüllen
    $buf = DllStructCreate("char[64]")
    DllStructSetData($buf, 1, 0x22, 1) ; buf[0]
    DllStructSetData($buf, 1, 0x0f, 2) ; buf[1]
    DllStructSetData($buf, 1, 0x61, 3) ; buf[2]
    DllStructSetData($buf, 1, 0x08, 4) ; buf[3]
    DllStructSetData($buf, 1, 0x01, 5) ; buf[4]
    for $index = 6 to 16
        DllStructSetData($buf, 1, 0x00, $index) ; buf[5] - buf[15]
    Next
    DllStructSetData($buf, 1, 0x51, 17) ; buf[16]
    
    
    ; Pointer auf Stuctur
    $pbuf = DllStructGetPtr($buf)
    Alles anzeigen
  • GUISetState und @SW_HIDE

    • bernd670
    • 6. Juni 2006 um 14:05

    Hallo,

    du musst den WinHandle übergeben nicht den Fenstertitel:

    Spoiler anzeigen
    Code
    #include <GUIConstants.au3>
    
    
    $Form1 = GUICreate("Hauptfenster", 200, 100, -1, -1)
    $Button1 = GUICtrlCreateButton("Öffne Unterfenster", 50, 40, 100, 30)
    GUISetState(@SW_SHOW)
    $Form2 = GUICreate("Unterfenster; style = $WS_CLIPCHILDREN", 400, 200, @DesktopWidth/2 +50, -1, $WS_CLIPCHILDREN)
    $Button2 = GUICtrlCreateButton("Zurück zum Hauptfenster", 130, 80, 140, 30)
    
    
    While 1
    	$msg = GuiGetMsg()
    	Select
    	Case $msg = $GUI_EVENT_CLOSE
    		ExitLoop
    	Case $msg = $Button1
    		GUISetState(@SW_HIDE, $Form1)
    		GUISetState(@SW_SHOW, $Form2)
    	Case $msg = $Button2
    		GUISetState(@SW_SHOW, $Form1)		
    		GUISetState(@SW_HIDE, $Form2)
    	EndSelect
    WEnd
    Exit
    Alles anzeigen

    Wenn der zweite Parameter ungültig ist, passiert das gleiche als wenn kein 2. Parameter angebeben wurde, GUISetState bezieht sich dann immer auf das letzte mit GUICreate erstellte Fenster.

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™