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

  • Nur sichtbares aus Edit auslesen

    • BugFix
    • 15. Juli 2007 um 11:17

    Verstehe ich nicht, wenn es nur eine Zeile ist, dann ist dies doch der gesamte Inhalt des Edits - also: GUICtrlRead($Edit).

    Oder ist das Editfeld so schmal, dass du nur die Hälfte der Zeile siehst, und du möchtest diesen Teil auslesen?

  • Nur sichtbares aus Edit auslesen

    • BugFix
    • 15. Juli 2007 um 10:58

    Also, du kannst die erste sichtbare Zeile ermitteln ( _GUICtrlEditGetFirstVisibleLine( ) ). Allerdings habe ich im Moment keine Idee, wie du die letzte sichtbare Zeile feststellen kannst, evtl. berechnen aus der Höhe des Editbereichs ( _GUICtrlEditGetRECT( ) ) und Schrifthöhe.

    Alternativ, den gewünschten Bereich markieren. Mit _GUICtrlEditGetSel( ) erhältst du dann Start-und Endposition des markierten Bereiches.

  • MSGBOX von externem Programm auslesen

    • BugFix
    • 14. Juli 2007 um 19:10

    Sag mal, wieso eigentlich WinActivate() ?
    Du willst doch wissen ob das Fenster aktiv ist, also WinActive().
    Oder liege ich da falsch?

  • MSGBOX von externem Programm auslesen

    • BugFix
    • 14. Juli 2007 um 18:11
    [autoit]

    $text = WinGetText($Title [,Text])

    [/autoit]

    $Title ist bei dir aber: "Microsoft Business Solutions-Navision", also:

    [autoit]

    $text = WinGetText("Microsoft Business Solutions-Navision")

    [/autoit]
  • 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.

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™