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

Beiträge von BugFix

  • MSGBOX von externem Programm auslesen

    • BugFix
    • 14. Juli 2007 um 17:20

    Der Fehler: Es wurde kein String selektiert - $array ist leer.

    [autoit]

    #include <String.au3>
    #include <array.au3>

    $text =("In Debitor D10000 fehlt die E-Mail-Adresse"); die quelle $text ist der ist-zustand, also kein anderer input vorhanden
    $array = StringRegExp($text, "(?i)Debitor(.*?)(?i)fehlt",1)
    If IsArray($array) Then
    MsgBox(64,"",$array[0])
    Else
    MsgBox(0, '', "Array leer!")
    EndIf

    [/autoit]

    Probier malo dieses Pattern, bei mir klappt es damit:

    [autoit]

    $array = StringRegExp($text, "((?<=Debitor )(.*?)(?= fehlt))",1)

    [/autoit]
  • URLs aus .txt Datei downloaden

    • BugFix
    • 14. Juli 2007 um 14:49
    [autoit]

    #include <File.au3>
    Dim $arLinks
    _FileReadToArray("Pfad-Link-Datei", $arLinks)
    For $i = 1 To $arLinks[0]
    ; Download $arLinks[$i]
    Next

    [/autoit]
  • SATA-Problem

    • BugFix
    • 14. Juli 2007 um 13:43

    Ok, werd ich mal testen.
    Vorher probier ich allerdings ob ich in den abgesicherten Modus komme. Vielleicht läßt sich von dort nachträglich der Treiber installieren.

  • SATA-Problem

    • BugFix
    • 14. Juli 2007 um 12:07

    Hi,
    ich will einen PC ausrangieren, hab schon 'nen neuen und dieser ist mit SATA-Platten bestückt.
    Der alte hat IDE-Platte mit Win2K. Die kommt aber nicht mit in den neuen PC da sowieso zu klein, hab sie aber auf eine SATA-Platte geklont.
    Nun sind aber dort noch keine SATA-Treiber drauf und Windows kann somit nicht starten.
    Hat jemand 'ne Idee, wie ich die Treiber da jetzt einbinden kann?
    (Neuinstallation fällt eigentlich flach, da auf der Platte Lizenzinformationen zu einigen Programmen 'eingegraben' sind in Root und MBR. Die Infos gehen beim Klonen nicht verloren aber bei erneuter Installation ist alles futsch. :( )

  • 2 Fenster Verschieben

    • BugFix
    • 14. Juli 2007 um 00:28

    Hab grad bemerkt, dass Sleep(0) auch schon gewaltig bremst :D
    Baue es mal ans Ende der For-Schleife ein. Das reduziert die Geschwindigkeit drastisch.

  • 2 Fenster Verschieben

    • BugFix
    • 13. Juli 2007 um 22:55

    Oops, schon im Papierkorb. Aber ich machs nochmal.

    Edit: So, hier die 2-Fenster-Variante.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    Dim $x1 = 0, $y1 = 0, $x2 = @DesktopWidth-200, $y2 = @DesktopHeight-200
    Dim $w1 = 400, $h1 = 400, $w2 = 200, $h2 = 200
    $Wnd1 = GUICreate("Top Window", $w1, $h1, $x1, $y1)
    $Wnd2 = GUICreate("Bottom Window", $w2, $h2, $x2, $y2)
    GUISetState(@SW_SHOW, $Wnd1)
    GUISetState(@SW_SHOW, $Wnd2)

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

    $x1_way = @DesktopWidth-200
    $y1_step = (@DesktopHeight-200)/$x1_way
    $size_step = 200/$x1_way

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

    $x2_way = @DesktopWidth-200
    $x2_start = $x2_way

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

    For $x1 = 0 To @DesktopWidth-200
    $y1 += $y1_step
    $w1 -= $size_step
    $h1 -= $size_step
    WinMove($Wnd1,'', $x1, Int($y1), Int($w1), Int($h1))
    $y2 -= $y1_step
    $x2 = $x2_start-$x1
    WinMove($Wnd2,'', $x2, Int($y2), Int($w1), Int($h1))
    Next

    [/autoit]

    Edit2: Und hier eine Variante, in der ein Fenster wächst und das andere schrumpft.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    Dim $x1 = 0, $y1 = 0, $x2 = @DesktopWidth-200, $y2 = @DesktopHeight-200
    Dim $w1 = 400, $h1 = 400, $w2 = 200, $h2 = 200
    $Wnd1 = GUICreate("Top Window", $w1, $h1, $x1, $y1)
    $Wnd2 = GUICreate("Bottom Window", $w2, $h2, $x2, $y2)
    GUISetState(@SW_SHOW, $Wnd1)
    GUISetState(@SW_SHOW, $Wnd2)

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

    $x1_way = @DesktopWidth-200
    $y1_step = (@DesktopHeight-200)/$x1_way
    $size_step = 200/$x1_way
    $y2_step = $y1_step

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

    For $x1 = 0 To @DesktopWidth-200
    $y1 += $y1_step
    $w1 -= $size_step
    $h1 -= $size_step
    WinMove($Wnd1,'', $x1, Int($y1), Int($w1), Int($h1))
    $pos = WinGetPos($Wnd2)
    $y2 -= $pos[1]/((@DesktopWidth-200)-$x1)
    $x2 -= $pos[0]/((@DesktopWidth-200)-$x1)
    $w2 += $size_step
    $h2 += $size_step
    WinMove($Wnd2,'', Int($x2), Int($y2), Int($w2), Int($h2))
    Next

    [/autoit]
  • 2 Fenster Verschieben

    • BugFix
    • 13. Juli 2007 um 21:32

    Sollte trotzdem gehen:
    Fenster1 - 1 Schritt diagonal
    Fenster2 - 1 Schritt diagonal usw. immer abwechselnd.

    Die Geschwindigkeit sollte groß genug sein, wenn du zwischen den Schritten kein Sleep einbaust.

    Hier mal ein Beispiel für ein Fenster. Brauchst jetzt nur entgegengesetzt für das andere Fenster im Wechsel laufen lassen.
    Hab mal ein Sleep eingebaut, zum besseren Angucken. ;)

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    Dim $x1 = 0, $y1 = 0
    Dim $w1 = 400, $h1 = 400
    $Wnd1 = GUICreate("Top Window", $w1, $h1, $x1, $y1)
    GUISetState(@SW_SHOW, $Wnd1)

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

    $x1_way = @DesktopWidth-200
    $y1_step = (@DesktopHeight-200)/$x1_way
    $size_step = 200/$x1_way

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

    For $x1 = 0 To @DesktopWidth-200
    $y1 += $y1_step
    $w1 -= $size_step
    $h1 -= $size_step
    WinMove($Wnd1,'', $x1, Int($y1), Int($w1), Int($h1))
    Sleep(5)
    Next

    [/autoit]

    EDIT: Habs grade mit 2 Fenstern probiert, wird zu langsam. Evtl. zum schnelleren Ausführen erst alle Parameter für jeden Schritt berechnen und in einem Array ablegen.

  • 2 Fenster Verschieben

    • BugFix
    • 13. Juli 2007 um 21:20

    Ja, sollte nicht zu schwierig werden.
    Ähnlich wie ich es in meiner _SlideWindow() Funktion gemacht habe. Nur zusätzlich die Parameter für Fenstergröße berücksichtigen.

  • eigene UDF erstellen

    • BugFix
    • 13. Juli 2007 um 19:57

    Also farbig läßt sich die UDF durch SciTE wohl nicht so ohne weiteres darstellen.

    Aber UserCalltips kannst du selber erstellen:

    In der Datei "...\Scite\api\au3.user.calltips.api" sind die entsprechenden Einträge für deine eigenen Calltips vorzunehmen. Falls die Datei noch nicht existiert - erstellen.

    Die Einträge werden wie folgt vorgenommen:

    Code
    _Array2DEmptyDel(Array[, Lösche Zeile=0/Spalte=1]); #include ArrayMore.au3
    _Array2DSplit(Quell-Array, Ziel-Array, SplitIndex [, Anzahl Elemente auslagern]); #include ArrayMore.au3
    _Array2DInsert(Array, EinfügeIndex [, Wert]); #include ArrayMore.au3
  • ADS Gruppen per Autoit

    • BugFix
    • 13. Juli 2007 um 18:18

    Probier mal hiermit, mußt aber deine Werte noch eintragen.

    Spoiler anzeigen
    [autoit]


    $objOU = ObjGet("LDAP://OU=management,dc=fabrikam,dc=com")

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

    $objUser = $objOU.Create("User", "cn=MyerKen")
    $objUser.Put "sAMAccountName", "myerken"
    $objUser.SetInfo

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

    $objGroup = $objOU.Create("Group", "cn=atl-users")
    $objGroup.Put "sAMAccountName", "atl-users"
    $objGroup.SetInfo

    $objGroup.Add $objUser.ADSPath

    [/autoit]
  • Eigene Funktionen zu ..\Include per Hardlink

    • BugFix
    • 13. Juli 2007 um 14:28

    Hi,
    wenn ihr UDF's nutzt und ihr möchtet sie im Include-Verzeichnis zur Verfügung haben, hat dies den Nachteil, dass bei Installation einer neuen Version von AutoIt auch der Include-Ordner überschrieben wird und somit eure Kopie futsch ist.
    Außerdem sind bei einer kopierten Datei Änderungen im Original nicht in der Kopie sichtbar. Ihr müßtet also dann in der Kopie auch ändern.

    Tipp:
    Einen Hardlink zur UDF ins Include-Verzeichnis erstellen.
    Ein Hardlink ist ein weiterer Verweis auf ein und dieselbe physikalische Datei.
    Es wird also nur einmal Speicher verwendet, die Datei kann unter Original- und Linknamen angesprochen und verändert werden.

    Was ist zu beachten?
    - funktioniert nur bei NTFS-Dateisystem
    - man sollte (mit Nicht-Microsoft-Programmen) nur das Original bearbeiten - warum? - einige Programme löschen vor dem Speichervorgang die Ausgangsdatei und erstellen sie dann neu. Passiert das mit der Link-Datei, wird der Hardlink aufgehoben und die Datei als eigenständige Datei erstellt.
    - bei Verlinkung von Dateien müssen Quelle und Ziel auf einem Volume sein (nur Verlinkung von Ordnern erlaubt Crossover)
    - zum Setzen des Links sind Adminrechte notwendig

    Hier mein Skript dafür (Auswahl der Datei mit FileOpenDialog), Voraussetzung AutoIt in Standardinstallation (sonst Pfad anpassen):

    Spoiler anzeigen
    [autoit]

    ; Adminrechte ?
    If ( Not IsAdmin() ) Then
    MsgBox(262160, '', 'Zum Ausführen des Programms sind Administratorrechte erforderlich!')
    Exit
    EndIf
    ; Dateisystem ist NTFS ?
    Dim $wbemFlagReturnImmediately = 0x10, $wbemFlagForwardOnly = 0x20, $colItems = "", $strComputer = "localhost"
    Dim $Output="", $Out2 = ''
    $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_LogicalDisk", "WQL", _
    $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

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

    If IsObj($colItems) then
    For $objItem In $colItems
    If $objItem.Description = 'Lokale Festplatte' Then
    If $objItem.FileSystem <> 'NTFS' Then
    $Output = $Output & "DeviceID: " & $objItem.DeviceID & @CRLF
    $Output = $Output & "FileSystem: " & $objItem.FileSystem & @CRLF & @CRLF
    EndIf
    EndIf
    Next
    If $Output <> "" Then
    If MsgBox(262436, 'Dateisystem falsch', 'Folgende Festplatte(n) sind nicht im "NTFS-Format"' & @LF & _
    'und somit kann kein Hardlink auf ihnen erzeugt werden:' & @LF & @LF & $Output & @LF & @LF & _
    'Wenn die für den Hardlink gewünschte Festplatte nicht aufgezählt wurde,' & @LF & _
    'können Sie fortsetzen.' & @LF & _
    'Möchten Sie fortsetzen?') = 7 Then Exit
    EndIf
    Else
    Msgbox(0,"WMI Output","No WMI Objects Found for class: " & "Win32_LogicalDisk" )
    Exit
    Endif
    ; Daten für Hardlink
    Dim $Include = RegRead("HKLM\SOFTWARE\AutoIt v3\AutoIt", "InstallDir") & "\Include\"
    Dim $Source, $ret
    Do
    $Source = FileOpenDialog("Datei für Hard-Link", @ScriptDir, "AutoIt Dateien (*.au3)")
    If $Source = '' Then _
    $ret = MsgBox(262436, 'Auswahlfehler', 'Es wurde keine Datei ausgewählt!' & @LF & _
    'Möchten Sie erneut wählen?')
    Until $ret = 7 Or $Source <> ''
    If $Source = '' Then Exit
    Dim $File = StringRight($Source, StringLen($Source)-StringInStr($Source, '\', 1, -1))
    If @error Then
    MsgBox(0, '', $Source & @LF & 'enthält keinen gültigen Pfad/Dateinamen!')
    Exit
    EndIf
    ; Hardlink erstellen
    If FileCreateNTFSLink($Source, $Include & $File) = 1 Then
    MsgBox(262208, '', 'Der Hardlink' & @LF & @LF & $Include & $File & @LF & @LF & 'wurde erfolgreich angelegt.')
    Else
    MsgBox(262160, '', 'Der Hardlink' & @LF & @LF & $Include & $File & @LF & @LF & 'konnte nicht angelegt werden.')
    EndIf

    [/autoit]


    Der eigentliche Code (Pfad-/Dateiauswahl, Link anlegen) sind nur 3 Zeilen. Der Rest ist Error Handling. :D

  • zum OK-Button springen

    • BugFix
    • 13. Juli 2007 um 11:51

    Auf jeden Fall ControlClick().

    Aber wieso kannst du dich im Fenster nicht mit Tatstatur bewegen? -- Jaja - die NurMausGeneration :D

    Falls es mal mit ControlClick() nicht geht, dann per Tastaturbefehl:

    von Register zu Register:
    Strg+Tab (zurück Strg+Umsch+Tab)

    Elemente auf Register:
    Umsch+Tab

  • leere zeilen in txt löschen

    • BugFix
    • 12. Juli 2007 um 19:49

    Wenn dir bekannt ist, welche Zeile leer ist:

    [autoit]

    #include <File.au3>
    _FileWriteToLine ( $sFile, $ZeilenNummer, "", 1 )

    [/autoit]

    Damit wird die Zeile gelöscht.

    Alternativ, wie oben schon angeführt, einlesen in Array. Dann mit meiner Funktion:
    _Array2DEmptyDelete()
    alle leeren Einträge löschen. Anschließend mit _FileWriteFromArray() zurückschreiben.

  • MSGBOX von externem Programm auslesen

    • BugFix
    • 12. Juli 2007 um 10:45

    Wenn der Ausgabetext sich nur in der Debitor-Nr ändert kannst du auch _StringBetween verwenden.

    [autoit]

    #include <String.au3>
    $text = WinGetText("Titel")
    $suchbegriff = _StringBetween($text, 'Debitor ', ' fehlt', 1)
    If IsArray($suchbegriff) Then MsgBox(0, 'gefunden', $suchbegriff[0])

    [/autoit]
  • Brauche Hilfe mit Script

    • BugFix
    • 11. Juli 2007 um 23:01

    Links oben ist x=0, y=0
    Also nach rechts und nach unten steigen die Werte an.

  • Brauche Hilfe mit Script

    • BugFix
    • 11. Juli 2007 um 22:57

    MouseClick("right",$coord[0]+/-$wert,$coord[1]+/-$wert)

    Einfach gewünschte Pixelzahl addieren/subtrahieren von der gefundenen Position.

  • String (Zeit) bearbeiten

    • BugFix
    • 11. Juli 2007 um 21:35

    Anderer Gedanke - warum die Stringlänge prüfen?
    - Minuten bleiben immer 2-stellig
    - also ändert sich nur die Position von ':'

    [autoit]

    Global $str[3] = ['4:32', '10:01', '1:01']

    For $i = 0 To UBound($str) - 1
    If StringInStr($str[$i], ':') = 2 Then
    ConsoleWrite('0' & $str[$i] & @CRLF)
    Else
    ConsoleWrite($str[$i] & @CRLF)
    EndIf
    Next

    [/autoit]
  • _Array2DSplit

    • BugFix
    • 11. Juli 2007 um 21:08

    Zitat aus meiner Funktionsbeschreibung:

    Zitat

    Die Variable für Ziel-Array muß auch als Array deklariert werden.

    Also muß dein Code so aussehen:

    [autoit]


    Dim $XML, $XML2[1] ; tatsächliche Größe paßt die Funktion an
    _FileReadToArray("E:\test.xml", $XML)
    _Array2DSplit($XML, $XML2, 3)
    _ArrayDisplay($XML)
    _ArrayDisplay($XML2)

    [/autoit]
  • Script in Scite geht, die EXE nicht ?!?!

    • BugFix
    • 10. Juli 2007 um 08:03

    Du mußt alle deine Includes am Skriptanfang schreiben.
    If Bedingung Then #include geht nach dem Kompilieren definitiv nicht. - Woher sollen dann die #includes bezogen werden??

  • Slide Window

    • BugFix
    • 8. Juli 2007 um 14:11

    Nicht dass ihr denkt, ich erstelle nur Array-Funktionen :D

    Mit _SlideWindow($hWnd, [$iDirection=1 [, $Left=-1 [, $Top=-1 [, $Speed=2000]]]]) könnt ihr Fenster von/ nach allen 4 Seiten hereingleiten/ herausgleiten lassen.
    Die Geschwindigkeit ist allerdings sehr rechnerspezifisch, da die Bewegung Pixel für Pixel stattfindet, ist der Zeitfaktor für den Schleifendurchlauf je nach zurückzulegendem Weg recht groß.
    Erst bei sehr großen Werten (> 15000) entspricht dieser Wert etwa der Einblend/Ausblenddauer.
    $iDirection ist der Richtungsvektor:
    1 bis 4 von (rechts-unten-links-oben) - reingleiten
    -1 bis -4 nach (rechts-unten-links-oben) - rausgleiten
    $Left, $Top : Zielposition
    $Speed :Gleitgeschwindigkeit (sehr individuell)

    Wenn kein Fenstername/handle oder ein nicht existierender übergeben wird, wird die Funktion das aktive Fenster verwenden.

    EDIT:
    Habe das ganze jetzt noch um die Diagonalen erweitert.
    Der Richtungsvektor sieht jetzt so aus:

    Code
    8	4	5
    
    
    3		1
    
    
    7	2	6

    Hier mal ein Bsp. zum Testen:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    Opt("GUIOnEventMode", 1)
    $Main = GUICreate("Main Window", 700, 60, (@DesktopWidth-700)/2, 30)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Ende")
    GUICtrlCreateLabel("Left, Top:", 20, 23, 50, 17)
    $inX = GUICtrlCreateInput("-1", 80, 20, 40,20)
    $inY = GUICtrlCreateInput("-1", 130, 20, 40,20)
    $btn = GUICtrlCreateButton("Slide In/Out", 600, 20, 80, 20)
    GUICtrlSetOnEvent(-1, "_slide")
    GUICtrlCreateLabel("Richtung (OUT: -1 bis -4 / IN: 1 bis 4):", 180, 23, 200, 17)
    $inDir = GUICtrlCreateInput("1", 370, 20, 40, 20)
    GUICtrlCreateLabel("Speed:", 415, 23, 35, 17)
    $inTime = GUICtrlCreateInput(2000, 455, 20, 40, 20)
    GUICtrlCreateLabel("benötigte Zeit:", 515, 8, 70, 17, $SS_CENTER)
    $usedTime = GUICtrlCreateLabel("", 515, 30, 70, 17, $SS_CENTER)
    GUICtrlSetColor(-1, 0xFF0000)

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

    $Child = GUICreate("Slide Window", 400, 300, -1, -1)

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

    GUISetState(@SW_SHOW, $Main)
    While 1
    Sleep(100)
    WEnd

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

    Func _Ende()
    Exit
    EndFunc

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

    Func _slide()
    Local $x = GUICtrlRead($inX), $y = GUICtrlRead($inY)
    If GUICtrlRead($inDir) < 0 Then
    WinMove($Child, '', (@DesktopWidth-400)/2, (@DesktopHeight-300)/2)
    GUISetState(@SW_SHOW, $Child)
    Sleep(1000)
    Else
    GUISetState(@SW_SHOW, $Child)
    EndIf
    $begin = TimerInit()
    _SlideWindow($Child, GUICtrlRead($inDir), $x , $y, GUICtrlRead($inTime) )
    GUICtrlSetData($usedTime, Int(TimerDiff($begin)) & ' ms')
    Sleep(1000)
    GUISetState(@SW_HIDE, $Child)
    EndFunc

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

    ;-----------------------------------------------------------------------------------------------------------------------
    ; Function _SlideWindow($hWnd, [$iDirection=1 [, $Left=-1 [, $Top=-1 [, $Speed=2000]]]])
    ;
    ; Description slide a window in/out from/to right/bottom/left/top in a given time
    ;
    ; Parameter $hWnd window -id
    ; $iDirection direction to slide in / out
    ; right: 1 / -1 top-right: 5 / -5
    ; bottom: 2 / -2 bot.-right: 6 / -6
    ; left: 3 / -3 bot.-left: 7 / -7
    ; top: 4 / -4 top-left: 8 / -8
    ; $Left window left position, default -1 (center)
    ; $Top window top position, default -1 (center)
    ; $Speed default 2000, used time in relationship to hardware, minimum=0
    ;
    ; Note Don't work with minimized windows. Works with hidden windows.
    ; If $hWnd does'nt exist, the active window will be used
    ;
    ; Author BugFix ([email='bugfix@autoit.de'][/email])
    ;-----------------------------------------------------------------------------------------------------------------------Func _SlideWindow($hWnd, $iDirection=1, $Left=-1, $Top=-1, $Speed=2000)
    Local $pos = WinGetPos($hWnd)
    Local $startX, $endX, $startY, $endY, $tpp, $x, $y
    If $Top = -1 Then $Top = (@DesktopHeight-$pos[3])/2
    If $Left = -1 Then $Left = (@DesktopWidth-$pos[2])/2
    If ( Not IsNumber($Speed) ) Or ( $Speed < 0 ) Then $Speed=2000
    If ($iDirection < -8) Or ($iDirection = 0) Or ($iDirection > 8) Then $iDirection = 1
    Switch $iDirection
    Case 1
    $startX = @DesktopWidth
    $endX = $Left
    $tpp = Int($Speed/($startX-$Left))
    For $i = $startX To $endX Step -1
    WinMove($hWnd, '', $i, $Top)
    Sleep($tpp)
    Next
    Case 2
    $startY = @DesktopHeight
    $endY = $Top
    $tpp = Int($Speed/($startY-$Top))
    For $i = $startY To $endY Step -1
    WinMove($hWnd, '', $Left, $i)
    Sleep($tpp)
    Next
    Case 3
    $startX = 0-$pos[2]
    $endX = $Left
    $tpp = Int($Speed/($Left+$pos[2]))
    For $i = $startX To $endX Step 1
    WinMove($hWnd, '', $i, $Top)
    Sleep($tpp)
    Next
    Case 4
    $startY = 0-$pos[3]
    $endY = $Top
    $tpp = Int($Speed/($Top+$pos[3]))
    For $i = $startY To $endY Step 1
    WinMove($hWnd, '', $Left, $i)
    Sleep($tpp)
    Next
    Case 5
    $startX = @DesktopWidth
    $startY = 0-($pos[3]/2)
    $endX = $Left
    $endY = $Top
    $absX = $startX-$endX
    $absY = $endY-$startY
    $weg = Sqrt($absX^2 + $absY^2)
    $tpp = Int($Speed/$weg)
    $stepY = $absY/$absX
    For $i = $startX To $endX Step -1
    WinMove($hWnd, '', $i, Int($startY))
    Sleep($tpp)
    $startY += $stepY
    Next
    Case 6
    $startX = @DesktopWidth
    $startY = @DesktopHeight-($pos[3]/2)
    $endX = $Left
    $endY = $Top
    $absX = $startX-$endX
    $absY = $endY-$startY
    $weg = Sqrt($absX^2 + $absY^2)
    $tpp = Int($Speed/$weg)
    $stepY = $absY/$absX
    For $i = $startX To $endX Step -1
    WinMove($hWnd, '', $i, Int($startY))
    Sleep($tpp)
    $startY += $stepY
    Next
    Case 7
    $startX = 0-($pos[2])
    $startY = @DesktopHeight-($pos[3]/2)
    $endX = $Left
    $endY = $Top
    $absX = $endX+Abs($startX)
    $absY = $endY-$startY
    $weg = Sqrt($absX^2 + $absY^2)
    $tpp = Int($Speed/$weg)
    $stepY = $absY/$absX
    For $i = $startX To $endX Step 1
    WinMove($hWnd, '', $i, Int($startY))
    Sleep($tpp)
    $startY += $stepY
    Next
    Case 8
    $startX = 0-($pos[2])
    $startY = 0-($pos[3]/2)
    $endX = $Left
    $endY = $Top
    $absX = $endX-$startX
    $absY = $endY+Abs($startY)
    $weg = Sqrt($absX^2 + $absY^2)
    $tpp = Int($Speed/$weg)
    $stepY = $absY/$absX
    For $i = $startX To $endX Step 1
    WinMove($hWnd, '', $i, $startY)
    Sleep($tpp)
    $startY += $stepY
    Next
    Case -1
    $startX = $pos[0]
    $tpp = Int($Speed/(@DesktopWidth-$startX))
    For $i = $startX To @DesktopWidth Step 1
    WinMove($hWnd, '', $i, $Top)
    Sleep($tpp)
    Next
    Case -2
    $startY = $pos[1]
    $tpp = Int($Speed/(@DesktopHeight-$startY))
    For $i = $startY To @DesktopHeight Step 1
    WinMove($hWnd, '', $Left, $i)
    Sleep($tpp)
    Next
    Case -3
    $startX = $pos[0]
    $startY = $pos[1]
    $endX = 0-$pos[2]
    $tpp = Int($Speed/($pos[2]+$startX))
    For $i = $startX To $endX Step -1
    WinMove($hWnd, '', $i, $Top)
    Sleep($tpp)
    Next
    Case -4
    $startX = $pos[0]
    $startY = $pos[1]
    $endY = 0-$pos[3]
    $tpp = Int($Speed/($pos[3]+$startY))
    For $i = $startY To $endY Step -1
    WinMove($hWnd, '', $Left, $i)
    Sleep($tpp)
    Next
    Case -5
    $startX = $pos[0]
    $startY = $pos[1]
    $endX = @DesktopWidth
    $endY = 0-$pos[3]/2
    $absX = $endX-$startX
    $absY = $startY+Abs($endY)
    $weg = Sqrt($absX^2 + $absY^2)
    $tpp = Int($Speed/$weg)
    $stepY = $absY/$absX
    For $i = $startX To $endX Step 1
    WinMove($hWnd, '', $i, Int($startY))
    Sleep($tpp)
    $startY -= $stepY
    Next
    Case -6
    $startX = $pos[0]
    $startY = $pos[1]
    $endX = @DesktopWidth
    $endY = @DesktopHeight-($pos[3]/2)
    $absX = $endX-$startX
    $absY = $endY-$startY
    $weg = Sqrt($absX^2 + $absY^2)
    $tpp = Int($Speed/$weg)
    $stepY = $absY/$absX
    For $i = $startX To $endX Step 1
    WinMove($hWnd, '', $i, Int($startY))
    Sleep($tpp)
    $startY += $stepY
    Next
    Case -7
    $startX = $pos[0]
    $startY = $pos[1]
    $endX = 0-$pos[2]
    $endY = @DesktopHeight-($pos[3]/2)
    $absX = $startX+Abs($endX)
    $absY = $endY-$startY
    $weg = Sqrt($absX^2 + $absY^2)
    $tpp = Int($Speed/$weg)
    $stepY = $absY/$absX
    For $i = $startX To $endX Step -1
    WinMove($hWnd, '', $i, Int($startY))
    Sleep($tpp)
    $startY += $stepY
    Next
    Case -8
    $startX = $pos[0]
    $startY = $pos[1]
    $endX = 0-$pos[2]
    $endY = 0-$pos[3]/2
    $absX = $startX+Abs($endX)
    $absY = $startY+Abs($endY)
    $weg = Sqrt($absX^2 + $absY^2)
    $tpp = Int($Speed/$weg)
    $stepY = $absY/$absX
    For $i = $startX To $endX Step -1
    WinMove($hWnd, '', $i, Int($startY))
    Sleep($tpp)
    $startY -= $stepY
    Next
    EndSwitch
    EndFunc ;==>_SlideWindow

    [/autoit]

    Dateien

    _SlideWindow.au3 6,15 kB – 265 Downloads

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™