Aktuelles Verzeichnis in TC auslesen mittels AHK
Moderators: white, Hacker, Stefan2
Pfad.ahk unter Windows 7
Hallo,
unter Windows XP hat dieser Code bei mir funktioniert:
Unter Windows 7 habe ich AutoHotkey neu installiert und den genannten Code mit TMyPanel1 bis TMyPanel5 ausprobiert, jedoch ohne Erfolg.
Für einen Rat wäre ich sehr dankbar.
unter Windows XP hat dieser Code bei mir funktioniert:
Code: Select all
#IfWinExist, ahk_class TTOTAL_CMD
; Default shortcut is Win-A
$#a::
ControlGetText, PathInTC, TMyPanel3, ahk_class TTOTAL_CMD
StringReplace, PathInTC, PathInTC, >, \
SendInput, {Raw}%PathInTC%
Return
Für einen Rat wäre ich sehr dankbar.
Gruß,
Karl
Karl
Hallo Holger,
ja, ich benutze jetzt den TC 64Bit (TOTALCMD64.EXE umbenannt in Explorer.exe [wegen Norton Internet Security 2014]).
Mit "AU3_Spy.exe" bekomme ich immer andere Werte in ClassNN,
je nachdem in welches Fenster ich klicke (TC, Excel, usf.).
Kannst Du mir bitte noch genauer erklären was ich tun muß.
Danke!
ja, ich benutze jetzt den TC 64Bit (TOTALCMD64.EXE umbenannt in Explorer.exe [wegen Norton Internet Security 2014]).
Mit "AU3_Spy.exe" bekomme ich immer andere Werte in ClassNN,
je nachdem in welches Fenster ich klicke (TC, Excel, usf.).
Kannst Du mir bitte noch genauer erklären was ich tun muß.
Danke!
Gruß,
Karl
Karl
- AU3_Spy starten
- in den TC klicken
- mit der Maus über die Pfadangabe neben der Kommandozeile hovern (notfalls Kommandozeile erst sichtbar schalten)
- Den Namen von "Now Under Mouse Cursor" ClassNN: ... ablesen.
Wie bereits gesagt, sollte Window8 sein (TC8.5b11 x64).
Diesen Namen dann anstelle von TMyPanelN in deinem Script benutzen.
Gruss
Holger
- in den TC klicken
- mit der Maus über die Pfadangabe neben der Kommandozeile hovern (notfalls Kommandozeile erst sichtbar schalten)
- Den Namen von "Now Under Mouse Cursor" ClassNN: ... ablesen.
Wie bereits gesagt, sollte Window8 sein (TC8.5b11 x64).
Diesen Namen dann anstelle von TMyPanelN in deinem Script benutzen.
Gruss
Holger
Pfad.ahk unter Windows 7
Hallo Holger,
vielen Dank für Deine detaillierte Beschreibung - jetzt funktioniert's!
TMyPanelN habe ich auf Window7 geändert.
Nochmals danke!
vielen Dank für Deine detaillierte Beschreibung - jetzt funktioniert's!
Code: Select all
#IfWinExist, ahk_class TTOTAL_CMD
; Default shortcut is Win-A
$#a::
ControlGetText, PathInTC, Window7, ahk_class TTOTAL_CMD
StringReplace, PathInTC, PathInTC, >, \
SendInput, {Raw}%PathInTC%
Return
Nochmals danke!
Gruß,
Karl
Karl
Pfad einfügen in "Speichern-unter"-Dialog – WIN+A
Leider habe ich wieder ein Problem mit diesem Skript - nun mit TC 9.0 - und bitte um Unterstützung.
Ich verwende TC 9.0ß2 64 bit, Win10 Pro x64 mit folgendem Code:
Meine Vorgangsweise ist immer dieselbe:
1. Start des AHK-Skripts über den Autostart, d.h. C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\
2. TC starten, gewünschtes Verzeichnis aufrufen
3. z.B. eine Textdatei mit "Datei - speichern unter..." in dem gewünschten - zuvor im TC gewählten Verzeichnis -
speichern indem man in dem Dialog zuvor den Cursor vor den Dateinamen setzt und WIN + A drückt (Pfad aus TC wird eingefügt).
> Unter TC 8.52a ist das speichern (mit autom. eingefügtem Pfad!) wie vorher beschrieben nach wie vor möglich
> Unter TC 9.0 (Beta 1 und 2) wird der Pfad vor dem Dateinamen nicht mehr automatisch eingefügt.
Erst wenn ich das AHK-Skript im System-Tray beende und neu starte - dann funktioniert es auch in TC 9.0.
Dies ist auf die Dauer etwas lästig, denn man sieht ja im Systray das gestartete Skript (nur leider hat es keine Auswirkung bis zum Neustart)
Weiß jemand Rat?
Ich verwende TC 9.0ß2 64 bit, Win10 Pro x64 mit folgendem Code:
Code: Select all
#IfWinExist, ahk_class TTOTAL_CMD
; Default shortcut is Win-A
$#a::
ControlGetText, PathInTC, Window8, ahk_class TTOTAL_CMD
StringReplace, PathInTC, PathInTC, >, \
SendInput, {Raw}%PathInTC%
Return
1. Start des AHK-Skripts über den Autostart, d.h. C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\
2. TC starten, gewünschtes Verzeichnis aufrufen
3. z.B. eine Textdatei mit "Datei - speichern unter..." in dem gewünschten - zuvor im TC gewählten Verzeichnis -
speichern indem man in dem Dialog zuvor den Cursor vor den Dateinamen setzt und WIN + A drückt (Pfad aus TC wird eingefügt).
> Unter TC 8.52a ist das speichern (mit autom. eingefügtem Pfad!) wie vorher beschrieben nach wie vor möglich
> Unter TC 9.0 (Beta 1 und 2) wird der Pfad vor dem Dateinamen nicht mehr automatisch eingefügt.
Erst wenn ich das AHK-Skript im System-Tray beende und neu starte - dann funktioniert es auch in TC 9.0.
Dies ist auf die Dauer etwas lästig, denn man sieht ja im Systray das gestartete Skript (nur leider hat es keine Auswirkung bis zum Neustart)
Weiß jemand Rat?
Gruß,
Karl
Karl
- ghisler(Author)
- Site Admin
- Posts: 48118
- Joined: 2003-02-04, 09:46 UTC
- Location: Switzerland
- Contact:
Bei TC9 kann man neu eine Message wm_user+50 an das Hauptfenster schicken, um das Window-Handle eines Dialogelements zurückzuerhalten.
Dazu muss wparam auf einen der folgenden Werte gesetzt werden:
1=leftlist, 2=rightlist, 3=active list, 4=inactive list, 5=leftheader, 6=rightheader, 7=leftsize, 8=rightsize, 9=leftpath, 10=rightpath, 11=leftinfo, 12=rightinfo, 13=leftdrives, 14=rightdrives, 15=leftpanel, 16=rightpanel, 17=bottompanel, 18=lefttree, 19=righttree, 20=cmdline, 21=curdirpanel, 22=inplaceedit, 23=splitpanel, 24=leftdrivepanel, 25=rightdrivepanel, 26=lefttabs, 27=righttabs, 28=buttonbar, 29=buttonbarvertical
Hier sieht man wie man das anwendet:
http://ghisler.ch/board/viewtopic.php?p=310249
Dazu muss wparam auf einen der folgenden Werte gesetzt werden:
1=leftlist, 2=rightlist, 3=active list, 4=inactive list, 5=leftheader, 6=rightheader, 7=leftsize, 8=rightsize, 9=leftpath, 10=rightpath, 11=leftinfo, 12=rightinfo, 13=leftdrives, 14=rightdrives, 15=leftpanel, 16=rightpanel, 17=bottompanel, 18=lefttree, 19=righttree, 20=cmdline, 21=curdirpanel, 22=inplaceedit, 23=splitpanel, 24=leftdrivepanel, 25=rightdrivepanel, 26=lefttabs, 27=righttabs, 28=buttonbar, 29=buttonbarvertical
Hier sieht man wie man das anwendet:
http://ghisler.ch/board/viewtopic.php?p=310249
Author of Total Commander
https://www.ghisler.com
https://www.ghisler.com
2Ghisler(author)
Vielen Dank für Ihre Hinweise und den Link zu den Beispielen.
Ich habe als Nichtprogrammierer jetzt trotzdem mehrere Versuche gestartet [OT: ganz schön anstrengend und meist erfolglos].
Es ist mir anhand der Beispiele gelungen bei active panel (1=left, 2=right)
das Hinweisfenster "Answer from TC, active panel (1=left, 2=right) : 1" zu erhalten.
Wenn ich das Fenster mit "OK" bestätige, dann funktioniert alles!
Leider weiß ich nicht, wie man dieses Fenster unterdrücken könnte.
Ein Versuch mit einem Code aus einem anderen AHK-Skript: Send, {OK}
war nicht erfolgreich (vielleicht auch an falscher Stelle eingesetzt?).
Dzt. sieht der unvollständige Code so aus:
Bitte daher nochmals um einen Tipp um das Hinweisfenster zu entfernen.
Besten Dank im voraus.
Vielen Dank für Ihre Hinweise und den Link zu den Beispielen.
Ich habe als Nichtprogrammierer jetzt trotzdem mehrere Versuche gestartet [OT: ganz schön anstrengend und meist erfolglos].
Es ist mir anhand der Beispiele gelungen bei active panel (1=left, 2=right)
das Hinweisfenster "Answer from TC, active panel (1=left, 2=right) : 1" zu erhalten.
Wenn ich das Fenster mit "OK" bestätige, dann funktioniert alles!
Leider weiß ich nicht, wie man dieses Fenster unterdrücken könnte.
Ein Versuch mit einem Code aus einem anderen AHK-Skript: Send, {OK}
war nicht erfolgreich (vielleicht auch an falscher Stelle eingesetzt?).
Dzt. sieht der unvollständige Code so aus:
Code: Select all
#IfWinExist, ahk_class TTOTAL_CMD
{
SendMessage 1074, 1000, 0, , ahk_class TTOTAL_CMD
MsgBox Answer from TC, active panel (1=left, 2=right) : %ErrorLevel%
return
}
; WM_USER+50 = 1074
; Default shortcut is Win-A
$#a::
ControlGetText, PathInTC, Window8, ahk_class TTOTAL_CMD
StringReplace, PathInTC, PathInTC, >, \
SendInput, {Raw}%PathInTC%
Return
Besten Dank im voraus.
Gruß,
Karl
Karl
Hoppla, kaum macht man es richtig, funktioniert's auch schon:
Besten Dank nochmals für die Unterstützung!
Code: Select all
#IfWinExist, ahk_class TTOTAL_CMD
$#a::
ControlGetText, PathInTC, Window8, ahk_class TTOTAL_CMD
StringReplace, PathInTC, PathInTC, >, \
SendInput, {Raw}%PathInTC%
Return
{
SendMessage 1074, 1000, 0, , ahk_class TTOTAL_CMD
MsgBox Answer from TC, active panel (1=left, 2=right) : %ErrorLevel%
return
}
; WM_USER+50 = 1074
; Default shortcut is Win-A
Gruß,
Karl
Karl
- ghisler(Author)
- Site Admin
- Posts: 48118
- Joined: 2003-02-04, 09:46 UTC
- Location: Switzerland
- Contact:
Das Panel mit dem aktuellen Verzeichnis ist curdirpanel, das ist Nummer 21. Also muss man aufrufen:
SendMessage 1074, 21, 0, , ahk_class TTOTAL_CMD
Das Resultat sollte dann in %ErrorLevel% stecken.
Also ruft man auf:
SendMessage 1074, 21, 0, , ahk_class TTOTAL_CMD
ControlGetText, PathInTC, %ErrorLevel%, ahk_class TTOTAL_CMD
StringReplace, PathInTC, PathInTC, >, \
SendInput, {Raw}%PathInTC%
Sorry, hatte noch nicht die Zeit das zu testen...
SendMessage 1074, 21, 0, , ahk_class TTOTAL_CMD
Das Resultat sollte dann in %ErrorLevel% stecken.
Also ruft man auf:
SendMessage 1074, 21, 0, , ahk_class TTOTAL_CMD
ControlGetText, PathInTC, %ErrorLevel%, ahk_class TTOTAL_CMD
StringReplace, PathInTC, PathInTC, >, \
SendInput, {Raw}%PathInTC%
Sorry, hatte noch nicht die Zeit das zu testen...
Author of Total Commander
https://www.ghisler.com
https://www.ghisler.com
Danke für den neuen Code (siehe untenstehend)!ghisler(Author) wrote:... Sorry, hatte noch nicht die Zeit das zu testen...
> Ihren Code habe ich in dieses AHK-Skript gegeben und es läuft perfekt ab TC 9.0 64-bit!
> Unter TC 9.0 32-bit funktioniert das AHK-Skript nicht.
> Unter TC 8.52a funktioniert das AHK-Skript nicht, da es diese Befehle erst ab TC 9.0 gibt.
Mit dem Code wie hier angegeben funktioniert's in TC 8.52a [Edit: nun auch nicht mehr!]:
http://ghisler.ch/board/viewtopic.php?p=310335#310335
Code: Select all
#IfWinExist, ahk_class TTOTAL_CMD
$#a::
ControlGetText, PathInTC, Window8, ahk_class TTOTAL_CMD
StringReplace, PathInTC, PathInTC, >, \
SendInput, {Raw}%PathInTC%
Return
{
SendMessage 1074, 21, 0, , ahk_class TTOTAL_CMD
ControlGetText, PathInTC, %ErrorLevel%, ahk_class TTOTAL_CMD
StringReplace, PathInTC, PathInTC, >, \
SendInput, {Raw}%PathInTC%
return
}
; WM_USER+50 = 1074
; Default shortcut is Win-A
Last edited by tuska on 2016-06-18, 06:33 UTC, edited 1 time in total.
Gruß,
Karl
Karl
This script works universally in both 32-bit and 64-bit TC, 8.52a and 9.0 Beta.
Dieses Skript funktioniert universell, sowohl mit dem 32-bit als auch mit dem 64-bit TC, 8.52a und 9.0 Beta.
I will have to try out the new functions, too.
Die neuen Funktionen werde ich noch ausprobieren müssen.
Roman
EDIT: Deutschen Text hinzugefügt, sorry.
Dieses Skript funktioniert universell, sowohl mit dem 32-bit als auch mit dem 64-bit TC, 8.52a und 9.0 Beta.
Code: Select all
#IfWinExist, ahk_class TTOTAL_CMD
; Default shortcut is Win-A
$#a::
WinGetText, TCWindowText, ahk_class TTOTAL_CMD
RegExMatch(TCWindowText, "(?<=\n).*(?=>)", PathInTC)
Send, {Raw}%PathInTC%\
Return
Die neuen Funktionen werde ich noch ausprobieren müssen.
Roman
EDIT: Deutschen Text hinzugefügt, sorry.
Last edited by Hacker on 2016-06-17, 21:20 UTC, edited 1 time in total.
Mal angenommen, du drückst Strg+F, wählst die FTP-Verbindung (mit gespeichertem Passwort), klickst aber nicht auf Verbinden, sondern fällst tot um.
tuska,
BTW: Funktioniert hier einwandfrei seit Jahren. Ich weiss leider nicht, was ich da überprüfen könnte.
EDIT: Vielleicht ändert das was?
TIA
Roman
Vor welchem Dateinamen?im Moment wird vor dem Dateinamen nur ein "\" Backslash ergänzt
BTW: Funktioniert hier einwandfrei seit Jahren. Ich weiss leider nicht, was ich da überprüfen könnte.
EDIT: Vielleicht ändert das was?
Code: Select all
#IfWinExist, ahk_class TTOTAL_CMD
; Default shortcut is Win-A
$#a::
WinGetText, TCWindowText, ahk_class TTOTAL_CMD
; RegExMatch(TCWindowText, "\n(.*)>", PathInTC)
RegExMatch(TCWindowText, "(?<=\n).*?(?=>)", PathInTC)
Send, {Raw}%PathInTC%\
Return
Roman
Mal angenommen, du drückst Strg+F, wählst die FTP-Verbindung (mit gespeichertem Passwort), klickst aber nicht auf Verbinden, sondern fällst tot um.