Hi,
Kann man dieses Verhalten irgendwo abstellen?
Problem: In Scite mit F5 ein Script starten, dann im Quellcode den Cursor auf einen AutoIt-Befehl setzen und F1 (für Hilfe) drücken.
Es erscheint die AutoIt-Hilfe zum Befehl und kurz darauf ein weitere Instanz des gestarteten Scrips. Seltsamerweise klappt F5 zum mehrmaligen Starten von Scripten nicht...
ciao
Andy
Beiträge von Andy
-
-
funktioniert das?
[autoit]_FileReadToArray($ListViewText[1] & '.log', $aIn)
[/autoit]
If @error = 0 Then ;kein fehler
_ArrayDisplay($aIn)
For $i = 1 To $aIn[0]
$aIn[$i] = StringReplace(StringStripWS($aIn[$i], 7), " ", "|", 5)
Next
For $i = 2 To $aIn[0] ; bei Index 2 starten, dann ist die erste Zeile weg
$item1 = GUICtrlCreateListViewItem($ListViewText[1] & '|' & $aIn[$i], $ListView2)
Next
Else
MsgBox(0, "Fehler!", "Fehler beim Öffnen der Datei " & $ListViewText[1] & '.log')
EndIf -
Also wenn es jetzt klappt, ist es ja schön^^
Änderungsvorschlag:
Wenn CHECK aufgerufen wird, bevor ein User aus der Liste ausgewählt ist, tritt ein Fehler auf, das könntest du in der case CHECK() bei zeile 60 abfangen -
Ich kanns nicht nachvollziehen...
Mach mal in die case-Anweisung (zeile 60 um die dreh) NACH dem _check()-Aufruf eine Messagebox, um das Script dort zu stoppen und schau die Liste an.
Dann beschreib GENAU was du tust und wie die Liste aussieht!Also ich gehe so vor:
- prog starten
- Host laden
- Host in liste auswählen
- CHECK-Button drücken
- Liste ist OK
- CHECK-Button drücken
- Liste ist OK
- CHECK-Button drücken
- Liste ist OK
- anderen Host laden
- CHECK-Button drücken
- Liste ist OK
- CHECK-Button drücken
- Liste ist OK
uswusf -
[autoit]
$TSUSER = RunWait(@ComSpec & " /c " & @SystemDir & '\query.exe user /server:' & $ListViewText[1] & " > " & @SystemDir & '\ts.log', "", @SW_HIDE)
[/autoit][autoit][/autoit][autoit]
ConsoleWrite(@SystemDir & '\query.exe user /server:' & $ListViewText[1] & " > " & @SystemDir & '\ts.log' & @crlf)
;also wenn HIER ein exit steht und dann die Logfiles in Ordnung sind muss der Fehler ja später auftauchen
_FileReadToArray(@SystemDir & '\ts.log', $aIn) ;definitiv wird $aIn gelöscht und NUR mit den Daten des logs gefüllt, das habe ich geprüft
_arraydisplay($ain) ;stimmt hier noch alles?For $i = 1 To $aIn[0]
[/autoit][autoit][/autoit][autoit]
$aIn[$i] = StringReplace(StringStripWs($aIn[$i],7)," ","|",5)
NextFor $i = 2 To $aIn[0] ; bei Index 2 starten, dann ist die erste Zeile weg
[/autoit]
$item1 = GUICtrlCreateListViewItem($ListViewText[1] & '|' & $aIn[$i], $listview2)
_ArrayEmpty($aIn[0]) ;du löschst das array nach der Liste , kannst du weglassen imho
Next -
Zitat
Und mit der Antwort von Andy werden zwei Werte ausgeschlossen: 4900 und 5100, da größer und kleiner statt größergleich und kleinergleich in der Abfrage stehen.
Ja, und das ist auch richtig, wenn ZWISCHEN zwei Werten gesucht werden soll, dann sind diese beiden Werte ausgeschlossen. Genau das steht im Script

Oder glaubst du, ich liefere ausschließlich Steilvorlagen für copy/paste ?Ausserdem hat lemoniscool das hier
Zitatalso es soll geprüft werden ob X irgendeiner der werte zwischen Y-Z und Y+Z ist
vorgegeben....
-
Hi,
[autoit]
auf die schnelle...$y=5000
[/autoit][autoit][/autoit][autoit]
$z=100$x=number(inputbox("test","Geben sie eine Zahl ein:"))
[/autoit][autoit][/autoit][autoit]if $x>$y-$z and $x<$y+$z Then
[/autoit]
$not=""
Else
$not="nicht"
endif
msgbox(0,0,$x &" befindet sich "&$not&" zwischen "&$y-$z&" und " &$y+$z) -
Hallo,
kann dein Problem nicht nachvollziehen, bei mir funktioniert es ohne Duplikate. Habe keinen TS am laufen aber query.exe bastelt eine Datei mit mir als User auf der Console.
Füge mal direkt nach dem runwait() ein EXIT ein und prüfe dann die Logdatei. Kann es sein, daß andere Programme diese Logs verwenden?Ausserdem solltest du dir in einer ruhigen Minute mit einer Kanne Kaffee (eine Tasse wird nicht reichen^^) mal diesen Thread verinnerlichen Tutorial zur Fehlersuche
ciao
Andy -
Hallo,
ZitatIst es möglich in einem Fenster zu überprüfen ob eine ganz bestimmte Schaltfläche gedrück wurde?
So wie ich das verstehe, soll erst eine eigene Funktion, danach dann die ursprüngliche Funktion des Buttons abgearbeitet werden. Geht es um eine Gui in einem eigenen Script? Höchstwahrscheinlich nicht...
Also müsste man den Buttonklick abfangen, das funktioniert, indem man die Windows-Messages auswertet und beim Ereignis "Klick auf diesen Button" die eigene Funktion einfügt.
In der Hilfe gibt es dazu einige Beispielscripte.
ciao
AndyEdit: schau mal in der Hilfe das Beispiel zu _GUICtrlButton_SetDontClick, da werden buttonklicks abgefangen
-
Hallo,
sehr schönes Script!!!
Die "doppelten" Einträge kommen nicht vom Array sondern von deiner Log-Datei. Das kommt daher, daß mit dem ">" das Ergebnis von Query.exe immer an die Logdatei hintendran gehängt wird. Kann das leider zzt nicht testen, daher mal ein Schuss ins blaue^^
Lösche diese Datei ( sollte Listviewtext[1]&".log" sein) bevor du query.exe aufrufst. Zeile 137
ciao
AndyEdit.: Sorry, war quatsch. "Normalerweise" wird mit einer Ausgabeumleitung per ">" die Datei überschrieben, ">>" hängt an.....hmmmm
Edit2: habe dein Script jetzt zum laufen bekommen, statt der Logdatei benutze ich die von dir angegebene serverts.txt, damit klappts einwandfrei, also check mal die Logdatei, die von query.exe erstellt wird
-
Hi
ZitatHast Du mal unter "Systemsteuerung" --> "Sounds und Audiogeräte" --> "Audio" --> "Soundaufnahme" nachgeschaut?
ZitatAlina: Natürlich.
Was natürlich? Nur dort nachgeschaut, oder auch die richtigen Einstellungen vorgenommen? Wenn ja, welche?
Schau mal bei Systemsteuerung/System/Hardware/Audio-Video- und Gamecontroller ist dort der richtige Treiber eingetragen (Chipsatz steht im Handbuch des Mainboards, ggf Kiste aufschrauben und nachsehen!) bzw gibt es Konflikte?
Weiterhin bei Lautstärkeregelung/Optionen/Erweiterte Einstellungen anhaken, nochmal Optionen, dann auf auf Eigenschaften klicken. Dort im "Mixer" muss dasselbe Device ausgewählt sein wie im Treiber. Radiobutton "Aufnahme" anwählen.Lautstärkeregler für Mikrofon anhaken. OK drücken.
Im Fenster "Aufnahme" nun den Haken unter Mikrofon anhaken. Wenn vorhanden, dort den Button "Erweitert" anklicken und ggf die 20dB-Verstärkung anwählen.
Reboot^^ciao
AndyEdit: Ich sehe grade, meine Tochter hat auch den realtech888 Audiochip in ihrem Rechner, morgen kann ich dann direkt "am Objekt" kämpfen^^
-
Sorry, aber ich blicke nicht mehr durch....
[autoit]
Was heißt denn statisch bzw dynamisch?
Ist mittels einer for/to-Schleife ein Array auslesen "dynamisch"?#include <String.au3>
[/autoit][autoit][/autoit][autoit]
#include <array.au3>Dim $aArray[3] = [2, '<id serialno="A5BS11982" friendly="Alice5-A5BS11982" os="linux" soft="1.3.5" hostname="Alice5-A5BS11982" /><ip_list><ip_device name="eth0" ip="192.168.10.11" mask="255.255.255.0" up="1" macid="00:04:5F:86:7E:63" gateway="" /><ip_device name="eth1" ip="" mask="" up="0" macid="00:04:5F:86:7E:64" gateway="" /><ip_device name="irda0" ip="" mask="" up="1" macid="34:20:a3:6f " gateway="" /><ip_device name="ppp0" ip="" mask="" up="0" macid="" gateway="" /></ip_list>', '<id serialno="102" friendly="SleepwareHost" os="win32" soft="2.7.65" hostname="Alice1" />']
[/autoit][autoit][/autoit][autoit][/autoit][autoit]
dim $testarray[ubound($aArray)]for $i=0 to ubound ($aArray)-1
[/autoit]
$testarray[$i]=_stringbetween($aArray[$i],'"','"')
_ArrayDisplay($testarray[$i])
next -
Hallo,
Spoiler anzeigen
[autoit]#include <String.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <array.au3>Dim $aArray[3] = [2, '<id serialno="A5BS11982" friendly="Alice5-A5BS11982" os="linux" soft="1.3.5" hostname="Alice5-A5BS11982" /><ip_list><ip_device name="eth0" ip="192.168.10.11" mask="255.255.255.0" up="1" macid="00:04:5F:86:7E:63" gateway="" /><ip_device name="eth1" ip="" mask="" up="0" macid="00:04:5F:86:7E:64" gateway="" /><ip_device name="irda0" ip="" mask="" up="1" macid="34:20:a3:6f " gateway="" /><ip_device name="ppp0" ip="" mask="" up="0" macid="" gateway="" /></ip_list>', '<id serialno="102" friendly="SleepwareHost" os="win32" soft="2.7.65" hostname="Alice1" />']
[/autoit] [autoit][/autoit] [autoit]_ArrayDisplay($aArray)
[/autoit] [autoit][/autoit] [autoit]$test=_stringbetween($aArray[1],'"','"')
[/autoit]
_ArrayDisplay($test)
so?
ciao
Andy -
Hi subzero,
hab mich mal durch dein Schript gekämpft.
Ich glaube, wir hätten dein Problem schon vor 3 Tagen komplett gelöst, wenn du dir nicht immer die Würmer aus der Nase ziehen lassen würdest.
Diese mit Verlaub gesamte Listview-sch*** zieht sich nun schon durch mehrere Threads. Kotz dich aus und dir wird geholfen! Aber ich und auch andere hier brauchen dazu eine KLARE ANSAGE!
D.h. Beschreibung von dem was du hast (serverts-files, logfiles, einfach alles was du hast) und auch sehr wichtig, wo du AM ENDE hinwillst! Beschreib einfach mal in 5-10 Sätzen, was mit den Daten in den Logs im Endeffekt passieren soll. Sonst drehen wir uns weitere 3 Tage im Kreis^^
ciao
Andy -
Hi,
als Abonnent der c´t seit Gründungszeiten weiß ich, daß so gut wie alle Artikel aus den Sonderheften "Recyclingmaterial" sind. Ich finde da auch nichts verwerflich dran, denn Sinn und Zweck einer Sonderausgabe ist es doch, ein Heft zu einem bestimmten Themengebiet zusammenzustellen. Komprimierte (wenn auch schon bekante) Info! Noch ne CD/DVD mit Software dabei, fettich...Daß dieses Forum früher oder später zwangsläufig erwähnt wird, liegt in der Natur der Sache. Daß der Redakteur mit Verweisen auf aktuell "beliebte" Foren vorsichtig ist, aber genauso. Ich kann mich noch an das Geschrei eines Kumpels erinnern, der die Server einer kleineren Firma betreute, welche mit einem kurzen Nebensatz und Link in der c´t lobend erwähnt wurde. Schon am Tag nach dem erscheinen des Heftes ging aufgrund Überlastung garnichts mehr, und als nach 3 Tagen die IT-Infrastruktur auf den Ansturm angepasst war, quollen die Foren- und Mailserver vor Spam und Beschwerden über.....Nach 2 Wochen (exakt zum Zeitpunkt der nächsten Ausgabe der c´t^^ ) waren die "Heuschrecken" dann weitergezogen.
Wer AutoIt kennenlernen möchte (die c´t macht eigentlich Werbung dafür mit ihrem ActiveAid ) findet zwangsläufig bei der Suche nach Informationen im deutschsprachigen Netz dieses Forum schon allein wegen fehlender Alternativen. Aktuell Platz 4 in der Google-Trefferliste nach Eingabe von "AutoIt". Ein Platz hinter dem Link zum Wikipedia-Artikel, da würden andere Millionen dafür zahlen^^
Und ich bin sicher, daß dieses Forum bereits von c´t-lern "unterwandert" ist. Man kann Qualität auch einfach nur genießen, ohne sie laut rauszuschreien.
ciao
Andy -
Hallo Alina,
Zitatkopiert er nicht eine Datei
Ja, die MsgBox war auch nur als Info gemeint. Ich hatte angenommen, daß du die eine Zeile mit dem
[autoit]filecopy()
[/autoit]alleine hinbekommst
ciao
Andy -
Hallo Alina,
Spoiler anzeigen
[autoit]#include <GuiListView.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <ListBoxConstants.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#include <File.au3>
#include <GUIConstantsEx.au3>Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]Global $aIn[1]
[/autoit] [autoit][/autoit] [autoit]Local $iExWindowStyle = BitOR($WS_EX_DLGMODALFRAME, $WS_EX_CLIENTEDGE, $LBS_EXTENDEDSEL)
[/autoit] [autoit][/autoit] [autoit]
Local $iExListViewStyle = BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES, $LVS_EX_CHECKBOXES, $LVS_EX_DOUBLEBUFFER, $LVS_EX_TRACKSELECT)_FileReadToArray("inhalt2.txt", $aIn) ; hier angepsst
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
For $i = 1 To $aIn[0]
$aIn[$i] = StringReplace(StringStripWS($aIn[$i], 7), "|", "|", 5) ; hier angepsst
Next
_FileWriteFromArray("inhalt2_out.txt", $aIn, 2) ; hier angepsstGUICreate("listview items", 1250, 530, 10, 10, -1) ; hier angepsst
[/autoit] [autoit][/autoit] [autoit]$listview = GUICtrlCreateListView($aIn[1], 10, 10, 1230, 510, $iExWindowStyle, $iExListViewStyle) ; hier angepsst
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlListView_SetExtendedListViewStyle($listview, $iExListViewStyle)$context = GUICtrlCreateContextMenu($listview) ;contextmenu, rechtsklick zum kopieren
[/autoit] [autoit][/autoit] [autoit]
$item1 = GUICtrlCreateMenuItem("Kopieren nach...", $context)
$item2 = GUICtrlCreateMenuItem("Markierte Titel aus der Liste löschen", $context)
GUISetOnEvent($GUI_EVENT_CLOSE, "_GUIClose")
GUICtrlSetOnEvent($item2, "_Delete")
GUICtrlSetOnEvent($item1, "_kopieren")
GUICtrlSetOnEvent($listview, "List1Click")
_GUICtrlListView_RegisterSortCallBack($listview, True, True) ;sortierfunktion einschaltenFor $i = 2 To $aIn[0] ; bei Index 2 starten, dann ist die erste Zeile weg
[/autoit] [autoit][/autoit] [autoit]
$item1 = GUICtrlCreateListViewItem($aIn[$i], $listview)
Next
GUISetState()While 1
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Sleep(50)
WEndFunc _kopieren()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
For $iIndex = 0 To _GUICtrlListView_GetItemCount($listview) ;nacheinander die listenitems aufrufen
If _GUICtrlListView_GetItemChecked($listview, $iIndex) Or _GUICtrlListView_GetItemSelected($listview, $iIndex) Then ;wenn angehakt,dann kopieren
$titel = _GUICtrlListView_GetItem($listview, $iIndex, 1) ;schau mal in die Hilfe....
$pfad = _GUICtrlListView_GetItem($listview, $iIndex,
;schau mal in die Hilfe....
;_arraydisplay($titel)
MsgBox(0, "Kopieren: " & $titel[3], $pfad[3])
EndIf
Next
EndFunc ;==>_kopierenFunc List1Click()
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlListView_SortItems(GUICtrlGetHandle($listview), GUICtrlGetState($listview))
EndFunc ;==>List1ClickFunc _bearbeiten()
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlListView_BeginUpdate($listview)
_GUICtrlListView_EndUpdate($listview)
EndFunc ;==>_bearbeitenFunc _delete() ;zeilen in der liste löschen
[/autoit] [autoit][/autoit] [autoit]
If MsgBox(262144 + 32 + 4, "", "Markierte bzw. angehakte Zeilen aus der Liste löschen? ") = 6 Then
_GUICtrlListView_DeleteItemsSelected(GUICtrlGetHandle($listview))
EndIf
EndFunc ;==>_deleteFunc _GUIClose()
[/autoit]
_GUICtrlListView_UnRegisterSortCallBack($listview)
Exit
EndFunc ;==>_GUIClose
du kannst mit Klick auf die Spaltenköpfe sortieren.
Items markieren (entweder anhaken, oder mit der Maus bzw. den shift- alt oder ctrl-Tasten aus der Liste selektieren) und nach einem RECHTSKLICK aus dem Menü eine Aktion wählen
ciao
Andy -
Hallo,
Zitatkomm her lass dich knutschen
habe die besten Erfahrungen mit Beerware gemacht, würde aber mittlerweile das Lizenzmodell "Spätleseware" definitiv vorziehen^^
ciao
Andy -
Hi,
du hattest den handle falsch,Spoiler anzeigen
[autoit]#include <GuiListView.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <ListViewConstants.au3>
#include <GuiConstantsEx.au3>GUICreate('ListView Get Item Text', 400, 300)
[/autoit]
$hListView = GUICtrlCreateListView('Hostname|BENUTZERNAME|SITZUNGSNAME', 2, 2, 394, 268, BitOR($LVS_REPORT, $LVS_SINGLESEL));hier erstellst du die Listview
GUISetState()
For $i = 0 To 9
GUICtrlCreateListViewItem(Random(100, 999, 1) & '|' & Random(1000, 9999, 1) & '|' & Random(10000, 99999, 1), $hListView);hier die einträge
Next
$hButton = GUICtrlCreateButton('Alle SITZUNGSNAMEN anzeigen', 100, 275, 220, 22);Button ist klar
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $hButton
For $i = 0 To _GUICtrlListView_GetItemCount($hListview) -1;hier zählst du die einträge
; MsgBox(0, 'Item ' & $i, _GUICtrlListView_GetItemText($hListView, $i, 0 & 2));MSG boX
$ListViewText = _GUICtrlListView_GetItemTextArray($hListView)
$var1 = _GUICtrlListView_GetItemText($hlistview, $i, 0);MSG boX
$var2 = _GUICtrlListView_GetItemText($hlistview, $i, 2);MSG boX
MsgBox(0, "", $var1 & @crlf & $var2)
;woher weiss er das er die sitzung rausgeben soll?????
Next
EndSwitch
WEndZitat;woher weiss er das er die sitzung rausgeben soll?????
Der erste Parameter von _GUICtrlListView_GetItemText() ist der handle der Liste, der 2. Parameter ist die Listen-Zeile, 0=zeile 1, 1=zeile 2 usw. nullbasierend!
Der 3. Parameter ist die "Spaltenposition" an der du das Item findest, 0=1.spalte, 1= 2.Spalte usw.... -
FireFlyer
Das Problem ist, daß gewisse Controls die Daten nicht so einfach rausrücken.z.B gibt guigetcursorinfo() nur die ID vom eigentlichen Combo-Control aber nicht von der Liste darunter! Habe mir zu diesem Thema auch schon eins abgebrochen^^