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

  • Problem mit einer Schleife / TreeView auslesen

    • BugFix
    • 4. April 2007 um 13:30

    Verwende anstelle von:

    [autoit]

    $test = GUICtrlCreateTreeViewItem($archivename, $archivetree)

    [/autoit]


    ein Array.

    [autoit]

    $arItem[$i] = GUICtrlCreateTreeViewItem($archivename, $archivetree)

    [/autoit]

    Das Array definierst du vorher mit einer max. Anzahl von Elementen, z.B. Dim $arItem[200], oder du mußt es in der Schleife immer mit ReDim anpassen.


    EDIT

    Hurra, Beförderung zum Haudegen ==> mein 500. Post

  • Variablen aufsplitten!?

    • BugFix
    • 4. April 2007 um 12:35

    Sicher geht das auch noch kürzer mit Regulären Ausdrücken.
    So ist es aber auch ganz praktikabel.

    [autoit]

    $string = "admin:99:*user:1:*user:2:*user:3:*user:4:*user:5:*"
    $arUser = StringSplit($string, "*")
    $OutString = ""
    For $i = 1 To $arUser[0]-1 ; da auch am Ende des Strings ein Trennzeichen ist, folgt noch ein leerer String - deshalb '-1'
    $var = StringTrimRight($arUser[$i], 1) & ")"
    $OutString &= StringReplace($var, ":", "(") & @LF
    Next
    MsgBox(0, '', $OutString)

    [/autoit]
  • Aktion bei TrayTip-Klick

    • BugFix
    • 2. April 2007 um 21:17

    Also TrayTip hat keinen Rückgabewert. TraySetToolTip gibt zumindest bei Erfolg '1' zurück.
    Soweit ich sehen kann, wird aber durch ein Klick auf den Tip kein Ereignis ausgelöst.
    Etwas um die Ecke: Du kannst doch ermitteln, in welchem Sektor des Monitors der TrayTip erscheint. Frage ab, ob Übereinstimmung mit Mausposition und Klick ==> dann hast du dein Ereignis.

  • TreeView auslesen/verarbeiten

    • BugFix
    • 2. April 2007 um 20:55

    Holger hat mal ein schönes Tristate-Treeview erstellt. Das häng ich mal an.
    Damit hatte ich auch schon mal ein Installationsscript begonnen. Ein bischen farbig gestaltet.

    Spoiler anzeigen
    [autoit]

    ; ----------------------------------------------------------------------------
    ;
    ; Script: Tristate TreeView
    ; Version: 0.2
    ; AutoIt Version: 3.1.1.128 Beta min.needed!
    ; Author: Holger Kotsch
    ;
    ; Script Function:
    ; Demonstrates a tristate treeview control -> just more like a fifthstate treeview ;)
    ;
    ; 5 item checkbox! states are usable:
    ; (can only used with TreeView with TVS_CHECKBOXES-style)
    ; - $GUI_CHECKED
    ; - $GUI_UNCHECKED
    ; - $GUI_INDETERMINATE
    ; - $GUI_DISABLE + $GUI_CHECKED
    ; - $GUI_DISABLE + $GUI_UNCHECKED
    ;
    ; ----------------------------------------------------------------------------

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

    #include <GUIConstants.au3>
    #include "TristateTreeViewLib.au3"
    #include <GuiTreeView.au3>
    Opt("GUIOnEventMode", 1)
    ; You could also use a integrated bmw (with ResourceHacker)
    ; Please see TristateTreeViewLib.au3 in line 257 (LoadStateImage)
    ; !!! You must not compiled it full with UPX, just use after compiling: upx.exe --best --compress-resources=0 xyz.exe !!!
    ; If you choose another reource number then 170 you have to change the LoadStateImage() function
    ;
    ; Userfunction My-WM_Notify() is registered in TristateTreeViewLib.au3 !
    ;
    ; You can get other check bitmaps also together with freeware install programs like i.e. NSIS
    ; it must have 5 image states in it:
    ; 1.empty, 2.unchecked, 3.checked, 4.disabled and unchecked, 5.disabled and checked

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

    Global $sStateIconFile = @ScriptDir & "\simple.bmp"
    ;~ Global $sStateIconFile = @ScriptDir & "\modern.bmp"

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

    $gui = GUICreate("Treeview - Install Script", 400, 400, -1, -1, Default, $WS_EX_TOPMOST)
    GUISetOnEvent($GUI_EVENT_CLOSE, "guiClose")
    GUISetBkColor(0xFFD700, $gui)
    GUISetIcon(@WindowsDir & "\system32\shell32.dll", 205)
    $nTV = GUICtrlCreateTreeView(10, 10, 380, 360, BitOr($TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_CHECKBOXES), $WS_EX_CLIENTEDGE)
    LoadStateImage($nTV, $sStateIconFile)
    _GUICtrlTreeViewSetBkColor ($nTV, 0x191970)
    _GUICtrlTreeViewSetTextColor($nTV, 0xFFFAF0)
    _GUICtrlTreeViewSetLineColor ($nTV, 0xFFD700)
    $nItem1 = GUICtrlCreateTreeViewItem("Messenger", $nTV)
    GUICtrlSetColor(-1, 0xFF0000)
    $nItem2 = GUICtrlCreateTreeViewItem("Internet", $nTV)
    GUICtrlSetColor(-1, 0xFF00FF)
    $nItem3 = GUICtrlCreateTreeViewItem("Tools", $nTV)
    GUICtrlSetColor(-1, 0xFF8C00)
    $nItem4 = GUICtrlCreateTreeViewItem("Mediaplayer", $nTV)
    GUICtrlSetColor(-1, 0x00BFFF)
    $nSubItem1 = GUICtrlCreateTreeViewItem("InterCafe Client", $nItem1)
    $nSubItem2 = GUICtrlCreateTreeViewItem("ICQ 5.1", $nItem1)
    $nSubItem3 = GUICtrlCreateTreeViewItem("AOL Messenger", $nItem1)
    $nSubItem4 = GUICtrlCreateTreeViewItem("YAHOO Messenger", $nItem1)
    $nSubItem5 = GUICtrlCreateTreeViewItem("WinLive Messenger", $nItem1)
    $nSubItem6 = GUICtrlCreateTreeViewItem("Trillian 3.1", $nItem1)
    $nSubItem7 = GUICtrlCreateTreeViewItem("Skype", $nItem1)
    $nSubItem8 = GUICtrlCreateTreeViewItem("TeamSpeak", $nItem1)
    $nSubItem9 = GUICtrlCreateTreeViewItem("TS Overlay", $nItem1)
    $nSubItem10 = GUICtrlCreateTreeViewItem("Opera", $nItem2)
    $nSubItem11 = GUICtrlCreateTreeViewItem("Mozilla Firefox 2", $nItem2)
    $nSubItem12 = GUICtrlCreateTreeViewItem("NetFramework 2.0", $nItem2)
    $nSubItem13 = GUICtrlCreateTreeViewItem("LimeWire 4.12.0", $nItem2)
    $nSubItem14 = GUICtrlCreateTreeViewItem("Usenext", $nItem2)
    $nSubItem15 = GUICtrlCreateTreeViewItem("Adobe Reader", $nItem3)
    $nSubItem16 = GUICtrlCreateTreeViewItem("WinRar", $nItem3)
    $nSubItem17 = GUICtrlCreateTreeViewItem("GoBack", $nItem3)
    $nSubItem18 = GUICtrlCreateTreeViewItem("Ahead Nero 7.5", $nItem3)
    $nSubItem19 = GUICtrlCreateTreeViewItem("OpenOffice 2.0", $nItem3)
    $nSubItem20 = GUICtrlCreateTreeViewItem("VLC Player", $nItem4)
    $nSubItem21 = GUICtrlCreateTreeViewItem("QuickTime Player", $nItem4)
    $nSubItem22 = GUICtrlCreateTreeViewItem("RealPlayer", $nItem4)
    $nSubItem23 = GUICtrlCreateTreeViewItem("Windows Media Player 11", $nItem4)
    $nSubItem24 = GUICtrlCreateTreeViewItem("FlashPlayer", $nItem4)
    $text1 = "Ausklappen"
    $text2 = "Einklappen"
    $Btn_expand = GUICtrlCreateButton($text1, 30, 375, 90, 20)
    GUICtrlSetOnEvent(-1, "_expand")
    $text3 = "Alle wählen"
    $text4 = "Wahl aufheben"
    $Btn_all = GUICtrlCreateButton($text3, 280, 375, 90, 20)
    GUICtrlSetOnEvent(-1, "_all")
    $Btn_Info = GUICtrlCreateButton("Info zum Programm", 150, 375, 100, 20)
    GUICtrlSetOnEvent(-1, "_info")

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

    ; GUI Info
    $InfoGUI = GUICreate("", 333, 174, -1, -1, $WS_POPUP, $WS_EX_TOPMOST)
    GUISetBkColor(0xFFD700, $InfoGUI)
    $Edit1 = GUICtrlCreateLabel("", 5, 5, 320, 161, $ES_CENTER)
    GUICtrlSetBkColor(-1, 0xFFD700)

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

    GUISetState(@SW_SHOW, $gui)
    $expand = 0
    $switch = 0

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

    While 1
    Sleep(100)
    WEnd

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

    Func _all()
    If $switch = 0 Then
    SelectFull()
    $switch = 1
    GUICtrlSetData($Btn_all, $text4)
    Else
    ReSelect()
    $switch = 0
    GUICtrlSetData($Btn_all, $text3)
    EndIf
    EndFunc

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

    Func _expand()
    If $expand = 0 Then
    Ausklappen()
    $expand = 1
    GUICtrlSetData($Btn_expand, $text2)
    Else
    Einklappen()
    $expand = 0
    GUICtrlSetData($Btn_expand, $text1)
    EndIf
    EndFunc

    Func _info()
    $h_item = GUICtrlSendMsg($nTV, $TVM_GETNEXTITEM, $TVGN_CARET, 0)
    $val = _GUICtrlTreeViewGetText($nTV, $h_item)
    Switch $val
    Case "InterCafe Client"
    GUICtrlSetData($Edit1, $val & @LF & "xhcjvkblnk oüwpqem+vc+" & @LF & " üewq+mvc +w p,mc +wpoidülöe" & @LF & "klfrsdzfghkjl")
    GUISetState(@SW_SHOW, $InfoGUI)
    Sleep(4000)
    GUISetState(@SW_HIDE, $InfoGUI)
    GUICtrlSetData($Edit1, "")
    Case "ICQ 5.1"
    GUICtrlSetData($Edit1, $val & @LF & "5551111" & @LF & " üewq+mvc +w p,mc +wpoidülöe" & @LF & "klfrsdzfghkjl")
    GUISetState(@SW_SHOW, $InfoGUI)
    Sleep(4000)
    GUISetState(@SW_HIDE, $InfoGUI)
    GUICtrlSetData($Edit1, "")
    EndSwitch
    EndFunc

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

    Func guiClose()
    Exit
    EndFunc

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

    Func SelectFull()
    For $i = $nItem1 To $nItem4
    MyCtrlSetItemState($nTV, $i, $GUI_CHECKED)
    Next
    For $i = $nsubItem1 To $nsubItem24
    MyCtrlSetItemState($nTV, $i, $GUI_CHECKED)
    Next
    EndFunc

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

    Func ReSelect()
    For $i = $nItem1 To $nItem4
    MyCtrlSetItemState($nTV, $i, $GUI_UNCHECKED)
    Next
    For $i = $nsubItem1 To $nsubItem24
    MyCtrlSetItemState($nTV, $i, $GUI_UNCHECKED)
    Next
    EndFunc

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

    Func Ausklappen()
    _GUICtrlTreeViewExpand($nTV)
    EndFunc

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

    Func Einklappen()
    _GUICtrlTreeViewExpand($nTV, 0)
    EndFunc

    [/autoit]

    Dateien

    tristatestuff.zip 6,27 kB – 592 Downloads Treeview-InstallScript.au3 6,35 kB – 608 Downloads
  • Bildgröße GuiCtrlCreatePic(...)

    • BugFix
    • 1. April 2007 um 17:11

    110 x 110 pixel (BildInfo)
    oder was willst du wissen?

  • ControlClick auf unbekanntes control

    • BugFix
    • 1. April 2007 um 16:31

    Keine weiteren Infos mit AutoIt Window Info - Tool ?

    - Programmname "xyz.exe" läuft
    - Fenster existiert und ist aktiv/inaktiv
    - welches Control soll betätigt werden

  • HEX-Code Farbtabelle

    • BugFix
    • 1. April 2007 um 15:51
    Zitat

    Dürfte ich erfahren, warum du die Übernahme in die Zwischenablage nicht mit der Funktion "GUICtrlCreateContextMenu" realisiert hast. Dann hättest du auch die Probleme mit der Farbe nicht gehabt (ich habe es gerade bei mir ausprobiert).


    Ja, du darfst. :)
    1. Weil der Mensch ein Gewohnheitstier und grundsätzlich faul ist. :D
    Ich hatte in einer anderen Anwendung ein ähnliches Kontextmenü bereits verwendet - hab es jetzt nur etwas angepaßt.
    2. Das Standard-Kontextmenü kann ich nicht (ohne weiteres) so gestalten, wie mein jetziges (Label mit Farbanzeige, Hintergrundfarbe)

    EDIT

    Noch eine optische Korrektur. Wenn ihr Gridlines angezeigt haben möchtet, muß die ListView Definition, wie folgt aussehen:

    [autoit]

    $ListView1 = GUICtrlCreateListView("Farbe|Name|HEX-Code", 0, 40, 420, 642, $LVS_SINGLESEL)
    _GUICtrlListViewSetColumnWidth(-1, 0, 135)
    _GUICtrlListViewSetColumnWidth(-1, 1, 135)
    _GUICtrlListViewSetColumnWidth(-1, 2, 128)
    GUICtrlSendMsg($ListView1, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)

    [/autoit]

    Ist aber Geschmackssache.

  • Nach $GUI_EVENT_SECONDARYDOWN Fehler in Listview

    • BugFix
    • 1. April 2007 um 15:39

    Ja, danke snoozer.
    Das ist der korrekte Weg. Der Teufel steckt,wie üblich, im Detail. :D

    Bitte auch in der Esc-Funktion ergänzen:

    Spoiler anzeigen
    [autoit]

    Func bCopyToClick()
    $strCopy = '$' & $col & " = " & $hex
    ClipPut($strCopy)
    GUISetState(@SW_HIDE, $GUICopy)
    ToolTip("Es wurde:" & @CRLF & @CRLF & @TAB & $strCopy & @CRLF & @CRLF & "in die Zwischenablage kopiert.", @DesktopWidth/2, @DesktopHeight/2, "Zwischenablage", 1, 1)
    Sleep(5000)
    ToolTip("")
    GUISetState(@SW_RESTORE,$Form1)
    EndFunc

    Func bEscCopyToClick()
    GUISetState(@SW_HIDE, $GUICopy)
    GUISetState(@SW_RESTORE,$Form1)
    EndFunc

    [/autoit]
  • Nach $GUI_EVENT_SECONDARYDOWN Fehler in Listview

    • BugFix
    • 1. April 2007 um 11:24

    Hi,
    ich habe
    hier meine HEX-Code Tabelle eingestellt.
    Dabei besteht noch folgendes Problem:
    Die Liste kann in drei verschiedenen Sortierfolgen angezeigt werden. Da kann ich auch beliebig zwischen wechseln - funktioniert.
    Wurde aber das Ereignis "$GUI_EVENT_SECONDARYDOWN" ausgewertet (Kontextmenü zum Kopieren) und ich will anschließend erneut eine andere Sortierung wählen, wird zwar die richtige Reihenfolge aufgelistet aber die Befehle für Setzen der Hintergrund- und Fontfarbe der Items werden nicht ausgeführt.

    Spoiler anzeigen
    [autoit]

    ;.....
    Dim $arColors[140][5] ; 0=Name, 1=Hex, 2=Sortier-Index Sättigung/Farbton, 3=Sortier-Index Helligkeit, 4= wenn 1 Schrift weiß
    ;.....
    $Form1 = GUICreate("HEX-Code Farbtabelle", 415, 683, -1, -1)
    GUISetOnEvent($GUI_EVENT_CLOSE, "AForm1Close")
    GUISetOnEvent($GUI_EVENT_SECONDARYDOWN, "SpecialEvents")
    ;.....
    Func rNameClick()
    _GUICtrlListViewDeleteAllItems($ListView1)
    _SetData(0)
    EndFunc

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

    Func rSattClick()
    _GUICtrlListViewDeleteAllItems($ListView1)
    _SetData(2)
    EndFunc

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

    Func rHellClick()
    _GUICtrlListViewDeleteAllItems($ListView1)
    _SetData(3)
    EndFunc

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

    Func _SetData($SortIndx)
    _ArraySort($arColors, 0, 0, 0, 5, $SortIndx)
    For $i = 0 To UBound($arColors)-1
    $arItem[$i] = GUICtrlCreateListViewItem( "|" &$arColors[$i][0] & "|0x" & Hex($arColors[$i][1],6), $ListView1)
    If $arColors[$i][4] = 1 Then GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetBkColor(-1,$arColors[$i][1])
    Next
    EndFunc
    ;.....
    Func SpecialEvents()
    If @GUI_CTRLID = $GUI_EVENT_SECONDARYDOWN Then
    If ControlGetFocus($Form1, "HEX-Code Color Table") = "SysListView321" Then
    $ind = _GUICtrlListViewGetCurSel($ListView1)
    $col = _GUICtrlListViewGetItemText($ListView1, $ind, 1)
    $hex = _GUICtrlListViewGetItemText($ListView1, $ind, 2)
    If $arColors[$ind][4] = 1 Then
    GUISetBkColor($PaleGreen, $GUICopy)
    GUICtrlSetColor($lbShowColor, 0xFFFFFF)
    Else
    GUISetBkColor($Navy, $GUICopy)
    GUICtrlSetColor($lbShowColor, 0x000000)
    EndIf
    GUICtrlSetBkColor($lbShowColor, $arColors[$ind][1])
    GUICtrlSetData($lbShowColor, $arColors[$ind][0])
    GUISetState(@SW_SHOW, $GUICopy)
    EndIf
    EndIf
    EndFunc
    ;.....

    [/autoit]


    :hm:

    EDIT

    So, hab nun auch versucht mit "WM_NOTIFY event handler" über SingleClick, DoubleClick oder RightClick auszuwerten.
    Es ist völlig Banane, welches Ereignis ich auswerte - hinterher funktioniert die Farbsetzung nicht mehr. :weinen:

    EDIT2

    Ha, ich habs gefunden.
    Ist zwar für mich nicht erklärbar warum es so ist, aber hier liegt der Fehler:

    $arItem[$i] = GUICtrlCreateListViewItem( "|" &$arColors[$i][0] & "|0x" & Hex($arColors[$i][1],6), $ListView1)
    If $arColors[$i][4] = 1 Then GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetBkColor(-1,$arColors[$i][1])

    Mit -1 beziehe ich mich auf das zuvor erstellte ListViewItem.
    Aber das versagt nach einem Event. Setze ich dafür $arItem[$i] ein, dann funktioniert es!

  • HEX-Code Farbtabelle

    • BugFix
    • 31. März 2007 um 00:16

    Hi,
    da heute meine Lieblingswebsite mit Farbcodes down war, habe ich mir jetzt selbst eine Tabelle erstellt.
    Farbe in der Liste markieren, per Rechtsklick Kontextmenü aufrufen. Es wird dann der String "$farbname = hexcode" in die Zwischenablage kopiert.

    EDIT

    Ich hab die Tabelle noch etwas umgestaltet, die Farben werden jetzt wahlweise sortiert nach:
    - Name
    - Sättigung oder
    - Helligkeit

    Das vereinfacht etwas die Auswahl.

    EDIT 14.01.08

    Der Code ist jetzt der AutoIt-Version 3.2.10.0 angepaßt.

    Edit 10.07.2008
    Anpassung an Version 3.2.12.0 erfolgt.

    Edit 11.07.2008
    Habe Oscars Anregung aufgegriffen (wegen Flackern).
    RGB wird mit angezeigt.
    Außerdem meinen Farbmixer, den ich in einem anderen Programm hatte, mit integriert. Dieser hat auch einen ColorPicker, heißt hierdrin: Snap Color.

    Edit 13.07.2008
    Jetzt ist auch ein ordentliches "Zielkreuz" vorhanden um eine Farbe aus irgendeinem Fenster aufzugreifen.

  • Objekte unter AutoIt

    • BugFix
    • 30. März 2007 um 19:03

    Noch was schönes: Das Script_Center

    Sieht aus, wie die AutoIt-Hilfe. Thema anklicken und das fertige (WMI)-Script steht zur Verfügung. Da braucht man nicht erst suchen, was ich denn mit welcher Methode machen kann.

    EDIT
    Hab noch ein Tool gefunden, vergleichbar mit WMICreator: Scriptomatic 2.0 .
    Welches Tool man verwendet ist sicher Geschmackssache, aber lest mal die ReadMe bei Scriptomatic. Ein echter Brüller. :D

    EDIT2
    Manchmal kann man sich nur selber prügeln :hammer:
    Ich habe grad in Scriptomatic noch eine Sektion für AutoIt eingebunden (funzt auch prima). Die Arbeit hätte ich mir sparen können - Es gibt auch eine AutoIt-Version davon.
    Den Link hatte übrigens ytwinky schon mal eingestellt.
    Also hier die direkte Umsetzung für und mit AutoIt: AutoIt Script-o-matic von Jon

    Dateien

    script_center.zip 1,56 MB – 612 Downloads Scriptomatic.zip 311,96 kB – 653 Downloads
  • AVIs auf Tabs einer GUI ändern

    • BugFix
    • 30. März 2007 um 18:14

    So gehts, du mußt das Tab neu erstellen:

    [autoit]


    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    GUICtrlDelete($Avi1)
    GUICtrlDelete($TabSheet2)
    $TabSheet2 = GUICtrlCreateTabItem("Tab 2")
    $Avi1 = GUICtrlCreateAvi("shell32.dll", 170, 16, 36, 272, 60, BitOR($ACS_TRANSPARENT,$ACS_AUTOPLAY))
    EndSwitch
    WEnd

    [/autoit]
  • Objekte unter AutoIt

    • BugFix
    • 30. März 2007 um 17:54

    Hi,
    nach langem Zögern habe ich mich nun doch mal überwunden und mich etwas intensiver mit der Nutzung von Objekten unter AutoIt befasst.
    Und ich war angenehm überrascht, wie simpel damit etliche Probleme zu lösen sind. Der große Vorteil auch für alle jene, die bisher recht wenig mit Objekten-Klassen-Methoden am Hut haben: MS bietet mit dem Gratistool "WMI Code Generator" eine top Unterstützung. Man kann damit den WMI-Code generieren und dann fast 1:1 in AutoIt umsetzen.

    Mal ein Bsp., Überwachen ob "Notepad.exe" gestartet wird und dann eine Meldung ausgeben:

    WMI Code

    Code
    strComputer = "."
    Set objSWbemServices = GetObject("winmgmts:" & _
        "{impersonationLevel=impersonate}!" & _
        "\\" & strComputer & "\root\cimv2")
    
    
    Set objEventSource = objSWbemServices.ExecNotificationQuery( _
        "SELECT * FROM __InstanceCreationEvent " & _
        "WITHIN 10 " & _
        "WHERE TargetInstance " & _
        "ISA 'Win32_Process' " & _
        "AND TargetInstance.Name = 'notepad.exe'")
    
    
    Set objEventObject = objEventSource.NextEvent()
    Wscript.Echo "Notepad.exe wurde soeben gestartet."
    Alles anzeigen


    und dasselbe in AutoIt

    [autoit]


    $strComputer = "."
    $objSWbemServices = ObjGet("winmgmts:" & _
    "{impersonationLevel=impersonate}!" & _
    "\\" & $strComputer & "\root\cimv2")
    $objEventSource = $objSWbemServices.ExecNotificationQuery( _
    "SELECT * FROM __InstanceCreationEvent " & _
    "WITHIN 10 " & _
    "WHERE TargetInstance " & _
    "ISA 'Win32_Process' " & _
    "AND TargetInstance.Name = 'Notepad.exe'")
    $objEventObject = $objEventSource.NextEvent()
    MsgBox(0, '', "Notepad wurde soeben gestartet.")

    [/autoit]

    Der WMICodeCreator listet alle auf dem PC zu findenden Klassen auf, mit den zur Verfügung stehenden Eigenschaften. Ein Mausklick und der Code ist generiert. Und mit wenigen Änderungen ist er dann in AutoIt verfügbar.

    Der Vorteil, den ich hier sehe ist, dass man somit wesentlich tiefer in die Systemereignisse "eintauchen" kann bzw. einige Aufgaben sich einfacher lösen lassen als mit anderen AutoIt-Mitteln.
    Ich bin mal so frei und häng den WMICodeCreator mit an - das erspart euch den GenuineCheck. ;)
    Übrigens - das Proggi bedarf keiner Installation. Entpacken und ausführen.

    Dateien

    WMICodeCreator.zip 124,29 kB – 681 Downloads
  • Fenster erkennen bei wechselndem Titel

    • BugFix
    • 30. März 2007 um 14:55

    Dann löse es mit Shell-Object:

    [autoit]

    $oShell = ObjCreate("shell.application") ; Explorer als Shell-Object
    $oShellWindows = $oShell.windows ; Auflistung aller offenen Shell-Windows

    If Isobj($oShellWindows) Then
    $string = ""
    For $Window In $oShellWindows
    $String &= $Window.LocationName & @CRLF
    Next
    Msgbox(0,"Shell Windows","Es existieren folgende Explorer-Fenster:" & @CRLF & @CRLF & $String)
    Endif
    Exit

    [/autoit]
  • Kontextmenü für Edit-Control deaktivieren

    • BugFix
    • 30. März 2007 um 10:32

    Hallo,
    ich möchte für ein Editcontrol ein eigenes Kontextmenü erstellen - soweit auch kein Problem.
    Leider hat das Editcontrol standardmäßig ein Kontextmenü:
    [Blockierte Grafik: http://img-up.net/img/EditKontex-gPq.PNG]

    Weiß jemand, wie ich das deaktivieren kann?

    EDIT

    OK, geht leider nicht. *traurig-bin*

  • Fenster erkennen bei wechselndem Titel

    • BugFix
    • 29. März 2007 um 22:32

    WinGetClassList ( "title" [, "text"] )

  • cmd aus autoit aurfufen=> Problem

    • BugFix
    • 29. März 2007 um 22:29

    Nutze doch das Flag STDOUT der Funktion Run und lies die Rückgabewerte mit StdoutRead() aus.
    Bsp. ungetestet

    Spoiler anzeigen
    [autoit]

    #include <Constants.au3>

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

    $foo = Run(@ComSpec & ' /C rar e "' & $TYP1 & '" "' & $sel2_folder & '" "' & $sel_folder & '"', @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)

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

    While 1
    $line = StdoutRead($foo)
    If @error Then ExitLoop
    MsgBox(0, "STDOUT read:", $line)
    Wend

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

    While 1
    $line = StderrRead($foo)
    If @error Then ExitLoop
    MsgBox(0, "STDERR read:", $line)
    Wend

    [/autoit]
  • GuiCtrlCreateLabel mit Vorgabe hidden

    • BugFix
    • 29. März 2007 um 20:33

    Geht doch problemlos, ohne dass das Label beim Erstellen sichtbar wird:

    [autoit]

    Func _LabelCreate()
    $label = GUICtrlCreateLabel("LABEL", 100, 100)
    GUICtrlSetState(-1,$GUI_HIDE)
    EndFunc

    [/autoit]

    Falls du das sehen kannst bist du Supermann. :rofl:

    Und seit wann ist es unsaubere Programmierung, wenn ich ein Control erstelle und im nächste Schritt dessen Eigenschaften definiere ?
    Dieser Logik kann ich nicht folgen.

  • GuiCtrlCreateLabel mit Vorgabe hidden

    • BugFix
    • 28. März 2007 um 20:59

    Wenn du deine GUI definierst kannst du doch sofort nach der Ctrl-Erstellung den Status setzen:

    GUICreate()
    GuiCtrlCreate....
    GUICtrlSetState(-1, $GUI_HIDE)

    Edit Schon wieder wer schneller :weinen:

  • array durchsuchen

    • BugFix
    • 28. März 2007 um 20:45

    Hier mal ein einfaches Beispiel. Voraussetzung ist, dass hier das Array1 die fixen Werte enthält und die variablen Werte im Array2 sind.

    Spoiler anzeigen
    [autoit]

    Dim $arArray1[10], $arArray2[10], $Unterschied = ""

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

    $arArray1[0] = "a"
    $arArray1[1] = "b"
    $arArray1[2] = "c"
    $arArray1[3] = "d"
    $arArray1[4] = "e"

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

    $arArray2[0] = "a"
    $arArray2[1] = "b"
    $arArray2[2] = "c"
    $arArray2[3] = "d"
    $arArray2[4] = "e"
    $arArray2[5] = "f"
    $arArray2[6] = "g"

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

    For $i = 0 To UBound($arArray1)-1
    If $arArray1[$i] <> $arArray2[$i] Then $Unterschied &= $arArray2[$i] & "|"
    Next

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

    MsgBox(0, '', $Unterschied)

    [/autoit]

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™