haha
sorry strobo.. wohl überlesen
Verwendung von Dateiinhalten
Moderator: jNizM
Re: Verwendung von Dateiinhalten
[AHK] v2.0.5 | [WIN] 11 Pro (Version 22H2) | [GitHub] Profile
Re: Verwendung von Dateiinhalten
Ich hab danach gesucht aber nichts gefunden per Google sowas zu suchen ist auch nicht so leicht. An TF.ahk hab ich auch so gar nicht gedacht...
Re: Verwendung von Dateiinhalten
@jNizM: Alles cool, ich wunderte mich auch tatsächlich nur über den OP.
@fump2000: "TF autohotkey" erster treffer bei einer bekannten suchmaschine. Das mit den Ausreden müssen wir noch üben. und nwm und zurück on-topic.
@fump2000: "TF autohotkey" erster treffer bei einer bekannten suchmaschine. Das mit den Ausreden müssen wir noch üben. und nwm und zurück on-topic.
Re: Verwendung von Dateiinhalten
@strobo: Meiner Meinung nach ist TF ein ineffektives Monster, das man nur dann nutzen sollte, wenn man nicht die Möglichkeit hat, sein konkretes Problem selbst oder mit Hilfezu lösen.
Re: Verwendung von Dateiinhalten
@just me: Da magst du recht haben. TF kann aber wahrscheinlich Zeilen ersetzen/einfügen usw (danach fragte der OP 'damals') und dann könnte man sich bei Interesse auch den source code der entsprechenden Funktionen da angucken (oder bei string-things). Die Lösung der topic-Frage erreicht man (IMHO besser) ohne TF oder Zeilen ersetzen/einfügen, hierfür wollte ich es nicht empfohlen haben.
Re: Verwendung von Dateiinhalten
Ich habe wirklich nach TF und ahk gesucht ich muss meine Suchmethode überdenken aber ich habe gesucht das ist keine ausrede das andere hab ich ja auch gefunden.
Hab mir das TF angeschaut und es ist wirklich ein riesen Monster. Da stell ich lieber um auf INI und parte mir die Werte so zurecht wie ich es brauche.
Hab mir das TF angeschaut und es ist wirklich ein riesen Monster. Da stell ich lieber um auf INI und parte mir die Werte so zurecht wie ich es brauche.
Re: Verwendung von Dateiinhalten
Hab dir ja ein Beispiel gegeben wie das Ganze mit .ini aussehen 'könnte'.
[AHK] v2.0.5 | [WIN] 11 Pro (Version 22H2) | [GitHub] Profile
Re: Verwendung von Dateiinhalten
@fump2000: Ich fands nur _sehr leicht_ zu finden und wollte dir auch gar nichts unterstellen.
Wenn man jetzt .ini(s) einsetzen will, ist es IMHO nicht optimal window-title als section-header zu nehmen, da zwei fenster einer session den gleichen Titel haben können (?zwei gleiche section-header?), btw numerical-window-id hätte das problem nicht.
Wenn man jetzt .ini(s) einsetzen will, ist es IMHO nicht optimal window-title als section-header zu nehmen, da zwei fenster einer session den gleichen Titel haben können (?zwei gleiche section-header?), btw numerical-window-id hätte das problem nicht.
Re: Verwendung von Dateiinhalten
Du meinst aber hoffentlich nicht das von AHK unter der Bezeichnung ID gelieferte Handle?strobo wrote:... , btw numerical-window-id hätte das problem nicht.
Re: Verwendung von Dateiinhalten
Doch (also z.b. id = winexist("A")), wo liegt das problem?
Re: Verwendung von Dateiinhalten
Darin, dass das Handle jedesmal mehr oder weniger zufällig neu vergeben wird, wenn das Fenster erzeugt wird. Es ist sehr unwahrscheinlich, dass es nach einem Neustart identisch ist.
Re: Verwendung von Dateiinhalten
Richtig, der section-header enthält diesbezüglich dann keine verwertbare information, die steht einzig in der section (über sections kann man einigermassen bequem iterieren). Die section-header sind dann wenigstens session-mässig eindeutig (im gegensatz zu window-title).
Ich werde den .ini-Ansatz aber nicht fit machen (fit ist er für mein Verständnis immer noch nicht), es war nur eine neutrale Anmerkung dazu.
Ich werde den .ini-Ansatz aber nicht fit machen (fit ist er für mein Verständnis immer noch nicht), es war nur eine neutrale Anmerkung dazu.
Re: Verwendung von Dateiinhalten
Ich hab es nun auch INI umgestellt, ich muss sagen das geht einfacher als gedacht. Ich habe die eigentlichen Funktionen des Originalcodes gar nicht groß angepasst sondern eigentlich nur Code hinzugefügt der aus der INI das nötige rausholt und so in eine VAR schreibt das der Rest vom Script damit umgehen kann.
Beim Speichern war es schon etwas aufwendiger, dazu habe ich einen Code erstellt der jeden Fenstertitel mit den vorhandenen vergleicht. Es ist sicherlich etwas verzögerter verhindert aber doppelte Einträge. Ein vorhandener Eintrag wird lediglich aktualisiert. Nicht vorhandene werden hinzugefügt.
Ich wüsste nicht wie man etwas anderes als die Fenstertitel verwenden sollte. Alles andere ist ja von Session zu Session oder sogar von Programstart zu Programstart anders.
Code kommt sobald ich fertig bin. Möchte noch ein paar Dinge hinzufügen.
Beim Speichern war es schon etwas aufwendiger, dazu habe ich einen Code erstellt der jeden Fenstertitel mit den vorhandenen vergleicht. Es ist sicherlich etwas verzögerter verhindert aber doppelte Einträge. Ein vorhandener Eintrag wird lediglich aktualisiert. Nicht vorhandene werden hinzugefügt.
Ich wüsste nicht wie man etwas anderes als die Fenstertitel verwenden sollte. Alles andere ist ja von Session zu Session oder sogar von Programstart zu Programstart anders.
Code kommt sobald ich fertig bin. Möchte noch ein paar Dinge hinzufügen.
Re: Verwendung von Dateiinhalten
Hallo erstmal
Ich steh grad auf dem Schlauch...
Im Code vom DockWin gibt es diesen Teil zum wiederherstellen der Fenster:
Die Sache ist die, die Variable Win_maximized wird zwar erstellt und hat auch den aus der INI ausgelesenen Wert bzw. der eingelesene String wird geparst und so kommt der Wert 1 oder 0 in die Variable.
Lese ich den Teil aus mit msgbox % "Win_maximized=" Win_maximized " - MainState=" MainState " - m_id=" m_id erhalte ich auch die Werte.
Jedoch wird die Variable Win_maximized in der anschließenden if Prüfung einfach übergangen... Ich kappier nicht warum. Baue ich eine weitere Var ein und befülle sie mit einem Wert kann ich diesen auch normal per if prüfen aber bei dieser Var geht es nicht.
Kann mir irgendwer sagen warum das so sein kann? Ich verzweifel hier noch. Ich erhalte kurz vor her per msgbox noch genau die Werte die in der Bedingung geprüft werden und dennoch wird sie übergangen?! Ist für mich völlig unlogisch...
Hilfe
// EDIT:
Komisch... Ich verstehe es einfach nicht. Ändere ich die if Prüfung von If ((Win_maximized = 1) and (m_id not = "")) in If ((Win_maximized > 0) and (m_id not = "")) ab dann funktioniert es. In der msgbox ist der Wert für Win_maximized aber immer 1 nicht mehr und auch nicht weniger.
Was läuft da schief???
Ich steh grad auf dem Schlauch...
Im Code vom DockWin gibt es diesen Teil zum wiederherstellen der Fenster:
Code: Select all
Loop, Parse, SECTION_TEXT,`n
{
SectionFound:=1
Win_Title:="", Win_x:=0 , Win_y:=0, Win_width:=0, Win_height:=0, Win_maximized:=0
;Parse the elements in the CSV to extract recorded data
Loop, Parse, A_LoopField, CSV
{
EqualPos:=InStr(A_LoopField,"=")
Var:=SubStr(A_LoopField,1,EqualPos-1)
Val:=SubStr(A_LoopField,EqualPos+1)
IfInString, ParmVals, %Var%
{
;Remove any surrounding double quotes (")
If (SubStr(Val,1,1)=Chr(34))
{
StringMid, Val, Val, 2, StrLen(Val)-2
}
Win_%Var%:=Val
}
}
;Seems to be an iteration problem...
if (Win_Title = "")
continue
;Make sure we're matching something new each time we move a window
WinGet, matches, list, %Win_Title%,,,
m_id := ""
Loop, %matches%
{
cid := matches%A_Index%
Loop, %handle_list%
{
h := handle_list%A_Index%
if (h = cid)
{
m_id := cid
WinGet, MainState, MinMax, ahk_id %m_id%
msgbox % "Win_maximized=" Win_maximized " - MainState=" MainState " - m_id=" m_id
handle_list%A_Index% := 0
break 2
}
}
}
if (Win_maximized=1)
msgbox buh
If ((Win_maximized = 1) and (m_id not = ""))
{
if (MainState=0 || MainState=-1)
msgbox
WinRestore, ahk_id %m_id%
WinActivate, ahk_id %m_id%
WinMaximize, ahk_id %m_id%
PostMessage, 0x112, 0xF030,,, ahk_id %m_id% ; 0x112 = WM_SYSCOMMAND, 0xF030 = SC_MAXIMIZE
WinGetTitle, t, ahk_id %m_id%
msgbox
} Else If ( (StrLen(Win_Title) > 0) and (m_id not = "") )
{
WinRestore, ahk_id %m_id%
WinActivate, ahk_id %m_id%
WinGetTitle, t, ahk_id %m_id%
WinMove, A,,%Win_x%,%Win_y%,%Win_width%,%Win_height%
}
}
Lese ich den Teil aus mit msgbox % "Win_maximized=" Win_maximized " - MainState=" MainState " - m_id=" m_id erhalte ich auch die Werte.
Jedoch wird die Variable Win_maximized in der anschließenden if Prüfung einfach übergangen... Ich kappier nicht warum. Baue ich eine weitere Var ein und befülle sie mit einem Wert kann ich diesen auch normal per if prüfen aber bei dieser Var geht es nicht.
Kann mir irgendwer sagen warum das so sein kann? Ich verzweifel hier noch. Ich erhalte kurz vor her per msgbox noch genau die Werte die in der Bedingung geprüft werden und dennoch wird sie übergangen?! Ist für mich völlig unlogisch...
Hilfe
// EDIT:
Komisch... Ich verstehe es einfach nicht. Ändere ich die if Prüfung von If ((Win_maximized = 1) and (m_id not = "")) in If ((Win_maximized > 0) and (m_id not = "")) ab dann funktioniert es. In der msgbox ist der Wert für Win_maximized aber immer 1 nicht mehr und auch nicht weniger.
Was läuft da schief???
Re: Verwendung von Dateiinhalten
Ich denke, dass in Win_maximized mehr als nur eine einsame 1 steht. Wenn maximized die letzte Option in einer Zeile ist, folgt darauf normalerweise der Zeilenwechsel `r`n. Loop, Parse, SECTION_TEXT,`n entfernt nur das `n. Es gibt aber auch die Option, andere unerwünschte Zeichen entfernen zu lassen.
Re: Verwendung von Dateiinhalten
Klar... Du hast recht. Darauf bin ich nicht gekommen.
Meinst du während des parsen oder hinterher?just me wrote:Es gibt aber auch die Option, andere unerwünschte Zeichen entfernen zu lassen.
Re: Verwendung von Dateiinhalten
Oh, fump. Was glaubst Du? Wofür macht sich Ragnar die Mühe, eine deutsche Version der Hilfe zu erstellen und dabei auch noch die Beispiele zu übersetzen?
Wenn ich in einer Variablen nach Zeilen parsen würde, würde ich die Behandlung des Zeilenwechsels genau dort unterbringen.
Wenn ich in einer Variablen nach Zeilen parsen würde, würde ich die Behandlung des Zeilenwechsels genau dort unterbringen.
Re: Verwendung von Dateiinhalten
Ja.... man... hab das mit ZuEntfernendeZeichen immer überlesen weil noch nie gebraucht.
Hatte es aber eben gesehen nachdem ich gefragt habe, warst jetzt nur mit deiner Antwort schneller.
Entschuldigung.
//EDIT:
Nun hab ich es so angepasst Loop, Parse, SECTION_TEXT,`n,`r dennoch wird die 1 nicht als 1 wahrgenommen...
//EDIT2:
man man man... ich sollte echt nochmal zur Schule... komm mir vor wie so ein nörgelndes Kleinkind... Naja. Es geht nun. Im Script wird CrLf als Var gebildet mit `r`n nun habe ich dies umgestellt auf `n`r und jetzt läuft natürlich auch das parsen vernünftig.
Hatte es aber eben gesehen nachdem ich gefragt habe, warst jetzt nur mit deiner Antwort schneller.
Entschuldigung.
//EDIT:
Nun hab ich es so angepasst Loop, Parse, SECTION_TEXT,`n,`r dennoch wird die 1 nicht als 1 wahrgenommen...
//EDIT2:
man man man... ich sollte echt nochmal zur Schule... komm mir vor wie so ein nörgelndes Kleinkind... Naja. Es geht nun. Im Script wird CrLf als Var gebildet mit `r`n nun habe ich dies umgestellt auf `n`r und jetzt läuft natürlich auch das parsen vernünftig.
Who is online
Users browsing this forum: No registered users and 22 guests