Hallo Chip,
hatte ich auch versucht hat aber irgendwie nichtr funktioniert.
- Also die Funktion darf keine While Schleife haben
Ich hatte die Case Anwendungen kopiert...
hm....?
eine harte Nuss heute...
Grüße Ilse
Hallo Chip,
hatte ich auch versucht hat aber irgendwie nichtr funktioniert.
- Also die Funktion darf keine While Schleife haben
Ich hatte die Case Anwendungen kopiert...
hm....?
eine harte Nuss heute...
Grüße Ilse
Hallo m-obi,
hab ich probiert, geht nicht!
Werd bald wahnsinnig. Ich sitze nun schon seit Stunden an diesem Problem.
Die Hauptgui und die Navi Gui alleine laufen.
Ich kann diese auch ansprechen alles geht.
Sobald aber die Function mit den Guis dazukommt
"scheint vorerst ales zu gehen"
Ich kann die Fenster die mit der Funktion erzeugt wurden auch schliessen. ABER ich komme dann nicht mehr an meine
Main und NaviGUI!
Die sind noch geöffnet, auch die Hotkeys die vorher liefen funktionieren nicht mehr für die Guis!
Auch wenn ich diese Anklicke sind sie nicht mehr aktiv!
Das hat bestimmt was mit dem Loop in meiner Funktion zu tun....
aber ich weiß nicht woran es hängt!
Grüße Ilse
Hallo zusammen,
krieg das nicht zum laufen.
Kurze Info zum Script
(Lann leider nur den Ausschnitt posten....sehr komplex)
Also:
1. Es gibt eine Hauptdatei (läuft...)
2. es gibt eine Func mit einer Schleife (hier werden die Gui Fenster gemacht!
Alles alleine läuft, nur zusammen nicht!
Das ist die Schleife der Hauptgui:
[autoit]
#include "Guifenster.au3" ; meine Funktion
; Haupt Gui
$msg = GUIGetMsg(1)
Switch $msg[1] ; Window Handle
Case $GUI_Main ; Gui Fenster 1
Case $GUI_EVENT_CLOSE
GUIDelete($Msg[1])
Exit
Case $Navi ; Gui Fenster 2
Switch $msg[0]
Case $GUI_EVENT_CLOSE
EndSwitch
EndSwitch
WEnd
Das ist die Funktion die in der Func diese Schleife hat
[autoit]
Func _Guis()
GUICreate($Tiere[0], 800, 250, 100, 200, -1, $WS_EX_ACCEPTFILES)
;Code....
;Code...
While 1
$umsg = GUIGetMsg(1)
Switch $uMsg[0]
Case $button
Case $GUI_EVENT_CLOSE
GUIDelete($uMsg[1])
EndSwitch
wend
EndFunc
[/autoit]Komisch ist, ich kann die Fenster einzeln schliessen,
aber ich kann z.B. die Navi Gui nicht mehr ansprechen
Ich krieg diese nicht mehr aktiv
(winactivate... keine Chance
Lasse ich z.B. die Funktion weg, dann geht das!
Grüße Ilse
Hallo Chip,
noch ne Frage:
Ich kann nun alle Fenster schliessen.
Wie kann man aber verhindern daß wenn das
letzte Fenster geschlossen wird nicht das ganze Script beendet wird.
Grüße
Ilse
merci CHIP!
Liebe Grüße
Ilse
Hallo,
ich haben folgendes Problem:
Mein Script legt mehrere Fenster an. Jedes Fenster hat einen
anderen Titel aber ein X Schliess-Symbol.
Das Problem: Wenn ich ein Fenster schliesse, werden alle beendet.
Ich glaube das Problem liegt an der Schleife.
[autoit]
Do
$msg = GUIGetMsg()
Switch $msg
Case $button
Case $GUI_EVENT_CLOSE
Case $listview
[/autoit][autoit][/autoit][autoit]EndSwitch
Until $msg = $GUI_EVENT_CLOSE
Die Titel des Fensters werden so generiert:
[autoit]
GUICreate($Tiere[0], 800, 250, 100, 200, -1, $WS_EX_ACCEPTFILES)
Von diesen Fenstern gibt es viele.
Hoffe Ihr habt ne Idee
Liebe Grüße
Ilse
...hab's soweit hinbekommen.
Was noch nicht klappt ist folgendes.
Wie kann ich eine Zelle des Listviews lesen?
Ich klicke z.B. in Spalte 3 auf die 2. Zelle...
[autoit]
Case $listview
MsgBox(0, "listview item", GUICtrlRead(GUICtrlRead($listview)), 2)
da komm ich noch nicht weiter...
Liebe Grüße
Ilse
Hallo,
hab das jetzt hinbekommen.
Brauch aber nochmal Hilfe:
Wenn die Listview gefüllt ist
und das Script aktiv ist...
Wie kann ich das Listview leeren?
Ich dachte z-B. so:
Ich drücke F5 (Hotkey) die Zwischenablage wird gelesen
(regex) ....Listview wird gestartet OK...
Ich kopiere was anderes in die Zwischenablage
Ich drücke F5 erneut
Alte Listview wird erneuert...
geht das? Ich meine daß das Script immer geöffnet bleibt
nur wenn ich F5 drücke wird die Listview gefüllt
Grüße Ilse
Hallo,
und merci für die Hilfe.
autoBert
Habe versucht mein Script nach deinem anzupassen,
ging leider nicht.
1. Meine regex _ArrayDisplays zeigen alle Werte nacheinander an.
2. Aber die Tabelle füllt nicht alle Spalten.
Es kann natürlich sein, dass regex nur Spalte 2 und 3 und 5 liefert.
Dann sollten diese Spalten ausgefüllt werden.
; *** Start added by AutoIt3Wrapper ***
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <array.au3>
$sSource = ClipGet()
$sSource = (StringReplace(StringStripCR($sSource), @LF, " "))
ClipPut($sSource)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$Spalte1 = StringRegExp($sSource, 'Hunde.*?\s(\d+)', 3)
_ArrayDisplay($Spalte1, "Hunde")
$Spalte2 = StringRegExp($sSource, '(?:Welpen|Geburten).*?\s(\d+)', 3)
_ArrayDisplay($Spalte2, "Welpen")
$Spalte3 = StringRegExp($sSource, 'Katzen*?\s(\d+)', 3)
_ArrayDisplay($Spalte3, "Katzen")
$Spalte4 = StringRegExp($sSource, 'Sittiche.*?\s(\d+)', 3)
_ArrayDisplay($Spalte4, "Sittiche")
$Spalte5 = StringRegExp($sSource, 'Klein.*?\s(\d+)', 3)
_ArrayDisplay($Spalte5, "Kleintiere")
; bis hierhin wird alles korrekt ausgegeben!
;#cs
; Hier sollte die Listview beginnen...
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$i1 = UBound($Spalte1)
$i2 = UBound($Spalte2)
$i3 = UBound($Spalte3)
$i4 = UBound($Spalte4)
$i5 = UBound($Spalte5)
;#ce
$iLV = $i1
If $i2 > $iLV Then $iLV = $i2
If $i3 > $iLV Then $iLV = $i3
ConsoleWrite($i1 & @TAB & $i2 & @TAB & $i3 & @CRLF)
[/autoit] [autoit][/autoit] [autoit]GUICreate("listview items", 400, 400, 100, 200, -1, $WS_EX_ACCEPTFILES)
GUISetBkColor(0x00E0FFFF) ; will change background color
$listview = GUICtrlCreateListView("Hunde|Welpen|Katzen|Sittiche|Kleintiere", 10, 10, 400, 400);,$LVS_SORTDESCENDING)
$button = GUICtrlCreateButton("Value?", 75, 170, 70, 20)
For $i = 0 To $iLV
$sCol = ""
If $i < $i1 Then $sCol = $Spalte1[$i]
$sCol &= "|"
If $i < $i2 Then $sCol &= $Spalte2[$i]
$sCol &= "|"
If $i < $i3 Then $sCol &= $Spalte3[$i]
$sCol &= "|"
If $i < $i3 Then $sCol &= $Spalte4[$i]
$sCol &= "|"
If $i < $i3 Then $sCol &= $Spalte5[$i]
ConsoleWrite($sCol & @CRLF)
GUICtrlCreateListViewItem($sCol, $listview)
Next
GUICtrlCreateInput("", 20, 200, 150)
GUICtrlSetState(-1, $GUI_DROPACCEPTED) ; to allow drag and dropping
GUISetState()
Do
$msg = GUIGetMsg()
Switch $msg
Case $button
MsgBox(0, "listview item", GUICtrlRead(GUICtrlRead($listview)), 2)
Case $listview
MsgBox(0, "listview", "clicked=" & GUICtrlGetState($listview), 2)
EndSwitch
Until $msg = $GUI_EVENT_CLOSE
@m-obi,
im Prinzip so...
nur die Werte sind immer unterschiedlich groß,
da ich sie mit regex ermittle.
Hier nochmal das Grundgerüst v. Regex (funktioniert prima)
und das sollte in die Listview, am besten mit den
Headern von Arraydisplay...(Hunde, Welpen...
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <array.au3>
$sSource = ClipGet()
$sSource = (StringReplace(StringStripCR($sSource), @LF, " "))
ClipPut($sSource)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$Spalte1 = StringRegExp($sSource, 'Hunde.*?\s(\d+)', 3)
_ArrayDisplay($Spalte1, "Hunde")
$Spalte2 = StringRegExp($sSource, '(?:Welpen|Geburten).*?\s(\d+)', 3)
_ArrayDisplay($Spalte2, "Welpen")
$Spalte3 = StringRegExp($sSource, 'Katzen*?\s(\d+)', 3)
_ArrayDisplay($Spalte3, "Katzen")
$Spalte4 = StringRegExp($sSource, 'Sittiche.*?\s(\d+)', 3)
_ArrayDisplay($Spalte4, "Sittiche")
$Spalte5 = StringRegExp($sSource, 'Klein.*?\s(\d+)', 3)
_ArrayDisplay($Spalte5, "Kleintiere")
; bis hierhin wird alles korrekt ausgegeben!
[/autoit]...schade, muß schon wieder los...
bis später
Liebe Grüße
Ilse
Hallo,
ich habe folgendes Problem:
Es gibt $Var mit mehreren Einträgen(Spalte nach unten)
Diese kann ich alle nacheinander mit Arraydisplay darstellen.
Ich rufe z.Zt. alle Arraydisplays nacheinander auf und verliere den Überblick
Diese hätte ich aber gerne zur Übersicht alle in meiner Listview.
Also: z.B. $Spalte1 soll in der Listview in die erste Spalte eingetragen werden
$Spalte2 soll in der Listvieview die zweite Spalte...
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <array.au3>
$Spalte1 = "Einträge 1"
;Arraydisplay....
$Spalte2 = "Einträge 2"
;Arraydisplay....
$Spalte3 = "Einträge 3"
;Arraydisplay....
Example()
[/autoit] [autoit][/autoit] [autoit]Func Example()
Local $listview, $button, $item1, $item2, $item3, $msg
GUICreate("listview items", 400, 400, 100, 200, -1, $WS_EX_ACCEPTFILES)
GUISetBkColor(0x00E0FFFF) ; will change background color
$listview = GUICtrlCreateListView("col1 |col2|col3|col4 ", 10, 10, 400, 400);,$LVS_SORTDESCENDING)
$button = GUICtrlCreateButton("Value?", 75, 170, 70, 20)
$item1 = GUICtrlCreateListViewItem("item2|col22|col23", $listview)
$item2 = GUICtrlCreateListViewItem("item1|col12|col13", $listview)
$item3 = GUICtrlCreateListViewItem("item3|col32|col33", $listview)
GUICtrlCreateInput("", 20, 200, 150)
GUICtrlSetState(-1, $GUI_DROPACCEPTED) ; to allow drag and dropping
GUISetState()
GUICtrlSetData($item2, "ITEM1")
GUICtrlSetData($item3, "||COL33")
GUICtrlDelete($item1)
Do
$msg = GUIGetMsg()
Select
Case $msg = $button
MsgBox(0, "listview item", GUICtrlRead(GUICtrlRead($listview)), 2)
Case $msg = $listview
MsgBox(0, "listview", "clicked=" & GUICtrlGetState($listview), 2)
EndSelect
Until $msg = $GUI_EVENT_CLOSE
EndFunc ;==>Example
Liebe Grüße
Ilse
Hallo Oscar,
hey, das ist ja spitze.
Genau das ist es.
Liebe Grüße
Ilse
Hallo,
mußte leider wieder los...
Im Prinzipt bräuchte ich eine Art Container.
In eine Datei die immer erweitert wird, würde auch gehen.
fileappend, filewrite...
lese ich mir mal wieder durch.
Auf zum nächsten Abenteuer
Liebe Grüße
Ilse
Hallo,
schon wieder eine Frage.
Ich kopiere mit z.B. einen Text von Hand in die Zwischenablage.
Wenn ich nun die F5 Taste drücke soll dieser in die Zwischenablage (also erweitern)
Kopiere ich einen weiteren Text, dann soll der ebenfalls dazukommen.
geht das überhaupt mit der Zwischenablage?
[autoit][/autoit][autoit][/autoit][autoit]HotKeySet("{F5}", "Zwischenablage")
HotKeySet("{ESC}", "beenden")
While 1
Sleep(100)
WEnd
;;;;;;;;
Func beenden()
MsgBox(4096,"","Das ist der kpl. Inhalt",1)
MsgBox(4096,"",Clipget())
EndFunc
Func Zwischenablage()
MsgBox(4096,"","Text wurde hinzugefügt",1)
EndFunc
Grüße Ilse
Guten Morgen Skyteddy,
super, das wars!
Es klappt jetzt prima.
Hatte mich da total verrannt
ENDLICH...
Liebe Grüße
Ilse
Hallo m-obi,
es geht leider immer noch nicht!
Hier meine Schlussvariante:
File wird angelegt, wird auch geprüft
nur die Zähler stimmen nicht, Bei 2 ist Ende
Func _merken()
Global $MerkNr = 1
Send("^c"); EIntrag für die Zwischenablage
Sleep(300)
If FileExists(GUICtrlRead($LargeInput) & ".ini") Then ;Prüft ob INI vorhanden ist!
$svar = IniReadSection(GUICtrlRead($LargeInput) & ".ini", "Link")
Msgbox(0,"","Ini existiert")
For $i = 1 To $svar[0][0]
$MerkNr += 1
Next
Msgbox(0,"",$MerkNr)
IniWrite(@ScriptDir & "\ini\" & guictrlread($LargeInput)&".ini", "Link", $MerkNr, Clipget())
Else
Msgbox(0,"","Ini wird angelegt")
IniWrite(@ScriptDir & "\ini\" & guictrlread($LargeInput)&".ini", "Link", $MerkNr, Clipget()); Ini wird mit MerkNr = 1 angelegt...
EndIf
endfunc
Liebe Grüße
Ilse
nochmal zum verstehen:
1. Ich schreibe die neue Ini, also nur den Eintrag....
2. Ich ermittle dann direkt die Anzahl
3. Diese Anzahl schreibe ich in die ini?
Ich bin da total durcheinander.
Wenn die ini noch nicht existiert,
also die Inputbox kommt, dann trage ich z.B. Namen ein
Die erste ini wird dann angelegt. Es existiert die Nr. 1
Startwert = 1
...da komme ich nicht weiter
Ich kann mittlerweile nicht mehr klar denken
Ich muß doch auch einen Startwert in der ini haben. Oder?
Der muß dann igendwie erneuert werden...
...es geht nicht
Ilse
Hallo m-obi,
mein Retter naht...
Ich fang mal an zu erklären: 1. Duchlauf
1. Ich kopiere was in die Zwischenablage
2. Dann ermittle ich per inputbox meine ini, sagen wird Namen.ini
3. Der Wert wird auch in die ini geschrieben. Fortlaufend 1,2,3
soweit klappt alles. 2. Durchlauf
1. Ich kopiere was in die Zwischenablage
2. Dann ermittle ich per inputbox meine ini, sagen wird Tiere.ini
3. Der Wert wird auch in die ini geschrieben. Fortlaufend 1,2,3 da sie neu ist
So, und nun kommt das Problem
1. Ich kopiere was in die Zwischenablage
2. Dann wähle ich per inputbox meine existierende ini: Namen.ini
3. Der Wert wird auch in die ini geschrieben. Aber die Nr. stimmt nicht mehr.
Beende ich das Script und starte nochmal neu, dann wird der Eintrag 1 überschrieben.
Hoffe ich konnte das Problem erklären.
Ich starte also einfach meine Funktion(....geht alles)
und möchte daß die Einträge in der jeweiligen ini landen
nummeriert und ohne etwas zu löschen.
Hier nochmal das Grundgerüst
[autoit]
$MerkNr = 1
Func _merken()
Send("{CTRLDOWN}c{CTRLUP}")
Sleep(100)
IniWrite(@ScriptDir & "\ini\" & guictrlread($LargeInput)&".ini", "Link", $MerkNr, Clipget())
Sleep(200)
$MerkNr +=1
endfunc
Liebe Grüße
Ilse
Ich probiers mal so:
$var = IniReadSection("Test1.ini", "Link")
$Zahl= IniRead("Test1.ini","Anzahl","Nr","default")
If @error Then
MsgBox(4096, "", "Es ist ein Fehler aufgetreten. Warscheinlich keine INI Datei vorhanden.")
Else
For $i = 1 To $var[0][0]
MsgBox(4096, "", "Schlüssel: " & $var[$i][0] & @CRLF & "Wert: " & $var[$i][1])
$Zahl+=1
Next
IniWrite("Test1.ini","Anzahl","Nr",$Zahl -1)
EndIf
[/autoit]hm...hab immer noch Probleme zusammen mit der Funktion!
Beim allererstenmal wird ja die ini erzeugt und auch der 1. Startwert.
Und da komme ich nicht weiter.
Ilse
Hallo Skyteddy,
hm irgendwie etwas verwirrend:
Kannst du mal die Felder korrekt eintragen:
IniWrite(@ScriptDir & "\ini\" & GUICtrlRead($LargeInput) & ".ini", "Link", $MerkNr, ClipGet())
Meine Ini = GUICtrlRead($LargeInput) & ".ini
Meine Sektion = [Link]
Mein Schlüssel = $MerkNr
Mein Eintrag = Clipget()
Die Funktion von dir
Func _Merken()
; Letzte MerkNr ermitteln
$MerkNr = IniRead(@ScriptDir & "\ini\" & GUICtrlRead($LargeInput) & ".ini", "Mein Merker", "MerkNr", 0)
; MerkNr erhöhen
$MerkNr += 1
; Link rausschreiben
IniWrite(@ScriptDir & "\ini\" & GUICtrlRead($LargeInput) & ".ini", "Link", $MerkNr, ClipGet())
; MerkNr rausschreiben
IniWrite(@ScriptDir & "\ini\" & GUICtrlRead($LargeInput) & ".ini", "Mein Merker", "MerkNr", $MerkNr)
EndFunc ;==>_Merken