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

Beiträge von funkey

  • Win Funktionen auch mit ProzessPid?

    • funkey
    • 1. November 2008 um 01:52

    Das was ich im englischen Forum gefunden habe, gefiel mir nicht so gut, deswegen hab ich eine Funktion geschrieben, die aufgrund der Pid die Fenstertitel ausgibt. Die Fenstertitel, weil ein Prozess mehrere Fenster besitzen kann (explorer.exe, iexplore.exe). Hier der Link Funktion PID2WinTitle

  • Funktion PID2WinTitle

    • funkey
    • 1. November 2008 um 01:47

    Gibt's zwar sicher schon, aber ich hab's mal neu erfunden, da mir alles was ich gefunden habe nicht gefiel.

    Spoiler anzeigen
    [autoit]

    #Include <Array.au3>
    $title = _PID2WinTitle(4068)
    _ArrayDisplay($Title)

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

    Func _PID2WinTitle($pid)
    Local $Fensteranzahl = 0, $aFenstertitel[1] = [0], $Liste = WinList()
    For $i = 1 To $Liste[0][0]
    If $pid = WinGetProcess($Liste[$i][0]) Then
    ReDim $aFenstertitel[$Fensteranzahl+2]
    $Fensteranzahl += 1
    $aFenstertitel[0] = $Fensteranzahl
    $aFenstertitel[$Fensteranzahl] = $Liste[$i][0]
    EndIf
    Next
    Return $aFenstertitel
    EndFunc

    [/autoit]
  • Win Funktionen auch mit ProzessPid?

    • funkey
    • 1. November 2008 um 00:38

    Hab da was gefunden:

    Spoiler anzeigen
    [autoit]

    $handle = _ProcessGetWinEx(4248)

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

    WinFlash($handle[1],"",5)

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

    Func _ProcessGetWinEx($ivPid, $svClass = "", $svTitle = "", $svText = "", $ivReturnOnlyFirstMatch = False)

    $ivPid = ProcessExists($ivPid)
    If Not $ivPid Then Return(SetError(1, 0, 0))

    Local $avwArray = WinList()
    Local $avRet[1] = [0]

    For $i = 1 To $avwArray[0][0]
    $avClass = DllCall("User32.dll", "int", "GetClassName", "hwnd", $avwArray[$i][1], "str", "", "int", 4096)
    If WinGetProcess($avwArray[$i][1]) = $ivPid Then
    If $svClass = "" Or (IsArray($avClass) And $avClass[2] = $svClass) Then
    If ($svTitle = "" Or StringInStr($avwArray[$i][0], $svTitle)) And ($svText = "" Or StringInStr(WinGetText($avwArray[$i][1]), $svText)) Then
    $avRet[0] += 1
    ReDim $avRet[$avRet[0]+1]
    $avRet[$avRet[0]] = $avwArray[$i][1]
    If $ivReturnOnlyFirstMatch Then
    $avRet = $avret[1]
    ExitLoop
    EndIf
    EndIf
    EndIf
    EndIf
    Next
    Return $avRet
    EndFunc

    [/autoit]
  • Filemove verschiebt nicht in den richtigen Unterordner

    • funkey
    • 31. Oktober 2008 um 05:33

    Ging bei mir einwandfrei, musste es nur zum Testen anpassen

    [autoit]

    $search = FileFindFirstFile(@ScriptDir & "\Screenshot???.jpg")
    If $search = -1 Then
    MsgBox(0,"Fehler","Es konnte kein Screenshot gefunden werden!")
    Else
    While 1
    $file = FileFindNextFile($search)
    If @error Then ExitLoop
    $datei = @ScriptDir & "\Progdat\" & "Bild" & ".jpg" ;@scriptdir = j:\Au3 Datei
    FileMove ( @ScriptDir & "\" & $file, $datei, 8 )
    WEnd
    FileClose($search)
    MsgBox(0,"",$datei)
    EndIf

    [/autoit]

    Bei dir fehlt das Endif am Schluss!

  • MsgBox-Buttons Text ändern mal anders :)

    • funkey
    • 31. Oktober 2008 um 00:00

    Freut mich Alina, dass es dir gefällt und dass es bei dir funktioniert. :D

    Ich bin mir bewusst, dass das nicht die Non-Plus-Ultra-Lösung ist, ich weiß nicht mal ob es auf W2K oder Vista funktioniert (wegen der festen Klasse [Class:#32770]). Man kann manchmal auch ganz kurz den Originaltext sehen, aber auf alle Fälle ist es die einfachste Lösung!

    EDIT: Franz ich habe es jetzt auf mehreren Rechnern getestet, und wirklich, auf einem ging es nicht, keine Ahnung wieso. Aber mit den Variablen und nicht mit der Class (wie Progandy es schon hatte) ging's auch auf dem:

    [autoit]

    Func _MsgBoxIndividual($flag, $title, $text, $btn_text1, $btn_text2, $btn_text3)
    Local $str = "Local $x = Opt('WinWaitDelay',50)+WinWait('[Class:#32770]','')+" & _
    "ControlSetText('"&$title&"','"&$text&"','Button1','"&$btn_text1&"')+" & _
    "ControlSetText('"&$title&"','"&$text&"','Button2','"&$btn_text2&"')+" & _
    "ControlSetText('"&$title&"','"&$text&"','Button3','"&$btn_text3&"')"
    Run('"' & @AutoItExe & '" /AutoIt3ExecuteLine "' & $str & '"')
    Sleep(100)
    Return MsgBox($flag, $title, $text)
    EndFunc

    [/autoit]

    Außerdem musste ich bei einem Rechner die Option WinWaitDelay auf 80 stellen, damit es zuverlässig funktioniert, aber auf den meisten geht's auch mit 0.

  • Hausaufgaben aufgeben

    • funkey
    • 30. Oktober 2008 um 23:13

    Es ist schwierig jemandem eine Aufgabe zu geben, aber wie wäre es wenn du uns einen schönen Bilschirmschoner bastelst mit einer GUI wo man ein paar Parameter verstellen kann, natürlich soll er mit dem Schalter den Standard-Schaltern http://www.bcb-box.de/Informationen/SCR/scr.html ausgestatet sein und es soll sich was bewegen, vllt so eine wandernde Polylinie oder ein Schriftzug, der auf der einen Bildschirmseite rauskommt und auf der anderen verschwindet. Und nicht vergessen: Ich habe 2 Bildschirme, ich will auch beide schonen :P

  • MsgBox-Buttons Text ändern mal anders :)

    • funkey
    • 30. Oktober 2008 um 22:24

    Ach ja, sorry. Hab den Return vergessen, also einfach so:

    [autoit]

    $Antwort = _MsgBoxIndividual(34, "Frage", "Gehst du heute mit mir aus?", "Ja", "Nein", "Vielleicht")
    MsgBox(0,"",$Antwort)

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

    Func _MsgBoxIndividual($flag, $title, $text, $btn_text1, $btn_text2, $btn_text3)
    Local $str = "Local $x = Opt('WinWaitDelay',50)+WinWait('[Class:#32770]','')+" & _
    "ControlSetText('[Class:#32770]','','Button1','"&$btn_text1&"')+" & _
    "ControlSetText('[Class:#32770]','','Button2','"&$btn_text2&"')+" & _
    "ControlSetText('[Class:#32770]','','Button3','"&$btn_text3&"')"
    Run('"' & @AutoItExe & '" /AutoIt3ExecuteLine "' & $str & '"')
    Sleep(100)
    Return MsgBox($flag, $title, $text)
    EndFunc

    [/autoit]
  • MsgBox-Buttons Text ändern mal anders :)

    • funkey
    • 30. Oktober 2008 um 18:53

    Danke Progandy für deine Verbesserungsvorschlag! Ich kannte den Schalter '/AutoIt3ExecuteLine ' noch nicht. Das ist genau das was mir noch gefehlt hat. Jetzt dürfte das Skript auch auf Computern laufen ,auf dene kein Autoit installiert ist. Ich kenne deine Messagebox, aber ich finde diese Version reicht im Normalfall aus und ist auch ca. 230 Zeilen kürzer. ;)

    So werde ich das Skript in Zukunft verwenden, wenn keiner mehr einen Verbesserungsvorschlag hat:

    [autoit]

    _MsgBoxIndividual(34, "Frage", "Gehst du heute mit mir aus?", "Ja", "Nein", "Vielleicht")

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

    Func _MsgBoxIndividual($flag, $title, $text, $btn_text1, $btn_text2, $btn_text3)
    Local $str = "Local $x = Opt('WinWaitDelay',50)+WinWait('[Class:#32770]','')+" & _
    "ControlSetText('[Class:#32770]','','Button1','"&$btn_text1&"')+" & _
    "ControlSetText('[Class:#32770]','','Button2','"&$btn_text2&"')+" & _
    "ControlSetText('[Class:#32770]','','Button3','"&$btn_text3&"')"
    Run('"' & @AutoItExe & '" /AutoIt3ExecuteLine "' & $str & '"')
    Sleep(100)
    MsgBox($flag, $title, $text)
    EndFunc

    [/autoit]
  • IE Embeded löschen oder verstecken

    • funkey
    • 30. Oktober 2008 um 18:06

    In der Hilfe steht: The object will be destroyed when its parent GUI is destroyed.
    Also kannst du es meiner Meinung nach nur verstecken.

    [autoit]

    $OIE = _IECREATEEMBEDDED()
    $GUIACTIVEX = GUICtrlCreateObj($OIE, $FENSTER_X / 2 - $LOGO_X / 2 - 10, $FENSTER_Y / 2 - $LOGO_Y / 2, $LOGO_X + 20, $LOGO_Y + 30)
    GUICtrlSetState($GUIACTIVEX, $GUI_HIDE)

    [/autoit]
  • Counter für Adlibenable

    • funkey
    • 30. Oktober 2008 um 09:21

    Weiß nicht ob ich das richtig verstanden habe, aber ich probier's trotzdem

    [autoit]

    $Refreshtime = 100000
    AdlibEnable("_Refresh", $Refreshtime)
    $Start = TimerInit()

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

    While 1
    $Diff = StringFormat("%.0f",TimerDiff($Start))
    ToolTip($Refreshtime - $Diff)
    Sleep(200)
    ;mach etwas
    WEnd

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

    Func _Refresh()
    ;blablabla
    $Start = TimerInit()
    EndFunc

    [/autoit][autoit][/autoit][autoit][/autoit]
  • MsgBox-Buttons Text ändern mal anders :)

    • funkey
    • 30. Oktober 2008 um 09:08

    Nein geht nicht.

  • Problem mit Text und Leerzeichen

    • funkey
    • 30. Oktober 2008 um 08:55

    Danke für die Erklärung. Ich habe nur mit _Arraydisplay getestet und die Variablen so nicht ausgewertet. Schon wieder was dazugelernt. ;)

  • MsgBox-Buttons Text ändern mal anders :)

    • funkey
    • 30. Oktober 2008 um 01:50

    Ich hab mir eine ganz einfache Variante überlegt, wie ich meinen MsgBox-Buttons eine andere Beschriftung zukommen lassen kann. Das ist dabei herausgekommen:

    Wie es begann...
    [autoit]

    #Include <File.au3>
    Local $filelines[6]
    Local $filename = @TempDir&"\MsgText.au3"

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

    $filelines[0] = '#NoTrayIcon'
    $filelines[1] = 'Opt("WinWaitDelay",0)'
    $filelines[2] = 'WinWaitActive("[Class:#32770]")'
    $filelines[3] = 'ControlSetText("","","Button1","Bin dabei")'
    $filelines[4] = 'ControlSetText("","","Button2","Mag nicht")'
    $filelines[5] = 'ControlSetText("","","Button3","Vielleicht")'

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

    _FileWriteFromArray($filename, $filelines)
    Run(RegRead("HKLM\SOFTWARE\Autoit v3\Autoit","Installdir")&"\AutoIt3.exe " & $filename)

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

    MsgBox(34,"Frage","Gehst du heute mit mir aus?")

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

    FileDelete($filename)

    [/autoit]
    Wie es nun fertig aussieht
    [autoit]

    Func _MsgBoxIndividual($flag, $title, $text, $btn_text1 = "OK", $btn_text2 = "Nein", $btn_text3 = "Vielleicht")
    Local $str = "Local $x = Opt('WinWaitDelay',50)+WinWait('"&$title&"','')+" & _
    "ControlSetText('"&$title&"','"&$text&"','Button1','"&$btn_text1&"')+" & _
    "ControlSetText('"&$title&"','"&$text&"','Button2','"&$btn_text2&"')+" & _
    "ControlSetText('"&$title&"','"&$text&"','Button3','"&$btn_text3&"')"
    Run('"' & @AutoItExe & '" /AutoIt3ExecuteLine "' & $str & '"')
    Sleep(100)
    Return MsgBox($flag, $title, $text)
    EndFunc

    [/autoit]

    Dank an progandy für den Aufrufparameter /AutoIt3ExecuteLine

  • Problem mit Text und Leerzeichen

    • funkey
    • 29. Oktober 2008 um 23:23

    Das Problem mit der Pipe ('|') scheint ein Bug von Stringsplit zu sein. Die Umgehung dieses Problems mit Stringreplace wird wohl die beste Lösung dafür sein.

  • Problem mit Text und Leerzeichen

    • funkey
    • 29. Oktober 2008 um 20:49

    Also bei mir geht's

    [autoit]

    #Include <Array.au3>
    #include "_Array2DEmptyDel.au3"

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

    $String = "asdf asdf2 asdf3 asdf4 asdf5"

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

    $aa = StringSplit($String," ")
    _Array2DEmptyDel($aa)
    _ArrayDisplay($aa)

    [/autoit]
  • Problem mit Text und Leerzeichen

    • funkey
    • 29. Oktober 2008 um 20:42

    Bugfix hat da was

    _Array2DEmptyDel

  • Laufwerksbuchstabe ermitteln und Anzahl dateien zählen

    • funkey
    • 29. Oktober 2008 um 10:10

    Wieso bei allen Dateien einzeln die Größen adieren, wenn du sowieso die Summe benötigst?

    [autoit]

    $Speicherbedarf = DriveSpaceTotal($Laufwerk) - DriveSpaceFree($Laufwerk)

    [/autoit]

    Diese Ausgabe ist in MB, also wenn du es in Byte brauchst einfach *1024*1024

  • GUI Prozessbalken

    • funkey
    • 29. Oktober 2008 um 09:04

    Schau dir mal hier [ offen ] Programm.exe in einem AutoIt fenster ausführen den 12. Post an von eukalyptus. Es bettet Controls von einem anderen, versteckten Programm in seine eigene Gui mit ein. Vielleicht geht das auch mit deiner Progressbar.
    Sonst kannst du vllt, wenn neben der Progressbar die Prozent stehen, diese auslesen und deinen Balken mittels AdlibEnable aktualisieren.

  • Array für Beginner

    • funkey
    • 29. Oktober 2008 um 00:02
    Zitat

    MsgBox(0,"1 Kühlschrank 2 Fach 7 Flasche",$Bier[1][2][7])

    Eigentlich sollte es $Bier[0][1][6] heißen, oder?


    [OT]
    Zillertal Bier ist das Beste :D
    [/OT]

  • Beispiel für _ADGetObjectsInOU

    • funkey
    • 28. Oktober 2008 um 23:56

    Ich weiß zwar nicht mal was der Befehl macht, aber in englischen Forum (http://www.autoitscript.com/forum/lofivers…php?t71806.html) glaube ich zu erkennen, dass sie das Array nicht so deklariert haben, also ohne die 500:

    DIM $Array
    _ADGetObjectsInOU($Array,"OU=TESTOU,DC=MeineDomain,DC=local")

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™