Verzeichnisse synchronisieren und ausgewählte Dateien öffnen

German support forum

Moderators: Hacker, Stefan2, white

Juergen
Power Member
Power Member
Posts: 517
Joined: 2003-05-02, 18:19 UTC
Location: Berlin (Germany)
Contact:

Post by *Juergen »

Mit der Zeile

Code: Select all

   #IfWinActive, ahk_class TCmpForm
macht das Script unter Windows 98 zwar im "Verzeichnisse synchronisieren"-Dialog das, was es machen soll. Aber die Zeile bewirkt, dass die Tasten F4, Shift-F4 unf Strg-F4 im Hauptfenster von TC "tot" sind, wenn das Script läuft.

Ohne die Zeile ging's besser. :) Aber, wie ich jetzt gemerkt habe, auch nicht soooo gut: Bei F4 poppt dann nur kurz zwischendurch ein Lister-Fenster auf, aber Shift-F4 unf Strg-F4 haben ihre normale Funktion verloren.

Ist schon dämlich, dass AHK verschiedene Windows-Versionen so unterschiedlich behandelt (und dann unter Windows 98 noch nicht einmal eine Fehlermeldung ausgibt, wenn ein Script Befehle enthält, die nicht unterstützt werden!).

Das folgende läuft anscheinend korrekt unter Windoes 98:
[edit]Ich lass das mal so stehen, weil man schön sehen kann wie umständlich es ist, den Code auf diese Art umzuschreiben. :) Inzwischen ist eine einfachere Methode bekannt.[/edit]

Code: Select all

LaunchEditor()
{
  SendInput, {Blind}{F3}
  WinWaitActive, ahk_class TLister, , 1
  If Errorlevel
    Return
  WinGetTitle, title
  left := InStr(title, "[") + 1
  right := InStr(title, "]") - left
  StringMid, Filename, title, left, right
  WinClose, ahk_class TLister
  Run, <Path>\ChoiceEditor.exe "%Filename%"
}

$F4::                                     ; F4
  IfWinActive, ahk_class TCmpForm
  {
    LaunchEditor()
    Return
  }
  Send {F4}
  Return

$+F4::                                    ; Shift-F4
  IfWinActive, ahk_class TCmpForm
  {
    LaunchEditor()
    Return
  }
  Send +{F4}
  Return

$^F4::                                    ; Ctrl-F4
  IfWinActive, ahk_class TCmpForm
  {
    SendInput, ^{F3}
    WinWaitActive, ahk_class #32770, , 1
    If not Errorlevel
    {
      WinClose
      WinClose, ahk_class TFileCompForm
      Return
    }
    WinWaitActive, ahk_class TFileCompForm
    ControlGetText, FileLeft, TEdit1
    ControlGetText, FileRight, TEdit2
    WinClose, ahk_class TFileCompForm
    Run, <Path>\ChoiceEditor.exe "%FileLeft%" "%FileRight%"
    Return
  }
  Send ^{F4}
  Return
Übrigens scheint der ChoiceEditor manchmal zu "spinnen", d.h. es dauert teilweise ewig, bis sein Auswahldialog erscheint, oder bis er eine Datei an ein ihm bereits bekanntes Programm weitergibt. Manchmal reagiert er anscheinend gar nicht (oder ich hätte noch länger warten müssen ...). Ich hab mir jetzt selbst ein entspr. Programm geschrieben (ohne GUI). Wenn Interesse besteht, könnte ich es noch gründlicher testen, eine kurze Dokumentation schreiben und es dann veröffentlichen.

Nochmal danke für deine viele Arbeit.

Gruß, Jürgen
Last edited by Juergen on 2006-06-03, 09:42 UTC, edited 1 time in total.
My add-ons and plugins for TC: NiftyLink, mbox, Sequences
icfu
Power Member
Power Member
Posts: 6052
Joined: 2003-09-10, 18:33 UTC

Post by *icfu »

Wenn Du mit dem neuesten AHK die von Dir beschriebenen Probleme hast, handelt es sich um Bugs in AHK, siehe dazu die Hilfe:
In versions older than 1.0.42, #IfWin was more limited:

Windows 95/98/Me: With the exception of joystick hotkeys, the #IfWin directives were ignored because they required the keyboard hook or mouse hook. In v1.0.42+, #IfWin is supported.
Duplicate hotkeys (variants) were not allowed. Instead, window groups were typically used to make a hotkey active in more than one type of window.
The Last Found Window was not set by #IfWin.
Der AHK-Entwickler ist sehr aktiv und beantwortet Bugreports typischerweise innerhalb eines Tages. Ich habe selbst leider kein W9X-System zum testen zur Hand, daher kann ich da nicht weiterhelfen.

Icfu
This account is for sale
Juergen
Power Member
Power Member
Posts: 517
Joined: 2003-05-02, 18:19 UTC
Location: Berlin (Germany)
Contact:

Post by *Juergen »

icfu wrote:siehe dazu die Hilfe:
In versions older than 1.0.42, #IfWin was more limited:

Windows 95/98/Me: With the exception of joystick hotkeys, the #IfWin directives were ignored because they required the keyboard hook or mouse hook. In v1.0.42+, #IfWin is supported.
Duplicate hotkeys (variants) were not allowed. Instead, window groups were typically used to make a hotkey active in more than one type of window.
The Last Found Window was not set by #IfWin.
Mag sein, dass das früher noch "more limited" war. Aber das bedeutet ja nicht, dass das nun unter Windows 98 vollständig unterstützt wird.

Den von dir zitierten Text finde ich in der Hilfe zur neusesten AHK-Version 1.0.44.04 unter #Directives, #IfWinActive/Exists, Abschnitt "General Remarks". Auf der selben Hilfeseite etwas weiter oben im Abschnitt "Basic Operation" steht:
When a mouse or keyboard hotkey is disabled via #IfWin, it performs its native function; that is, it passes through to the active window as though there is no such hotkey. There are two exceptions: 1) Windows 95/98/Me: pressing an IfWin-disabled hotkey has no effect (not even its native function);
Das erklärt doch dass ein Script, das mit #IfWinActive anfängt, unter Windows 98 die normale Funktion der betr. Hotkeys abschaltet. Ich verstand/verstehe den Text so, dass es sich um eine bekannte bzw. bewusst in Kauf genommene Inkompatibilität mit Windows 95/98/Me handelt. Leider.

Gruß, Jürgen
My add-ons and plugins for TC: NiftyLink, mbox, Sequences
icfu
Power Member
Power Member
Posts: 6052
Joined: 2003-09-10, 18:33 UTC

Post by *icfu »

Jep, Du hast Recht, der Absatz war mir neu. Bleibt wohl nur, alle Scripts entsprechend umzuschreiben.

Ich werde mich aber definitiv nicht mehr an die alte Syntax annähern, dafür sind die Vorteile, insbesondere die Übersichtlichkeit der Scripts, einfach zu groß. Vielleicht tut sich ja noch was für W9X-User in Zukunft.

Icfu
This account is for sale
Juergen
Power Member
Power Member
Posts: 517
Joined: 2003-05-02, 18:19 UTC
Location: Berlin (Germany)
Contact:

Post by *Juergen »

icfu wrote:Jep, Du hast Recht, der Absatz war mir neu. Bleibt wohl nur, alle Scripts entsprechend umzuschreiben.

Ich werde mich aber definitiv nicht mehr an die alte Syntax annähern, dafür sind die Vorteile, insbesondere die Übersichtlichkeit der Scripts, einfach zu groß.
Auch wenn das für Windows 98-Benutzer wie mich nicht optimal ist, muss ich ehrlicherweise zugeben, dass ich das gut verstehen kann. :) Entsprechend enttäuscht war ich daher auch als ich feststellte, dass diese neue Syntax unter Windows 9x nicht richtig unterstützt wird. Mir ist übrigens wieder eingefallen wo ich zuerst (gut dargestellt) etwas darüber gelesen hatte, nämlich in einem Artikel der AHK FAQ.
icfu wrote:Vielleicht tut sich ja noch was für W9X-User in Zukunft.
Ich habe mal im AHK-Forum danach gefragt. Der Autor antwortet: "... there are no plans to support the 'native function' aspect of #IfWin on Windows 9x ...". Aber nach einer Anregung von ihm habe ich jetzt anscheinend eine viel einfachere Möglichkeit zum Umschreiben gefunden als die, die ich bisher -- entspr. dem genannten FAQ-Artikel -- benutzt habe. Um z.B. dieses Script von dir anzupassen reicht es, an den Anfang zu schreiben ( getestet unter Windows 98 ):

Code: Select all

#IfWinNotActive, ahk_class TCmpForm
 $F4:: Send  {F4}
$+F4:: Send +{F4}
$^F4:: Send ^{F4}
Gruß, Jürgen
My add-ons and plugins for TC: NiftyLink, mbox, Sequences
icfu
Power Member
Power Member
Posts: 6052
Joined: 2003-09-10, 18:33 UTC

Post by *icfu »

Prima, wenn der Workaround klappt, das klingt sehr praktikabel. Allerdings funktioniert diese Lösung tatsächlich nur unter W9X; unter XP gibt es die Fehlermeldung "Error: Duplicate Hotkey", daher kann man die Scripts nicht standardmäßig damit bestücken.

Icfu
This account is for sale
Juergen
Power Member
Power Member
Posts: 517
Joined: 2003-05-02, 18:19 UTC
Location: Berlin (Germany)
Contact:

Post by *Juergen »

Das ist gut zu wissen.
Ich habe das jetzt mal in einem Artikel im deutschen TC-Wiki zusammengefasst.

Gruß, Jürgen
My add-ons and plugins for TC: NiftyLink, mbox, Sequences
icfu
Power Member
Power Member
Posts: 6052
Joined: 2003-09-10, 18:33 UTC

Post by *icfu »

Sorry, ich hatte das "Not" überlesen beim ersten Ausprobieren, das war ein Mißverständnis. In dieser Form funktioniert das Script auch unter XP!

Bevor Du was änderst am Artikel, laß es lieber noch von anderen gegenchecken, ich bin im Moment zu gestreßt, um klare Aussagen zu treffen. ;)

Icfu
This account is for sale
Juergen
Power Member
Power Member
Posts: 517
Joined: 2003-05-02, 18:19 UTC
Location: Berlin (Germany)
Contact:

Post by *Juergen »

icfu wrote:Sorry, ich hatte das "Not" überlesen beim ersten Ausprobieren, das war ein Mißverständnis. In dieser Form funktioniert das Script auch unter XP!
Cool. 8) Danke für den Hinweis.
icfu wrote:Bevor Du was änderst am Artikel, laß es lieber noch von anderen gegenchecken,
Ich werde die Aussage betr. Windows XP erstmal etwas relativieren, ist ja schnell gemacht. Aber dann wäre es natürlich schön, wenn es noch gegengecheckt wird -- ebenso wäre interessant, ob meine Erfahrung unter Windows 98 z.B. auch für Windows Me zutrifft.
icfu wrote: ich bin im Moment zu gestreßt, um klare Aussagen zu treffen. ;)
Dann wünsche ich dir entspannte Feiertage und FF (Froe Finksten). :)

Gruß, Jürgen
My add-ons and plugins for TC: NiftyLink, mbox, Sequences
icfu
Power Member
Power Member
Posts: 6052
Joined: 2003-09-10, 18:33 UTC

Post by *icfu »

Danke, Dir auch. ;)

Icfu
This account is for sale
Post Reply