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

  • bestehenden Prozess aktivieren ohne Window-Informationen?

    • Oscar
    • 29. November 2009 um 13:34

    Habe ich das richtig verstanden? Du willst ein Fenster anhand des Prozessnamens aktivieren (in den Vordergrund holen)?

    Dann vielleicht so:

    Spoiler anzeigen
    [autoit]


    _WinActivateByProcessName('firefox.exe')
    ToolTip('ok')
    Sleep(2000)
    Exit

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

    Func _WinActivateByProcessName($sProcessName)
    Local $aProcessList, $aWinList
    $aProcessList = ProcessList($sProcessName)
    If @error Then Return
    $aWinList = WinList()
    If $aWinList[0][0] = 0 Then Return
    For $i = 1 To $aWinList[0][0]
    For $j = 1 To $aProcessList[0][0]
    If WinGetProcess($aWinList[$i][1]) = $aProcessList[$j][1] Then
    WinActivate($aWinList[$i][1])
    Return ; diese Zeile weglassen, dann werden alle Fenster des Prozesses nach vorne geholt
    EndIf
    Next
    Next
    EndFunc

    [/autoit]
  • Combobox Input ändern

    • Oscar
    • 29. November 2009 um 12:23

    Ist zwar eigentlich schon gelöst, aber hier mal meine Variante:

    Spoiler anzeigen
    [autoit]


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

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

    #Region ### START Koda GUI section ### Form=
    $Form = GUICreate("Test", 162, 69, 327, 241)
    GUISetBkColor(0xFFFFFF)
    $Combo1 = GUICtrlCreateCombo("", 8, 8, 145, 25, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL))
    $Button1 = GUICtrlCreateButton("Save", 108, 36, 43, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    $sTmp = IniRead(@ScriptDir & "\Test.ini", "Settings", "Combo", "Test 1|Test 2|Test 3")
    $edit = StringMid($sTmp, StringInStr($sTmp, "|", 0, -1) + 1)
    GUICtrlSetData($Combo1, $sTmp, $edit)
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $Combo1
    $edit = GUICtrlRead($Combo1)
    ;~ ToolTip(GUICtrlRead($Combo1))
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    $new = GUICtrlRead($Combo1)
    If $new = "" Then
    GUICtrlSetData($Combo1, $edit)
    Else
    $sTmp = StringReplace($sTmp, $edit, $new)
    GUICtrlSetData($Combo1, "")
    GUICtrlSetData($Combo1, $sTmp, $new)
    IniWrite(@ScriptDir & "\Test.ini", "Settings", "Combo", $sTmp)
    EndIf
    EndSwitch
    WEnd

    [/autoit]


    Da kann man direkt in der Combobox den Eintrag ändern und speichern.

  • Doppelgeburtstag

    • Oscar
    • 28. November 2009 um 04:35

    Moin moin, BugFix und Der_Doc!

    Euch beiden wünsche ich eine schöne Geburtstagsfeier und alles Gute im neuen Lebensjahr. Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

  • Zeichenkette auseinander nehmen und Teile davon wieder zusammensetzen

    • Oscar
    • 27. November 2009 um 16:06

    Und noch eine Lösung:

    [autoit]


    $string = 'Location=Netzwerk,A4A,CN=Max Mustermann03/OU=xxx/OU=yyy/O=zzz'
    $out = StringRegExpReplace($string, '.+CN=(.+)OU=(.+)OU=(.+)O=(.+)', '$1$2$3$4')
    MsgBox(0, 0, $out)

    [/autoit]
  • Sobald eine Farbe in einem bestimmten Feld vorkommt soll das ganze Skript von vorne beginnen.

    • Oscar
    • 27. November 2009 um 04:35

    Sieht irgendwie sehr nach Bot aus. Bitte Forenregeln beachten!

  • Ausgabe in eine TXT

    • Oscar
    • 27. November 2009 um 04:29

    Die Funktion an sich kann man auch noch verkürzen/schneller machen:

    Spoiler anzeigen
    [autoit]


    $x = FileOpenDialog("Select a file.", @DesktopDir, "Text Files (*.txt)", 3)
    $String = "Deutschland"

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

    $Var = _FileFindString($x, $String)
    For $xx = 0 To 2
    MsgBox(0, "", $Var[$xx])
    Next
    FileWriteLine("_Found_file.txt",$var[2]) ;die letzte messagebox in ein file schreiben

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

    Func _FileFindString($sPath, $sString)
    Local $_Found
    Local $_LineNumber
    Local $_TimesFound = 0

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

    $_FileRead = FileRead($sPath)
    $_Split = StringSplit($_FileRead, Chr(10))
    ;~ $_Split = StringSplit($_FileRead, @CRLF, 1) ; evtl. so, wenn das Zeilenende nicht nur aus @LF besteht.

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

    For $_i = 1 To $_Split[0]
    If StringInStr($_Split[$_i], $sString) Then
    $_Found &= $_Split[$_i] & @CRLF
    $_LineNumber &= $_i & @CRLF
    $_TimesFound += 1
    EndIf
    Next

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

    If $_Found <> "" Then
    Local $_Return[3] = [$_LineNumber, $_TimesFound, $_Found]
    Return $_Return
    Else
    Return 0
    EndIf
    EndFunc

    [/autoit]


    Wenn Du die Datei sowieso schon komplett einliest, brauchst Du sie anschließend nicht nochmal Zeile für Zeile einlesen. Einfach den gesplitteten Inhalt benutzen. :)

  • Geburtstag von Raupi

    • Oscar
    • 26. November 2009 um 18:53

    Na, fast hätten wir den Geburtstag von Raupi vergessen, bei dem ganzen Trubel mit den Server-Problemen.

    Alles Gute zu Deinem heutigen Geburtstag, Raupi.
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

  • Pixel in cm?

    • Oscar
    • 25. November 2009 um 20:36

    Du lernst wirklich schnell. :thumbup:
    Eine kleine Änderung an Deinem Script und das Flackern verschwindet:

    Spoiler anzeigen
    [autoit]


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

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

    Global $c = 0, $old = 0
    GUICreate("Mouse Meter", 300, 20, 852, 0, $WS_POPUPWINDOW, BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW))
    $Label1 = GUICtrlCreateLabel('Die Maus hat bisher 0 Zentimeter zurückgelegt!', 0, 0, 300, 20)
    $dpi = _GetLogPixels()

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

    Func _GetLogPixels()
    Local $LogPixels
    Local $objWMIService = ObjGet('winmgmts:\\localhost\root\CIMV2')
    Local $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_DisplayConfiguration', 'WQL', 0x30)
    If IsObj($colItems) Then
    For $objItem In $colItems
    $LogPixels = $objItem.LogPixels
    Next
    Return $LogPixels
    EndIf
    Return SetError(1, 0, 0)
    EndFunc ;==>_GetLogPixels
    GUISetState(@SW_SHOW)
    AdlibEnable("MouseUpdate", 10)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    AdlibDisable()
    Exit
    EndSwitch
    WEnd

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

    Func MouseUpdate()
    $pos = MouseGetPos()
    $x1 = $pos[0]
    $y1 = $pos[1]
    Sleep(10)
    $pos2 = MouseGetPos()
    $x2 = $pos2[0]
    $y2 = $pos2[1]
    $a = Sqrt(($x2 - $x1) ^ 2 + ($y2 - $y1) ^ 2)
    $b = Round($a, 0)
    $c = $c + $b
    If $c = $old Then Return
    $old = $c
    $cm = Round($c / $dpi * 2.54, 0)
    GUICtrlSetData($Label1, "Die Maus hat ungefähr " & $cm & " Zentimeter zurückgelegt!")
    EndFunc ;==>MouseUpdate

    [/autoit]
  • +++AutoIT Offiziele Site schon länger Offline +++

    • Oscar
    • 24. November 2009 um 20:19

    Die habe ich am 22.11. gedownloadet. Gleich als einer (AFAIR UEZ) hier in der Shoutbox geschrieben hat, dass es eine neue Beta-Version gibt.

  • +++AutoIT Offiziele Site schon länger Offline +++

    • Oscar
    • 24. November 2009 um 20:02

    Ich habe beide Archive (Stable und Beta) noch auf meiner Festplatte gehabt.
    Für die Zeit, in der autoitscript.com offline ist, stelle ich die Downloads mal auf meiner Homepage zur Verfügung.

    Edit: SciTE4AutoIt3 hinzugefügt.
    Edit2: Hat sich erledigt! https://autoit.de/www.autoitscript.com ist wieder online.

  • Aus deaktiviertem Programm Textinhalte lesen!!!

    • Oscar
    • 24. November 2009 um 19:11

    Was, bitteschön, soll das denn werden?

  • Pixel in cm?

    • Oscar
    • 24. November 2009 um 19:04

    Dazu hatte ich mal eine Funktion geschrieben:

    Spoiler anzeigen
    [autoit]


    $dpi = _GetLogPixels()
    MsgBox(0, '', 'Monitorgröße (ca.): ' & Round(@DesktopWidth / ($dpi / 2.54), 2) & ' x ' & Round(@DesktopHeight / ($dpi / 2.54), 2) & ' cm²')

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

    Func _GetLogPixels()
    Local $LogPixels
    Local $objWMIService = ObjGet('winmgmts:\\localhost\root\CIMV2')
    Local $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_DisplayConfiguration', 'WQL', 0x30)
    If IsObj($colItems) then
    For $objItem In $colItems
    $LogPixels = $objItem.LogPixels
    Next
    Return $LogPixels
    Endif
    Return SetError(1, 0, 0)
    EndFunc

    [/autoit]

    Edit: Ach herrje, was bin ich heute wieder langsam... :whistling:

  • c#(break:) in autoit?

    • Oscar
    • 24. November 2009 um 16:00

    Wenn sich das gesamte Switch...EndSwitch in einer Schleife (egal ob Do, While oder For) befindet, kannst Du mit ExitLoop die Schleife verlassen.
    Das wäre der Workaround den Calypso meint.

  • Variable Funktionen!?

    • Oscar
    • 24. November 2009 um 15:50

    $b[k] wird doch beim erstellen der Buttons als Name eingesetzt. Dann kannst Du in der Funktion mit GUICtrlRead(@GUI_CtrlId) den Inhalt wieder auslesen.
    Oder habe ich das jetzt falsch verstanden?

  • c#(break:) in autoit?

    • Oscar
    • 24. November 2009 um 15:41

    So einen Befehl gibt es auch nicht.
    Du könntest Dir mit ContinueCase behelfen. Der hat allerdings den Nachteil, dass das folgende Case ohne überprüfung abgearbeitet wird.
    Wenn (wie in Deinem Beispiel) danach aber sowieso nichts mehr kommt, dann klappt das.

  • Variable Funktionen!?

    • Oscar
    • 24. November 2009 um 14:23

    Tut mir leid, aber mit diesen "Puzzleteilen" kann ich nichts anfangen. Das ergibt für mich kein Bild (mal abgesehen davon, dass sich da schon Ungereimheiten drin befinden).

    Also entweder postest Du Dein gesamtes Script oder Du reduzierst das Problem auf ein nachvollziehbares Teilstück.

  • Variable Funktionen!?

    • Oscar
    • 24. November 2009 um 09:43

    Hier mal ein Beispiel:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    Opt('GUIOnEventMode', 1)

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

    $hGui = GUICreate('Treeview', 400, 300)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End')
    $hTreeView = GUICtrlCreateTreeView(10, 10, 240, 280)
    $hDummy = GUICtrlCreateDummy()
    Dim $hItem[18]
    For $j = 0 To 12 Step 6
    $hItem[$j] = GUICtrlCreateTreeViewItem('root' & $j, $hTreeView)
    GUICtrlSetOnEvent(-1, '_TreeviewClick')
    For $i = 1 To 5
    $hItem[$j + $i] = GUICtrlCreateTreeViewItem('test' & $i, $hItem[$j])
    GUICtrlSetOnEvent(-1, '_TreeviewClick')
    Next
    Next
    GUISetState()

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

    While True
    Sleep(1000)
    WEnd

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

    Func _End()
    Exit
    EndFunc

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

    Func _TreeviewClick()
    Local $iItem, $sText
    $iItem = @GUI_CtrlId - $hDummy - 1
    $sText = ControlTreeView($hGui, '', $hTreeView, 'GetSelected')
    ToolTip('Item: ' & $iItem & @CR & 'Tree: ' & $sText)
    EndFunc

    [/autoit]
  • GUI_ONTOP

    • Oscar
    • 23. November 2009 um 22:08

    Mir ist gerade eine Besonderheit aufgefallen, mit der ich bereits bei einigen GUIs zu kämpfen hatte.

    Problem:
    Wenn ich den Befehl:

    [autoit]

    GUICtrlSetState($hButton, $GUI_ONTOP)

    [/autoit]


    benutzt hatte, dann wollte das GUI-Element (z.B. ein Button) oft nicht im Vordergrund erscheinen, ja er war sogar mitunter erst gar nicht sichtbar. Wenn man dann mit der Maus über die GUI fuhr, dann erschien plötzlich der Button.
    Dieses Verhalten konnte ich mir bisher nicht erklären, was dann dazu geführt hat, dass ich das anders gelöst hatte.
    Jetzt bin ich aber dahintergekommen, woran das liegt.
    Dazu hier ein einfaches Beispielscript:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    $hGui = GUICreate('Test', 400, 300)
    $hLabel = GUICtrlCreateLabel('Irgend ein Text', 0, 0, 400, 300)
    $hButton = GUICtrlCreateButton('Drück mich', 50, 100, 100, 25)

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

    ; an dieser Stelle führt der folgende Befehl dazu, dass der Button hinter das Label gesetzt wird (verschwindet)
    GUICtrlSetState($hButton, $GUI_ONTOP)

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

    GUISetState()

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

    ; aber hier wird der Button nach vorne geholt
    ;~ GUICtrlSetState($hButton, $GUI_ONTOP)

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

    While True
    Switch GUIGetMsg()
    Case $hButton
    MsgBox(0, 'Test', 'Button')
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]


    Die Lösung:
    Den Befehl GUICtrlSetState($hButton, $GUI_ONTOP) darf man erst benutzen, nachdem man das Fenster mit GUISetState() sichtbar gemacht hat.

    Vielleicht hatte ja auch einer von euch schon damit zu kämpfen...

  • Automatische Variablennamen

    • Oscar
    • 23. November 2009 um 14:02

    Und warum willst Du kein Array verwenden? Ist doch viel leichter zu handhaben.

  • IF Befehl funktioniert nicht!!!

    • Oscar
    • 23. November 2009 um 12:41

    So geht's:

    [autoit]

    If Not BitAND(GUICtrlGetState($checkCN_3), $GUI_DISABLE) Then GUICtrlSetState($checkCN_3, $GUI_CHECKED)

    [/autoit]

    Wobei es lt. Hilfe eigentlich möglich sein sollte diesen Status auch per GUICtrlRead auslesen zu können. Bug!?

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™