Geraten: Wer ist wo? - Datenbankdatei
Beiträge von BugFix
-
-
Oder um die Funktion Eval zu verdeutlichen:
Eval() baut aus einem String den Variablennamen auf und zwar aus jedem einzelnen Zeichen:
[autoit]$Variable = 10
[/autoit]
$outEval = Eval("V"&"a"&"r"&"i"&"a"&"b"&"l"&"e")
MsgBox(0,"",$outEval) ; zeigt 10Geht nicht mit Arraynamen!
-
Wenn du mit Funktionen arbeitest, die weder in der Prod noch in der Beta enthalten sind, dann solltest du sie in deinem Code anführen oder zumindest drauf verlinken (was ich hiermit tue: Lazycat's RTF Plugin).
Eine Kristallkugel haben schließlich die wenigsten von uns.
Zum Problem selber, da schau ich nochmal.Kurze Antwort:
Dieses Control kannst du nicht in ein Tab einbetten. -
Zitat
Ich denke, dass die Funktion (die sich übrigends FileInstall() nennt) für deine Verwendungszwecke besser geeignet ist.....
Und falls es mal ein paar Dateien mehr sind, kannst du dir das Script auch automatisch mit dem Install-Script-Generator erstellen lassen. -
Guckst du hier auch: Dateien / Ordner rekursiv lesen
-
Als grundsätzlichen Tipp mal überlegen, generell 'OnEventMode' zu verwenden. Da treten solche Probleme nicht auf.
-
Oder, wenn du das Kopier-Avi dabei haben möchtest:
Spoiler anzeigen
[autoit]#include <guiconstants.au3>
[/autoit] [autoit][/autoit] [autoit]
Dim $arFiles[100] ; zu kopierende Dateien
For $i = 0 To 99
$arFiles[$i] = "Datei " & $i ; nur als Muster
Next
$Form1 = GUICreate("Kopieren von Dateien . . .", 343, 194, -1, -1, $WS_CAPTION, $WS_EX_TOPMOST)
$n1=GUICtrlCreateAvi (@SystemDir & "\shell32.dll",160, 40,20)
GUICtrlSetState ($n1, 1)
$Label = GUICtrlCreateLabel("", 70, 93, 203, 17, $SS_CENTER)
$status = GUICtrlCreateProgress(20, 120, 303, 17 ,$PBS_SMOOTH)
GUISetState()While 1
[/autoit]
Sleep(100)
For $i = 0 To UBound($arFiles)-1
;Kopieren.. FileCopy( )
GUICtrlSetData($Label, $arFiles[$i])
GUICtrlSetData($status, Round(100/UBound($arFiles)*$i))
Sleep(50)
Next
Exit
WEnd
Kannst du natürlich noch um die Anzeige der Prozentzahl erweitern. -
Eh du selbst was schreibst, probier doch mal ob der Router mit dem Barricade-Monitor von FRIFA (Barricade-Monitor 6.2.0.4) zusammenarbeitet. Da hast du schon alle Optionen dabei. Ist mit vielen Routern kompatibel.
-
Erstelle eine kleine GUI: 'bin beschäftigt'
[autoit]
setze sie auf @GUI_SHOW während des Sicherungsvorgangs und danach auf @GUI_HIDE$Busy = GUICreate("",160,110,-1,-1,$WS_POPUP)
[/autoit]
GUISetBkColor(0x708090)
$label_busy = GUICtrlCreateLabel("Einen Moment bitte." & @LF & @LF & "Die Sicherung läuft...", 20, 15, 120, 100, $SS_CENTER)
GUICtrlSetFont(-1, 10, Default,2)
GUICtrlSetColor(-1, 0xF0E68C) -
Zitat
wenn der mehrere tasten trücken soll in bestimmten zeit abständen
Gib mal Bsp.
Verstehe nicht genau, was du möchtest.
- mehrere Tasten nacheinander?
- oder gleichzeitig?
- zur gleichen Farge?
- oder zu anderer Farbe? -
[autoit]
HotKeySet("^e", "Ende") ; Beenden mit STRG+e
[/autoit]
While 1
If PixelGetColor(475,24) <> 0xFFFFFF Then
Sleep(100)
Send("8")
Sleep(5000)
Send("2")
EndIf
WEnd
Func Ende()
Exit
EndFunc -
So, nun brauchst du nur noch für die User-Nummern anpassen:
EDIT
Ich hab den Code nochmal etwas 'gesäubert'. Einiges war ja nur zur Demo:Spoiler anzeigen
[autoit]#include <string.au3>
[/autoit] [autoit][/autoit] [autoit]
Dim $arUser, $string = "admin:99:*user:1:*user:12:*user:3:*user:4:*user:5:*"$arUser = StringSplit($string, "*")
[/autoit]
If Not IsArray($arUser) Then
MsgBox(16, "Fehler", "Userlist ist leer")
Else
Dim $arUserList[$arUser[0]-1]
MsgBox(0, '', $arUser[0]-1 & " User sind online")
For $i = 1 To $arUser[0]-1 ; da auch am Ende des Strings ein Trennzeichen ist, folgt noch ein leerer String
$var = StringTrimRight($arUser[$i], 1) & ")"
$arUserList[$i-1] = StringReplace($var, ":", "(")
Next
For $i = 0 To UBound($arUserList)-1
$var = _StringBetween($arUserList[$i], "(", ")")
Switch $var[0]
Case 4
; code für User 4
Case 12
; code für User 12
; etc.
EndSwitch
Next
EndIfWenn du die Bezeichnungen (admin, user) gar nicht auswertest, sondern nur die Werte zwischen den ":" kannst du das noch mehr schrumpfen:
Spoiler anzeigen
[autoit]#include <string.au3>
[/autoit] [autoit][/autoit] [autoit]
Dim $arUser, $string = "admin:99:*user:1:*user:12:*user:3:*user:4:*user:5:*"$arUser = StringSplit($string, "*")
[/autoit]
If Not IsArray($arUser) Then
MsgBox(16, "Fehler", "Userlist ist leer")
Else
MsgBox(0, '', $arUser[0]-1 & " User sind online")
For $i = 1 To $arUser[0]-1
$var = _StringBetween($arUser[$i], ":", ":")
Switch $var[0]
Case 4
; code für User 4
Case 12
; code für User 12
; etc.
EndSwitch
Next
EndIf -
Verwende anstelle von:
[autoit]$test = GUICtrlCreateTreeViewItem($archivename, $archivetree)
[/autoit]
[autoit]
ein Array.$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 -
Sicher geht das auch noch kürzer mit Regulären Ausdrücken.
[autoit]
So ist es aber auch ganz praktikabel.$string = "admin:99:*user:1:*user:2:*user:3:*user:4:*user:5:*"
[/autoit]
$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) -
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. -
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]; ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [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
;
; ----------------------------------------------------------------------------#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#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 checkedGlobal $sStateIconFile = @ScriptDir & "\simple.bmp"
[/autoit] [autoit][/autoit] [autoit]
;~ Global $sStateIconFile = @ScriptDir & "\modern.bmp"$gui = GUICreate("Treeview - Install Script", 400, 400, -1, -1, Default, $WS_EX_TOPMOST)
[/autoit] [autoit][/autoit] [autoit]
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"); GUI Info
[/autoit] [autoit][/autoit] [autoit]
$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)GUISetState(@SW_SHOW, $gui)
[/autoit] [autoit][/autoit] [autoit]
$expand = 0
$switch = 0While 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(100)
WEndFunc _all()
[/autoit] [autoit][/autoit] [autoit]
If $switch = 0 Then
SelectFull()
$switch = 1
GUICtrlSetData($Btn_all, $text4)
Else
ReSelect()
$switch = 0
GUICtrlSetData($Btn_all, $text3)
EndIf
EndFuncFunc _expand()
[/autoit] [autoit][/autoit] [autoit]
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
EndFuncFunc guiClose()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFuncFunc SelectFull()
[/autoit] [autoit][/autoit] [autoit]
For $i = $nItem1 To $nItem4
MyCtrlSetItemState($nTV, $i, $GUI_CHECKED)
Next
For $i = $nsubItem1 To $nsubItem24
MyCtrlSetItemState($nTV, $i, $GUI_CHECKED)
Next
EndFuncFunc ReSelect()
[/autoit] [autoit][/autoit] [autoit]
For $i = $nItem1 To $nItem4
MyCtrlSetItemState($nTV, $i, $GUI_UNCHECKED)
Next
For $i = $nsubItem1 To $nsubItem24
MyCtrlSetItemState($nTV, $i, $GUI_UNCHECKED)
Next
EndFuncFunc Ausklappen()
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlTreeViewExpand($nTV)
EndFuncFunc Einklappen()
[/autoit]
_GUICtrlTreeViewExpand($nTV, 0)
EndFunc -
110 x 110 pixel (BildInfo)
oder was willst du wissen? -
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 -
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.
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)
[/autoit]
_GUICtrlListViewSetColumnWidth(-1, 0, 135)
_GUICtrlListViewSetColumnWidth(-1, 1, 135)
_GUICtrlListViewSetColumnWidth(-1, 2, 128)
GUICtrlSendMsg($ListView1, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)Ist aber Geschmackssache.
-
Ja, danke snoozer.
Das ist der korrekte Weg. Der Teufel steckt,wie üblich, im Detail.Bitte auch in der Esc-Funktion ergänzen:
Spoiler anzeigen
[autoit]Func bCopyToClick()
[/autoit]
$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