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

Beiträge von co_steffl

  • Problem mit Parent- Child Fenster GUIGetMsg

    • co_steffl
    • 18. März 2019 um 11:18

    Hallo Autoit Gemeinde,

    hab mal wieder ein Problem mit dem ich nicht so recht weiter komme.

    Ich möchte in einem Parent Fenster zwei weitere Child Fenster anzeigen. Das erste soll nur eine Anzeige des

    "DiskMgmt.msc" sein, das zweite Fenster soll ein Fenster für bestimmte Aufgaben sein.

    Das klappt auch halbwegs, jedoch habe ich das Problem in dem 2.ten Child Fenster den Button anzusprechen.

    GUIEVENTCLOSE funktioniert, jedoch Case Button nicht.

    Muß noch dazu sagen das ich mich mit WinAPUI n.n. so gut auskenne.

    Würde mich freuen wenn mal jemand darüber schauen könnte und mir einen Tipp gibt.

    Danke

    Spoiler anzeigen

    #include <WindowsConstants.au3>

    #include <Constants.au3>

    #include <WinAPI.au3>

    #include <GUIConstantsEx.au3>

    ;~ #include <debugger.au3>

    #RequireAdmin

    #include <GUIConstantsEx.au3>

    #include <WindowsConstants.au3>

    GUICreate("Test", 200, 100, Default, Default) ;, $WS_POPUPWINDOW)

    GUISetState(@SW_SHOW)


    ; *********************************************************************************************************************************************

    $hParent = GUICreate("_WinAPI_SetParent", 950, 800, Default, Default, BitOR($WS_CAPTION, $WS_SYSMENU, $WS_CLIPCHILDREN))

    GUISetState()

    $sCommand = 'Diskmgmt.msc'

    Local $iPID, $sOutput = ""

    $iPID = Run('"' & @ComSpec & '" /c ' & $sCommand, "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)

    ProcessWaitClose($iPID)

    WinWait("[CLASS:MMCMainFrame]")

    $hChild = WinGetHandle("[CLASS:MMCMainFrame]")

    _WinAPI_SetParent($hChild, $hParent)

    WinMove($hChild, "", 0, 0, 950);, 400) ; an 0,0 des Hauptfensters schieben

    WinSetState($hChild, "", @SW_SHOW)

    WinSetState($hChild, "", @SW_DISABLE)

    ; *********************************************************************************************************************************************

    $hChild1 = GUICreate("_WinAPI_SetChild", 900, 200, Default, 100, BitOR($WS_MINIMIZEBOX, $WS_CAPTION, $WS_SYSMENU, $WS_CLIPCHILDREN))

    Global $Button = GUICtrlCreateButton('TEST', 100, 100, 50, 50)

    _WinAPI_SetParent($hChild1, $hParent)

    _WinAPI_SetWindowLong($hChild1, $GWL_STYLE, $WS_OVERLAPPEDWINDOW) ;BitOR($WS_CHILD, $WS_BORDER, $WS_POPUP))

    WinMove($hChild1, "", 0, 455, 950, 345) ; an 0,0 des Hauptfensters schieben

    $hChild1 = WinGetHandle($hChild1)

    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $hChild1 = ' & $hChild1 & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console

    If @error Then

    MsgBox($MB_SYSTEMMODAL, "", "An error occurred when trying to retrieve the window handle of Notepad.")

    Exit

    EndIf

    WinSetState($hChild1, "", @SW_ENABLE)

    WinSetState($hChild1, "", @SW_SHOW)


    While 1

    $idMsg = GUIGetMsg()

    Select

    Case $idMsg = $GUI_EVENT_CLOSE

    MsgBox($MB_SYSTEMMODAL, "", "Dialog was closed")

    Exitloop

    Case $idMsg = $GUI_EVENT_MINIMIZE

    MsgBox($MB_SYSTEMMODAL, "", "Dialog minimized", 2)

    Case $idMsg = $GUI_EVENT_MAXIMIZE

    MsgBox($MB_SYSTEMMODAL, "", "Dialog restored", 2)

    Case $idMsg = $button

    MsgBox($MB_SYSTEMMODAL, "", "Dialog -1- was closed")

    Exitloop

    EndSelect

    WEnd

    GUIDelete()

  • _GUICtrlButton_SetState

    • co_steffl
    • 24. Januar 2019 um 11:59

    OK

    Dachte die gibt es nur als runde Button... wieder was gelernt :cursing::)

    Werde es umbauen, danke.

  • _GUICtrlButton_SetState

    • co_steffl
    • 24. Januar 2019 um 11:33

    Danke alpines

    jup das war's. Vorher setzen hätte ich jetzt nicht vermutet.

    Ist zwar trotzdem langsam, aber funktioniert....

    Danke

  • _GUICtrlButton_SetState

    • co_steffl
    • 24. Januar 2019 um 11:17

    Hallo Autoit Gemeinde.

    Hab mal wieder ein kleines Problem und könnte eine Lösung gebrauchen.

    In der GUI habe ich zwei Button "Move" + "Copy"

    Ich will nun zwischen den beiden Button umschalten können. Dafür habe ich die Button mit

    _GUICtrlButton_SetState

    (BtnMovClick -- BtnCopClick)

    Mein Problem nun, wenn ich die Button der Reihe nach anklicke und dann Wechsel funktioniert alles ganz gut.

    Der eine Button geht aus, der andere an. Wenn ich dies das zweite mal tue, wechselt der Hintergrund nicht mehr.

    Hab schon mehrfach probiert zu ändern, auch Sleep(300) eingebaut.

    Kann mir jemand sagen wo der Fehler liegt oder gibt es dafür eine andere Vorgehenswiese?

    Dankbar für jeden Tip....

    mein Code

    Spoiler anzeigen


    #include <GuiButton.au3>

    #include <ButtonConstants.au3>

    #include <GUIConstantsEx.au3>

    #include <ListViewConstants.au3>

    #include <StaticConstants.au3>

    #include <WindowsConstants.au3>

    #include <GuiListView.au3>

    #include <File.au3>

    Opt("GUIOnEventMode", 1)

    Global $exStyles = BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES) ;ListViews Stile

    Global $Pfad_1, $Pfad_2 ;Ordner auswahl in Variable speichern

    Global $FileList_1, $FileList_2 ; Variablen für Ordner durchsuchen "_FileListToArrayRec" Folder 1 & Folder 2

    #Region ### START Koda GUI section ### Form=t:\ases ae61\scripte\autoit\entwicklung\dpllview.kxf

    Global $Form1_1 = GUICreate("Form1", 965, 951, 196, 130, $WS_OVERLAPPEDWINDOW)

    GUISetOnEvent($GUI_EVENT_CLOSE, "Form1_1Close")

    GUISetOnEvent($GUI_EVENT_MINIMIZE, "Form1_1Minimize")

    GUISetOnEvent($GUI_EVENT_MAXIMIZE, "Form1_1Maximize")

    GUISetOnEvent($GUI_EVENT_RESTORE, "Form1_1Restore")

    ;------------------Create an Open Pfad 1 Button

    $Btn_Dir1 = GUICtrlCreateButton("Ordner 1 auswählen (Original)", 27, 10, 250, 25)

    GUICtrlSetOnEvent(-1, "Dir1BtnClick")

    GUICtrlSetFont($Btn_Dir1, 11, "", "", "") ;font size

    (

    ;------------------Create an Open Pfad 2 Button

    $Btn_Dir2 = GUICtrlCreateButton("Ordner 2 auswählen (Kopie)", 27, 45, 250, 25)

    GUICtrlSetOnEvent(-1, "Dir2BtnClick")

    GUICtrlSetFont($Btn_Dir2, 11, "", "", "") ;font size

    GUICtrlSetState(-1, $GUI_DISABLE) ;Button Deaktivieren

    ;------------------Create an Open Folder Ordner 1 Button

    $FolderOpen_Btn = GUICtrlCreateButton("Dateipfad öffnen (Original)", 320, 10, 250, 25)

    GUICtrlSetFont($FolderOpen_Btn, 11, "", "", "") ;font size

    ;------------------Create an Copy_Btn Button

    $Copy_Btn = GUICtrlCreateButton("Mit ROBOCOPY abgleichen", 320, 45, 250, 25)

    GUICtrlSetFont($Copy_Btn, 11, "", "", "") ;font size

    GUICtrlSetState($Copy_Btn, $GUI_DISABLE) ;Button Deaktivieren

    ;------------------Create an Label-Pfad Ordner 1

    $Labpfad_1 = GUICtrlCreateLabel("Ordner 1: ", 27, 82, 550, 20)

    GUICtrlSetFont(-1, 10, "", "", "") ;font size

    GUICtrlSetColor($Labpfad_1, 0x0000FF) ;font farbe

    ;------------------Create an Label-Pfad Ordner 2

    $Labpfad_2 = GUICtrlCreateLabel("Ordner 2: ", 27, 105, 550, 20)

    GUICtrlSetFont(-1, 10, "", "", "") ;font size

    GUICtrlSetColor($Labpfad_2, 0xFF0000) ;font farbe

    ;------------------Create an ListView

    $idListview1 = GUICtrlCreateListView("", 40,180, 400, 700) ;,$LVS_SORTDESCENDING)

    _GUICtrlListView_AddColumn($idListview1, "", 20) ;Spalte 1

    _GUICtrlListView_AddColumn($idListview1, "Dateien", 100) ;Spalte 2

    _GUICtrlListView_AddColumn($idListview1, "Pfad (Original)", 550) ;Spalte 3

    _GUICtrlListView_SetExtendedListViewStyle($idListview1, BitOR($exStyles, $LVS_EX_GRIDLINES, $LVS_EX_TRACKSELECT)) ;listView Stile

    ;------------------Create an ListView

    $idListview2 = GUICtrlCreateListView("", 440, 180, 400, 700) ;,$LVS_SORTDESCENDING)

    _GUICtrlListView_AddColumn($idListview2, "", 20) ;Spalte 1

    _GUICtrlListView_AddColumn($idListview2, "Dateien", 100) ;Spalte 2

    _GUICtrlListView_AddColumn($idListview2, "Pfad (Original)", 550) ;Spalte 3

    _GUICtrlListView_SetExtendedListViewStyle($idListview2, BitOR($exStyles, $LVS_EX_GRIDLINES)) ;listView Stile

    ; Das ganze muß in eine Schleife gebunden werden

    _GUICtrlListView_AddItem($idListview1, "", 0) ;Spalte1 Icon

    _GUICtrlListView_AddSubItem($idListview1, 0, "Motorrad.jpeg", 1) ;Spalte2 Datei

    _GUICtrlListView_AddSubItem($idListview1, 0, "C:/Windows/System32/", 2) ;Spalte3 Pfad

    _GUICtrlListView_AddItem($idListview1, "", 1) ;Spalte1 Icon

    _GUICtrlListView_AddSubItem($idListview1, 1, "Fahrrad.jpg", 1) ;Spalte2 Datei

    _GUICtrlListView_AddSubItem($idListview1, 1, "C:/Windows/System32/", 2) ;Spalte3 Pfad

    _GUICtrlListView_AddItem($idListview1, "", 2) ;Spalte1 Icon

    _GUICtrlListView_AddSubItem($idListview1, 2, "Fahrrad.jpg", 1) ;Spalte2 Datei

    _GUICtrlListView_AddSubItem($idListview1, 2, "C:/Windows/System32/", 2) ;Spalte3 Pfad

    _GUICtrlListView_AddItem($idListview1, "", 3) ;Spalte1 Icon

    _GUICtrlListView_AddSubItem($idListview1, 3, "Fahrrad.jpg", 1) ;Spalte2 Datei

    _GUICtrlListView_AddSubItem($idListview1, 3, "C:/Windows/System32/", 2) ;Spalte3 Pfad

    Global $BtnUp = GUICtrlCreateButton("/\", 880, 180, 33, 40)

    GUICtrlSetOnEvent(-1, "BtnUpClick")

    GUICtrlSetState(-1, $GUI_DISABLE) ;Button Deaktivieren

    Global $BtnDown = GUICtrlCreateButton("\/", 880, 300, 33, 40)

    GUICtrlSetOnEvent(-1, "BtnDownClick")

    GUICtrlSetState(-1, $GUI_DISABLE) ;Button Deaktivieren

    Global $BtnLeft = GUICtrlCreateButton("BtnLeft", 848, 250, 41, 40, $BS_ICON)

    GUICtrlSetImage(-1, "C:\Windows\SysWOW64\wmploc.DLL", -200, 0)

    GUICtrlSetOnEvent(-1, "BtnLeftClick")

    Global $BtnRight = GUICtrlCreateButton("BtnRight", 904, 250, 41, 40, $BS_ICON)

    GUICtrlSetState(-1, $GUI_ENABLE) ;Button Deaktivieren

    GUICtrlSetImage(-1, "C:\Windows\SysWOW64\wmploc.dll", -199, 4)

    GUICtrlSetOnEvent(-1, "BtnRightClick")


    Global $BtnMov = GUICtrlCreateButton("Move", 865, 144, 60, 31, $BS_ICON) ;, $WS_EX_TRANSPARENT) <============================================================

    GUICtrlSetOnEvent(-1, "BtnMovClick")

    _GUICtrlButton_SetState(-1, FALSE)

    Global $BtnCop = GUICtrlCreateButton("Copy", 865, 350, 57, 31, $BS_ICON) ;, $WS_EX_TRANSPARENT) <============================================================

    GUICtrlSetOnEvent(-1, "BtnCopClick")

    _GUICtrlButton_SetState(-1, TRUE)


    Global $Label2 = GUICtrlCreateLabel("Ordner 1 (First Folder)", 80, 145, 220, 29)

    GUICtrlSetFont(-1, 16, 400, 0, "Arial Narrow")

    GUICtrlSetOnEvent(-1, "Label2Click")

    Global $Label3 = GUICtrlCreateLabel("Ordner 2 (Second Folder)", 480, 145, 220, 29)

    GUICtrlSetFont(-1, 16, 400, 0, "Arial Narrow")

    GUICtrlSetOnEvent(-1, "Label3Click")

    GUISetState(@SW_SHOW)

    #EndRegion ### END Koda GUI section ###

    While 1

    Sleep(100)

    WEnd


    Func BtnDownClick()

    EndFunc

    Func BtnLeftClick()

    GUICtrlSetImage($BtnLeft, "C:\Windows\SysWOW64\wmploc.DLL", -200, 2)

    GUICtrlSetImage($BtnRight, "C:\Windows\SysWOW64\wmploc.DLL", -199, 0)

    EndFunc

    Func BtnRightClick()

    GUICtrlSetImage($BtnLeft, "C:\Windows\SysWOW64\wmploc.DLL", -200, 0)

    GUICtrlSetImage($BtnRight, "C:\Windows\SysWOW64\wmploc.DLL", -199, 2)

    EndFunc

    Func BtnUpClick()

    EndFunc

    Func BtnCopClick()

    _GUICtrlButton_SetState($BtnMov, FALSE)

    Sleep(300)

    _GUICtrlButton_SetState($BtnCop, TRUE)

    ;~ GUICtrlSetFont($BtnCop, 14, 400, 0, "Arial")

    ;~ GUICtrlSetFont($BtnMov, 14, 400, 0, "Arial Black")

    EndFunc

    Func BtnMovClick()

    _GUICtrlButton_SetState($BtnMov, TRUE)

    Sleep(300)

    _GUICtrlButton_SetState($BtnCop, FALSE)

    ;~ GUICtrlSetFont($BtnMov, 14, 400, 0, "Arial")

    ;~ GUICtrlSetFont($BtnCop, 14, 400, 0, "Arial Black")

    EndFunc

    Func Form1_1Close()

    Exit

    EndFunc

    Func Form1_1Maximize()

    EndFunc

    Func Form1_1Minimize()

    EndFunc

    Func Form1_1Restore()

    EndFunc

    Func Dir1BtnClick()

    _GUICtrlListView_DeleteAllItems($idListview1) ;Alle einträge in ListView Löschen

    ;~ _GUICtrlStatusBar_SetText($StatusBar1, "Bearbeitung gestartet") ;Text in Statusbar links

    $dir = FileSelectFolder("Ordner auswählen","") ;Ordner auswahl starten

    $Pfad_1 = $dir & "\" ;Ausgewählten Pfad in eine Variable speichern

    If $dir = "" Then

    ;~ GUICtrlSetState($Btn_Dir1, $GUI_DISABLE) ;Button Deaktivieren

    GUICtrlSetData($Labpfad_1, "Ordner_1: " & "No Selection made") ;Pfad an Label übergeben

    ; message no selection made

    Else

    GUICtrlSetState($Btn_Dir1, $GUI_DISABLE) ;Button Aktivieren

    GUICtrlSetState($Btn_Dir2, $GUI_ENABLE) ;Button Aktivieren

    GUICtrlSetData($Labpfad_1, "Ordner_1: " & $Pfad_1) ;Pfad an Label übergeben

    GUICtrlSetTip($Labpfad_1, GUICtrlRead($Labpfad_1, 1))

    EndIf

    EndFunc

    Func Dir2BtnClick()

    _GUICtrlListView_DeleteAllItems($idListview2) ;Alle einträge in ListView Löschen

    $dir = FileSelectFolder("Ordner auswählen","") ;Ordner auswahl starten

    $Pfad_2 = $dir & "\" ; Ausgewählten Pfad in eine Variable speichern

    If $dir = "" Then

    GUICtrlSetData($Labpfad_2, "Ordner_2: " & "No Selection made") ;Pfad an Label übergeben

    Else

    GUICtrlSetData($Labpfad_2, "Ordner_2: " & $Pfad_2) ;;Pfad an Label übergeben

    GUICtrlSetTip($Labpfad_2, GUICtrlRead($Labpfad_2, 1))

    ;~ _Ordner1Array() ;In ausgewählten Ordner nach Dateien suchen

    EndIf

    EndFunc

    Func Label1Click()

    EndFunc

    Func Label2Click()

    EndFunc

    Func Label3Click()

    EndFunc

    Func Label4Click()

    EndFunc

    Func ListView1Click()

    ;~ GUICtrlSetData($ListView1_0, "Fahrrad")

    EndFunc

    Func ListView2Click()

    ;~ GUICtrlSetData($ListView2_0, "Motorrad")

    EndFunc

  • _FF_MozRepl

    • co_steffl
    • 20. Januar 2019 um 10:25

    Danke water

    schönen Sonntag noch

  • _FF_MozRepl

    • co_steffl
    • 20. Januar 2019 um 09:41

    Moin AI Gemeinde

    vielleicht eine dumme Frage jetzt von mir, verfolge aber das Thema schon länger nicht mehr.

    Ich möchte FF mit Autoit starten und mehr. Hab das von Thorsten Willert gefunden. UDF FF.au3

    Frage nun... ist dies noch spruchreif oder mittlerweilen überholt, veraltet?

    Gruß co_steffl

  • PID Process ID überwachen

    • co_steffl
    • 21. September 2018 um 12:47

    Hi autoBert

    ah ja, klar. Damit kann es funktionieren.

    Danke

    Happy WE

  • PID Process ID überwachen

    • co_steffl
    • 21. September 2018 um 12:45

    Hi autoBert

    danke ich schau mir es einmal an.

    Ich starte ein Registry Backup und das dauert. Derweil soll mein Script weiterlaufen. Wenn der Backup fertig ist wäre eine Nachricht nicht schlecht.

    Spoiler anzeigen

    Func _RegBackUp()

    if fileexists(@ScriptDir & "\backup.reg") then

    FileMove(@ScriptDir & "\backup.reg", @ScriptDir & "\reg\backup.Registry_Typ" & @YEAR & @MON & @MDAY & @HOUR & @MIN & @SEC)

    EndIf

    $sLoc = @ScriptDir & "\reg\backup.reg"

    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : @ScriptDir = ' & @ScriptDir & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console

    ;~ _RunDos("Regedit /e c:\reg\backup.reg")

    ShellExecute("Regedit.exe", " /e backup.reg") ;/e Backup /s Restore

    ;~ $iPID = WinGetProcess("Regedit.exe")

    ;~ ConsoleWrite("PID kommt GET > " & $iPID & @CRLF)


    While 1

    Local $PID2 = ProcessExists("regedit.exe")

    If Not $PID2 = 0 Then

    ConsoleWrite("PID2 kommt > " & $PID2 & @CRLF)

    Sleep(5000)

    Else

    ConsoleWrite("PID2 > " & $PID2 & " ist fertig" &@CRLF)

    ExitLoop

    EndIf

    WEnd

    if fileexists(@ScriptDir & "\backup.reg") then

    FileMove(@ScriptDir & "\backup.reg", @ScriptDir & "\reg\backup.reg_" & @ComputerName & " _ " & @YEAR & @MON & @MDAY & "_" & @HOUR & @MIN & @SEC)

    EndIf

    EndFunc

  • PID Process ID überwachen

    • co_steffl
    • 21. September 2018 um 08:01

    Guten Morgen Autoit Gemeinde,

    Ich brauch mal wieder etwas Hilfe.

    Ich habe in einem Script einen Process gestartet. Dann habe ich die PID des laufenden Process ermittelt und kann diese auch in einem Loop überwachen bis zur Beendigung. Mein Problem ist nun das ich nicht so lange warten möchte bis der Process beendet wird, sondern in meinem Script fortfahren.

    Gibt es da eine Lösung. Hab schon gesucht aber nichts gefunden, oder betriebsblind.

    Habe mir auch schon überlegt aus dem Script heraus einen zweiten Script zu starten. Aber ich denke es gibt keine Communication zwischen den Scripten? ...oder

    Würde mich über einen Tipp freuen

  • Run versus RunWait

    • co_steffl
    • 5. September 2018 um 14:21

    Hi Simpel

    danke. Hab mich nochmal damit beschäftigt. Du hast recht. RunWait gibt nur einen ExitCode zurück.

    Run liefert die PID.... :cursing: (Mühsam ernährt sich das Eichhörnchen)

    Danke

    Spoiler anzeigen

    Func _GetDOSOutput(ByRef $sCommand)

    $iPID = Run('"' & @ComSpec & '" /c ' & $sCommand, "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
    Local $iPID, $sOutput = ""
    ProcessWaitClose ( $iPID ,60)
    While 1

    $sOutput &= StdoutRead($iPID, False, False)

    MsgBox($MB_SYSTEMMODAL, "Stdout Read:", $sOutput & " Process ID " & $iPID)

    If @error Then

    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : @error = ' & @error & @CRLF & '>Error code: ' & $sOutput & @CRLF) ;### Debug Console

    ExitLoop

    EndIf

    Sleep(10)

    Exit

    WEnd

    Return $sOutput

    EndFunc ;==>_GetDOSOutput

  • Run versus RunWait

    • co_steffl
    • 5. September 2018 um 13:39

    Hallo zusammen,

    die Nervensäge schon wieder. Hab gerade das nächste Problem.

    Wenn ich den Command

    netsh Show helper

    mit "RunWait" absetze bekomme ich keinen Output

    wenn ich den Command mit "Run" absetze kommt ein Ergebnis

    Hab jetz schon verschd. Sachen ausprobiert.

    Bekomm ich nochmal einen kleinen Tip?

    Gruß co_steffl


    Spoiler anzeigen


    Func _GetDOSOutput(ByRef $sCommand)

    $s_Command = "netsh Show helper"

    $iPID = RunWait('"' & @ComSpec & '" /c ' & $sCommand, "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD) läuft nicht....


    $iPID = Run('"' & @ComSpec & '" /c ' & $sCommand, "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD) läuft.....


    Local $iPID, $sOutput = ""

    Sleep(500)

    While 1

    $sOutput &= StdoutRead($iPID, False, False)

    MsgBox($MB_SYSTEMMODAL, "Stdout Read:", $sOutput & " Process ID " & $iPID)

    If @error Then

    ExitLoop

    EndIf

    Sleep(10)

    Exit

    WEnd

    EndFunc ;==>_GetDOSOutput

  • On Event Frage

    • co_steffl
    • 5. September 2018 um 11:44

    Danke alpines,

    danke für das Beispiel. So wie du es erklärt hast habe ich es kapiert....

    :thumbup::)

    co_steffl

  • On Event Frage

    • co_steffl
    • 5. September 2018 um 11:23

    Hallo zusammen

    habt mal wieder eine Frage.

    Ich habe einen Link gefunden der das Problem "On Event" mit "Msg Loop" beschreibt und wie man beides benutzen kann.

    Der Link dazu lautet

    https://www.autoitscript.com/wiki/Managing_Multiple_GUIs

    Dazu ist in dem letzten Beispiel eine Englischer Text zu dem Beispiel hinterlegt.

    "But did you realise that you can also use what some people think of as a hybrid mode - using common OnEvent functions and then determining the specific GUI or control which called the function within the function? As an added bonus, this approach may, depending on the circumstances, let you send parameters to the functions you call - something that you normally cannot do in OnEvent mode."

    Es geht jetzt um den letzten Satz den ich wie folgt übersetze

    "Als zusätzlichen Bonus kann dieser Ansatz je nach den Umständen dazu führen, dass Sie Parameter an die von Ihnen aufgerufenen Funktionen senden können - was Sie normalerweise im OnEvent-Modus nicht tun können."

    Da werde ich nicht ganz schlau daraus.

    Kann mir das bitte jemand evtl mit Beispiel näher erläutern?

    Gruß

    Spoiler anzeigen

    #include <MsgBoxConstants.au3>

    #include <GUIConstantsEx.au3>

    Opt("GUIOnEventMode", 1)

    Global $g_hGUI1, $g_hGUI2 = 9999, $g_idButton1, $g_idButton2, $g_idButton3 = 9999 ; Predeclare the variables with dummy values to prevent firing the Case statements

    gui1()

    Func gui1()

    $g_hGUI1 = GUICreate("Gui 1", 200, 200, 100, 100)

    GUISetOnEvent($GUI_EVENT_CLOSE, "On_Close") ; Call a common GUI close function

    $g_idButton1 = GUICtrlCreateButton("Msgbox 1", 10, 10, 80, 30)

    GUICtrlSetOnEvent(-1, "On_Button") ; Call a common button function

    $g_idButton2 = GUICtrlCreateButton("Show Gui 2", 10, 60, 80, 30)

    GUICtrlSetOnEvent(-1, "On_Button") ; Call a common button function

    GUISetState()

    While 1

    Sleep(10)

    WEnd

    EndFunc ;==>gui1

    Func gui2()

    $g_hGUI2 = GUICreate("Gui 2", 200, 200, 350, 350)

    GUISetOnEvent($GUI_EVENT_CLOSE, "On_Close") ; Call a common GUI close function

    $g_idButton3 = GUICtrlCreateButton("MsgBox 2", 10, 10, 80, 30)

    GUICtrlSetOnEvent(-1, "On_Button") ; Call a common button function

    GUISetState()

    EndFunc ;==>gui2

    Func On_Close()

    Switch @GUI_WinHandle ; See which GUI sent the CLOSE message

    Case $g_hGUI1

    Exit ; If it was this GUI - we exit <<<<<<<<<<<<<<<

    Case $g_hGUI2

    GUIDelete($g_hGUI2) ; If it was this GUI - we just delete the GUI <<<<<<<<<<<<<<<

    GUICtrlSetState($g_idButton2, $GUI_ENABLE)

    EndSwitch

    EndFunc ;==>On_Close

    Func On_Button()

    Switch @GUI_CtrlId ; See which button sent the message

    Case $g_idButton1

    MessageBox(1) ; We can call a function with parameters here <<<<<<<<<<<<<<<<<<<

    Case $g_idButton2

    GUICtrlSetState($g_idButton2, $GUI_DISABLE)

    gui2()

    Case $g_idButton3

    MessageBox(2) ; We can call a function with parameters here <<<<<<<<<<<<<<<<<<<

    EndSwitch

    EndFunc ;==>On_Button

    Func MessageBox($iIndex)

    MsgBox($MB_OK, "MsgBox " & $iIndex, "Test from Gui " & $iIndex)

    EndFunc ;==>MessageBox

  • GUICtrlCreate Dummy? Was macht das?

    • co_steffl
    • 21. August 2018 um 10:34

    Hi Mars,

    top, wie geil ist das denn...:thumbup:

    Habs gerade ausprobiert. Danke

    Kommt in meine Sammlung....

    Gruß

  • GUICtrlCreate Dummy? Was macht das?

    • co_steffl
    • 21. August 2018 um 10:18

    Hi alpines

    danke erstmal. Hat einen Moment gedauert.X/ Aber ich hab's jetzt verstanden...:thumbup:

    Danke

  • GUICtrlCreate Dummy? Was macht das?

    • co_steffl
    • 21. August 2018 um 10:02

    Hallo Forum Gemeinde,

    hab mal wieder eine Anfängerfrage?

    Kann mir bitte jemand in einfachen Worten erklären wozu oder wie ich GUICtrlCreateDummy  benutze?

    Danke

    Gruß Co_Steffl

  • Frage zu GUICtrlListViewItem

    • co_steffl
    • 16. August 2018 um 10:19

    Hi autoiter

    danke für die Antwort. Ja die spalten sind vorhanden. Das Trennzeichen ist ok, will es ja nebeneinander in Spalten nebeneinander haben.

    Sieht in etwa so aus.... Spalten.JPG

    Aber der Tipp mit "_GUICtrlListView_AddArray" ist gut. Werde es mal ausprobieren.

    Danke

  • Frage zu GUICtrlListViewItem

    • co_steffl
    • 16. August 2018 um 09:56

    Hallo zusammen,

    ich habe mal wieder kein Problem sondern eher eine Frage. Ich habe mir über eine Schleife in eine Variable $sTxtString einen String gebaut.

    Sieht in etwa so aus.... "KB434091|KB4340917|...." usw.

    Damit möchte ich eine ListView erstellen.

    Also habe ich dann versucht über "GUICtrlCreateListViewItem($TxtString, $ListView1)" die Items auszugeben.

    Dies funktioniert nicht?

    Nun meine Frage? Geht das so überhaupt? Wenn nicht gibt es eine andere Lösung als so einen String zu benutzen?

    GUICtrlCreateListViewItem($array[$x] [0] & "|" & $array[$x] [1] & "|" & $array[$x] [2] & "|" & $array[$x] [3] & "|" & $array[$x] [4] & "|" & $array[$x] [5], $ListView1)


    Problem ist das ich nicht weiß wieviel Elemente jedes mal vorhanden sind?

    Ich hoffe ich habe mich klar genug ausgedrückt.

    Danke schon mal

  • Powershell Cmdlet Get-Service "Windows Defender Antivirus Service"

    • co_steffl
    • 23. Juli 2018 um 07:49

    Hallo zusammen,

    sorry sorry sorry... nach 6 Std. an der Glotze wird man Betriebsblind.:cursing:

    Code
    falscher Code
    
    Local $iPid = Run("PowerShell.exe -Command & $TmpCmd", @ScriptDir, @SW_HIDE, 6)
    
    
    richtiger Code
    
    Local $iPid = Run("PowerShell.exe -Command " & $TmpCmd, @ScriptDir, @SW_HIDE, 6)

    Trotzdem Danke für die Unterstützung.:thumbup:

  • Powershell Cmdlet Get-Service "Windows Defender Antivirus Service"

    • co_steffl
    • 20. Juli 2018 um 10:11

    Hallo

    so ich muß nochmal nerven und mir einen Tipp von den Profis erhoffen

    Hier mal der Code von Bitnugger.

    Code
    Global $s_ServWDAS = "Windows Defender Antivirus Service"
    
    _RunCmdlet($s_ServWDAS)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : _RunCmdlet($s_ServWDAS) = ' & _RunCmdlet($s_ServWDAS) & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
    
    
    
    Func _RunCmdlet($s_Service)
        Local $TmpCmd = "Get-Service & $s_Service"
        Local $iPid = Run("PowerShell.exe -Command $TmpCmd", @ScriptDir, @SW_HIDE, 2)
        If Not $iPid Then Return SetError(1, 0, False)
            ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : SetError(1, 0, False) = ' & SetError(1, 0, False) & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
        ProcessWaitClose($iPid)
        $sRead = StringStripWS(StdoutRead($iPid), 2)
        Return StringStripWS(StdoutRead($iPid), 2)
    EndFunc   ;==>RunCmdlet
    Alles anzeigen

    Hintergrund:

    Ich möchte als erstes wissen ob es diesen Dienst überhaupt existiert.

    Danach möchte ich den Status abfragen (Kommt später)

    Ich habe nun das Problem, das es in diesem Fall den Dienst nicht gibt.

    StdoutRead liefert mir nun keine Daten.

    Die Konsole liefert mir dies.

    Code
    @@ Debug(13) : SetError(1, 0, False) = False
    >Error code: 1
    @@ Debug(13) : SetError(1, 0, False) = False
    >Error code: 1
    @@ Debug(5) : _RunCmdlet($s_ServWDAS) = 
    >Error code: 0
    +>09:58:40 AutoIt3.exe ended.rc:0
    +>09:58:40 AutoIt3Wrapper Finished.
    >Exit code: 0    Time: 1.929

    Wie frage ich dies jetzt am besten ab. Abfrage nach StdoutRead nach "" Leerzeichen möchte ich nicht so gerne.

    Die Console/Run liefert mir ja "Error Code: 1"

    Ich könnte notfalls damit leben. Aber gibt es da noch eine elegantere Lösung?

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™