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

  • Programm immer On-Top?

    • BugFix
    • 17. März 2009 um 11:27

    WinSetOnTop ( "title", "text", flag )

    Allerdings hast du nie die Garantie, dass dein Fenster on top ist. Wenn ein anderes Programm seinen Fenstern den on top Status zuweist, ist dieses vorn. Immer dasjenige Fenster, das als letztes den on top Status erhalten hat, ist oben.

  • Software Raid überwachen

    • BugFix
    • 16. März 2009 um 22:32

    Ist es nicht wesentlich einfacher, die sowieso generierten Windowsmeldungen im Ereignisprotokoll auszuwerten und entsprechend zu reagieren.?

  • Linie

    • BugFix
    • 16. März 2009 um 18:59

    ..oder erstelle eine Group mit 1 Pixel Höhe.

  • Simplen Parameter übergeben

    • BugFix
    • 16. März 2009 um 18:45
    [autoit]

    HotKeySet("{g}", "Toggle")
    HotKeySet("{Pause}","Quit")

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

    Global $i = 0

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

    While 1
    Sleep(50)
    WEnd

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

    Func Toggle()
    If $i = 0 Then
    $i = 1
    Return _xyz()
    Else
    $i = 0
    Return _zyx()
    EndIf
    EndFunc

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

    Func _xyz()
    MsgBox(0, '', 'xyz läuft')
    EndFunc

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

    Func _zyx()
    MsgBox(0, '', 'zyx läuft')
    EndFunc

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

    func Quit()
    Exit
    EndFunc

    [/autoit]
  • Wo sind ö/ä/ü bei _IsPressed?

    • BugFix
    • 16. März 2009 um 08:20

    Natürlich gibt es auch Ä, Ö, Ü - eben nur auf den Symbolen, die von der englischen Tastatur darauf liegen:

    [autoit]

    #Include <Misc.au3>
    HotKeySet('#!e', '_end')

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

    While 1
    Sleep(10)
    If _IsPressed( 'DE' ) Then
    MsgBox(0, '', 'Ä gedrückt')
    ElseIf _IsPressed( 'C0' ) Then
    MsgBox(0, '', 'Ö gedrückt')
    ElseIf _IsPressed( 'BA' ) Then
    MsgBox(0, '', 'Ü gedrückt')
    EndIf
    WEnd

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

    Func _end()
    Exit
    EndFunc

    [/autoit]

    Edit:
    Hier mal die Codes für alle Sonderzeichentasten der Deutschen und Schweizer Tastatur

    Code
    Code	DE	CH
    BA	Ü	Ü
    BB	+	
    BC	,	,
    BD	-	-
    BE	.	.
    BF	#	§
    C0	Ö	_
    DB	ß	'
    DC	^	Ä
    DD	´	^
    DE	Ä	Ö
    DF		$
    E2	<	<
    Alles anzeigen
  • Icon aus exe/dll extrahieren

    • BugFix
    • 15. März 2009 um 17:56

    Warum so kompliziert? - Nimm den Reshacker, dann klappts auch mit dem Nachbarn.. ^^

  • F1 + F2?!

    • BugFix
    • 15. März 2009 um 10:46

    Danke an alle User, die sich hier so vehement für die Einhaltung der Forumregeln engagieren. :thumbup:

    @Aichi:
    Ich vermute mal, du willst gar nicht spammen, sondern nur einen Tastenbefehl mit Send mehrfach abschicken.
    Aber warum stellst du dich dann selbst ins Abseits und sagst, du willst einen Spammer bauen ? :thumbdown:
    Dann mußt du halt mit den Reaktionen leben.
    In Abwandlung eines Sprichwortes gilt auch hier:
    "Vor Inbetriebnahme der Tastatur - Gehirn einschalten!" :whistling:

  • ListView - SubItem einzeln färben/formatieren, Finale Version! (v1.3)

    • BugFix
    • 14. März 2009 um 23:26

    Erweitertes Bsp. zur Nutzung mehrerer ListView in einer GUI in Post 1.

  • Funktionssammlung OpenOffice Calc

    • BugFix
    • 14. März 2009 um 12:47

    Hi Andy,
    feine Arbeit erstmal. :thumbup:
    Was ich vielleicht noch verändern würde:
    - Returns von allen Funktionen (z.B. von Init das Objekt zurückgeben lassen und dieses auch als ersten Parameter in allen anderen Funktionen führen, so wie in den Word/Excel-UDF. Ermöglicht dann auch das Errorhandling)
    - Methoden in der korrekten Syntax (Groß-/Kleinschreibung) verwenden. Zum Einen übersichtlicher, zum Anderen werden u.U. sonst Befehle nicht erkannt.

    Ansonsten hab ich nix zu 'meckern' :D - Also weiter so, es gibt ja noch OO -Write, Draw... :rolleyes:

  • [Spezial] USB-Gerät ansprechen

    • BugFix
    • 13. März 2009 um 17:51
    Zitat von Michi26206

    Aber mein "Ausbilder" hat mir nen passenden Wiederstand mitgegeben und gesagt das passt.


    Einen, der für alles paßt ?
    Also du brauchst bei 4,6V einen Widerstand von 150 Ohm (für grüne LED würde 125 reichen - aber den gibts nicht).
    Bei 4,9V brauchst du für rote LED: 220 Ohm, für grüne LED 150 Ohm. ;)

  • [Spezial] USB-Gerät ansprechen

    • BugFix
    • 13. März 2009 um 16:38
    Zitat von Michi26206

    Und wo bekomme ich die oben genannte ftd2xx.dll?


    Die wird automatisch installiert, wenn du die Treiberinstallation für den Adapter durchführst. Ist also auf der Treiber-CD zum Adapter dabei. Solltest du die verschlampt haben :D, melde dich, dann schick ich sie dir.
    FTDI produziert die einzigen Chips, die ich entdeckt habe, die tatsächlich bidirektional arbeiten und somit wirklich eine RS232-Schnittstelle emulieren (daher auch der Preisunterschied bei den Adaptern, Billgschrott ab 3 €; gute FTDI ca. 50 €).

  • dauer eines Maus und Tastaturtasten klicks anzeigen lassen

    • BugFix
    • 13. März 2009 um 16:14
    Zitat von bandido1

    ich frag mich auch wie er auf keylogger kommt.


    Weil er den Lösungsansatz kennt. Und dieser kann halt ohne großen Aufwand als Keylogger mißbraucht werden.

    Im Übrigen ist es doch auch völlig sinnlos, ermitteln zu wollen, wie lange eine Taste gedrückt wird. Wenn du den Finger draufläßt wird das so interpretiert, als ob du die Taste erneut gedrückt hast. ;)

  • Trusted Scripts

    • BugFix
    • 11. März 2009 um 23:08

    Also aus meiner Sicht ist es so:
    EXE-Dateien können zwar Schadcode enthalten, aber der Wunsch Quellcode zu posten hat einen eher profanen Grund. Einer EXE kann ich nicht entnehmen, wie Funktionen aufgebaut sind, durch welche Routinen Probleme gelöst werden. Ergo: Ich habe keinen Lerneffekt. Und ähnlich wird es wohl auch anderen gehen. (hoffe ich zumindest ;) )

  • Seagate-Festplatten

    • BugFix
    • 11. März 2009 um 21:57

    Hi, habe heute in der Firma mal wieder die Ereignisanzeige auf dem Storagemanager unseres Servers durchgesehen - und oh Schreck: mein Raid1 ist 'degraded'. Also hab ich mal schnell nachgeschaut, ob nicht etwa Seagate-Platten verbaut wurden. Und in schönster Murphy-Gesetzmäßigkeit ist dies natürlich der Fall. Das die Seriennummer zu den betroffenen gehört brauch ich wohl nicht extra betonen.
    Hier kann ich kein FW-Update riskieren. Das mag privat gehen, aber bei den Firmendaten muß es sicher sein. Seagate fliegt raus und ich werd wohl zu meinen (bisher noch nie versagenden) Western Digital zurückkehren.

  • Feststellen ob ein Anwender angemeldet ist

    • BugFix
    • 10. März 2009 um 23:38

    Hier die Lösung in AutoIt:

    Spoiler anzeigen
    [autoit]

    ; Generated by AutoIt Scriptomatic

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

    $wbemFlagReturnImmediately = 0x10
    $wbemFlagForwardOnly = 0x20
    $colItems = ""
    $strComputer = "localhost"

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

    $Output=""
    $Output = $Output & "Computer: " & $strComputer & @CRLF
    $Output = $Output & "==========================================" & @CRLF
    $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_LoggedOnUser", "WQL", _
    $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

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

    If IsObj($colItems) then
    For $objItem In $colItems
    $Output = $Output & "Antecedent: " & $objItem.Antecedent & @CRLF
    $Output = $Output & "Dependent: " & $objItem.Dependent & @CRLF
    if Msgbox(1,"WMI Output",$Output) = 2 then ExitLoop
    $Output=""
    Next
    Else
    Msgbox(0,"WMI Output","No WMI Objects Found for class: " & "Win32_LoggedOnUser" )
    Endif

    [/autoit]
  • Arrays lernen

    • BugFix
    • 9. März 2009 um 22:28
    Zitat von Commander21

    Ich sagte doch bereits, das mir das Tutorial nich viel geholfen hat.


    Hmm.. :S Vielleicht kannst du auch sagen, wieso das Tut dir nicht hilft. Dann könnte ich vielleicht noch Verbesserungen vornehmen.

  • Prozeßvergleich

    • BugFix
    • 8. März 2009 um 20:03
    Zitat von blubbstar

    Läuft das eigentlich auch auf Vista?


    Kann ich nicht sicher sagen, bin bekennender Vista-Verweigerer. :rolleyes:

  • Prozeßvergleich

    • BugFix
    • 8. März 2009 um 14:45

    Hi,
    im Hilfeforum tauchte die Frage auf, wie man feststellen kann, ob ein neuer Prozeß hinzugekommen ist.
    Ich hab das mal in ein Bsp. verpackt. Hier wird es mit HotKey (WIN+ALT+P) aufgerufen. Läßt sich im Skript zum Bsp. mit AdlibEnable einbinden.

    Spoiler anzeigen
    [autoit]

    Global $oList_old = ObjCreate("Scripting.Dictionary")
    Global $oList_cur = ObjCreate("Scripting.Dictionary")
    Global $oList_new = ObjCreate("Scripting.Dictionary")
    Global $aProcess

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

    HotKeySet('#!p', '_showP')
    HotKeySet('#!e', '_ende')

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

    While True
    Sleep(50)
    WEnd

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

    Func _showP()
    Local $ar = _GetNewProcess(), $str = ''
    If $ar[0][0] = -1 Then Return MsgBox(0, 'Neue Prozesse', 'Keine neuen Prozesse.')
    For $i = 0 To UBound($ar) -1
    $str &= $ar[$i][1] & @TAB & $ar[$i][0] & @CRLF
    Next
    Return MsgBox(0, 'Neue Prozesse', $str)
    EndFunc

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

    Func _ende()
    Exit
    EndFunc

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

    Func _GetNewProcess()
    $aProcess = ProcessList()
    For $i = 1 To UBound($aProcess) -1
    $oList_cur.Add($aProcess[$i][1], $aProcess[$i][0])
    Next
    If $oList_old.Count <> 0 Then
    If $oList_new.Count > 0 Then $oList_new.RemoveAll
    For $process In $oList_cur.Keys
    If Not $oList_old.Exists($process) Then $oList_new.Add($process, $oList_cur.Item($process))
    Next
    $oList_old.RemoveAll
    Else
    _CopyList($oList_cur, $oList_new)
    EndIf
    _CopyList($oList_cur, $oList_old)
    $oList_cur.RemoveAll
    Local $aOut[1][2] = [[-1]], $i = 0
    If $oList_new.Count > 0 Then
    ReDim $aOut[$oList_new.Count][2]
    For $process In $oList_new.Keys
    $aOut[$i][0] = $oList_new.Item($process)
    $aOut[$i][1] = $process
    $i += 1
    Next
    EndIf
    Return $aOut
    EndFunc ;==>_GetNewProcess

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

    Func _CopyList(ByRef $oDictFrom, ByRef $oDictTo)
    For $key In $oDictFrom.Keys
    $oDictTo.Add($key, $oDictFrom.Item($key))
    Next
    EndFunc

    [/autoit]
  • Neue Prozesse Suchen

    • BugFix
    • 8. März 2009 um 12:55
    Zitat von pceumel

    Hab ich ja gemacht aber er machts nicht richtig,er liest immer alle aus!


    Das ist ja korrekt. Diese vergleichst du dann mit den protokollierten. Unterschiede sind dann die neuen Prozesse.

    Edit: Ich hab mal ein Bsp. erstellt, findest du hier: Prozeßvergleich

  • IntelliSenseBox

    • BugFix
    • 8. März 2009 um 12:17

    Ja, das hab ich oben in meinem Edit geschrieben ;)
    Die Ctrl-Erkennung erfolgt automatisch.
    Hier mal ein Bsp. (Code ist identisch, bis auf die Region Main also deine GUI mit Control):

    Spoiler anzeigen
    [autoit]

    #Include <WinAPI.au3>
    #include <WindowsConstants.au3>
    #Include <GuiListBox.au3>
    #include <GUIComboBox.au3>
    #include <Misc.au3>

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

    #region - Deklarationen für Sense
    Global $show = False
    Global $indexB = -1
    Global $SenseGui, $SenseCtrl, $guiBox, $box
    Global $POSSenseGui[2]
    #Region Box
    ; Hier die Auswahldaten (braucht nicht sortiert sein):
    Global $aData = StringSplit("Ananas|Apfel|Apfelmus|Birne|Cola|Datteln|Eis|Fleisch|Gemüse|Hefe|Ingwer|Joghurt|Kaffee|Lachs|Mais|Nuss|Nutella|Obst|Pizza|Quark|Reis|Salz|Tee|U|Vanillezucker|Wasser|X|Y|Zucker", '|')
    $guiBox = GUICreate('', 150, 85, 0, 0, BitOR($WS_SIZEBOX,$WS_POPUP), $WS_EX_TOPMOST)
    $box = _GUICtrlListBox_Create($guiBox, '', 0, 0, 150, 86, BitOR($LBS_SORT, 0x00B00002))
    ; ListBox muß 1 Pixel höher als GUI sein - sonst fehlerhafte Darstellung
    For $i = 1 To UBound($aData) -1 ; falls Daten mit _FileReadToArray gelesen werden: StartIndex=1
    _GUICtrlListBox_AddString($box, $aData[$i])
    Next
    #EndRegion Box
    GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND")
    GUIRegisterMsg($WM_MOVE, "_WM_MOVE")
    GUIRegisterMsg(0x231, "_WM_ENTERSIZEMOVE")
    #EndRegion - Deklarationen Sense

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

    #Region Main
    $gui = GuiCreate("Main Gui", 300,300)
    $Combo = GuiCtrlCreateCombo("Einkaufsliste...", 35, 150, -1, -1, BitOR($CBS_DROPDOWN,$WS_VSCROLL,$WS_TABSTOP))
    $BUtton = GuiCtrlCreateButton("OK", 240,148)
    $SenseGui = $gui ; <== Für Allgemeingültigkeit Zuweisung an $SenseGui
    $SenseCtrl = $Combo ; <== Für Allgemeingültigkeit Zuweisung an $SenseCtrl
    GUISetState()
    #EndRegion Main

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

    While True
    _ChooseBox()
    If GUIGetMsg() = $GUI_EVENT_CLOSE Then Exit
    WEnd

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

    #region - SenseFunc's
    Func _ChooseBox()
    If Not $show Then Return
    If _IsPressed('0D') Then ; ENTER
    ControlSetText($SenseGui, '', $SenseCtrl, _GUICtrlListBox_GetText($box, $indexB))
    GUISetState(@SW_HIDE, $guiBox)
    $show = False
    ElseIf _IsPressed('1B') Then ; ESC
    GUISetState(@SW_HIDE, $guiBox)
    $show = False
    ElseIf _IsPressed('26') Then ; UP
    If $indexB > 0 Then
    $indexB -= 1
    _GUICtrlListBox_SetCurSel($box, $indexB)
    Sleep(90)
    EndIf
    ElseIf _IsPressed('28') Then ; DOWN
    If $indexB < _GUICtrlListBox_GetCount($box)-1 Then
    $indexB += 1
    _GUICtrlListBox_SetCurSel($box, $indexB)
    Sleep(90)
    EndIf
    EndIf
    EndFunc

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

    Func MY_WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
    Local $nNotifyCode = BitShift($wParam, 16)
    Local $hCtrl = $lParam
    Local $hSenseCtrl = $SenseCtrl
    If Not IsHWnd($hSenseCtrl) Then $hSenseCtrl = GUICtrlGetHandle($hSenseCtrl)
    If ($nNotifyCode = 1024 Or $nNotifyCode = 6) And $hCtrl = $hSenseCtrl Then
    Local $str = ControlGetText($SenseGui, '', $SenseCtrl)
    $indexB = _GUICtrlListBox_FindString($box, $str)
    _GUICtrlListBox_SetCurSel($box, $indexB)
    $caret = _CaretPos()
    If Not @error And Not $show Then
    If $caret[3] + $caret[4] - 95 < 0 Then ; Platz für Liste über dem Ctrl ausreichend?
    WinMove($guiBox, '', $caret[0], $caret[1] +25) ; Versatz 25 (Ctrlhöhe+5) unter y vom Ctrl
    Else
    WinMove($guiBox, '', $caret[0], $caret[1] -95) ; Versatz 95 (Boxhöhe+10) über y vom Ctrl
    EndIf
    GUISetState(@SW_SHOWNOACTIVATE, $guiBox)
    $show = True
    EndIf
    ElseIf $hCtrl = $box And $nNotifyCode = 1 Then
    $indexB = _GUICtrlListBox_GetCurSel($box)
    ControlSetText($SenseGui, '', $SenseCtrl, _GUICtrlListBox_GetText($box, $indexB))
    GUISetState(@SW_HIDE, $guiBox)
    $show = False
    ElseIf $show And $nNotifyCode = 512 And $hCtrl = $lParam And Not $hCtrl = $box Then
    GUISetState(@SW_HIDE,$guiBox)
    $show = False
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc

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

    Func _WM_ENTERSIZEMOVE($hWnd)
    If $hWnd = $SenseGui Then $POSSenseGui = WinGetPos($SenseGui)
    EndFunc

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

    Func _WM_MOVE($hWnd)
    If $hWnd = $SenseGui Then
    Local $pos = WinGetPos($guiBox)
    Local $postemp = WinGetPos($SenseGui)
    WinMove($guiBox,"",$pos[0]-($POSSenseGui[0]-$postemp[0]),$pos[1]-($POSSenseGui[1]-$postemp[1]))
    $POSSenseGui = WinGetPos($SenseGui)
    EndIf
    EndFunc

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

    Func _CaretPos()
    Local $old = Opt("CaretCoordMode", 0) ;relative mode
    Local $c = WinGetCaretPos() ;relative caret coords
    Local $w = WinGetPos("") ;window's coords
    Local $f = ControlGetFocus("","") ;text region "handle"
    Local $e = ControlGetPos("", "", $f) ;text region coords
    Local $h = ControlGetHandle("", "", $f) ;Ctrl-Handle
    Local $t[5]
    If IsArray($c) and IsArray($w) and IsArray($e) Then
    If _WinAPI_IsClassName($SenseCtrl, 'Edit') Then ; Input wird als Edit-Class erkannt
    $t[0] = $c[0] + $w[0] + $e[0]
    ElseIf _WinAPI_IsClassName($SenseCtrl, 'ComboBox') Then
    $t[0] = $w[0] + $e[0]
    EndIf
    $t[1] = $c[1] + $w[1] + $e[1]
    $t[2] = $h
    $t[3] = $w[1]
    $t[4] = $e[1]
    Opt("CaretCoordMode", $old)
    Return $t ;absolute screen coords of caret cursor
    Else
    Opt("CaretCoordMode", $old)
    SetError(1)
    EndIf
    EndFunc
    #endregion - SenseFunc's

    [/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™