Deutsches AutoHotkey Homepage AutoHotkey Community
Wir helfen uns gegenseitig aus der Patsche
 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

AHK CopyPassage v2.0
Gehe zu Seite Zurück  1, 2, 3  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    AutoHotkey Community Foren-Übersicht -> Skripte & Funktionen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
halweg



Anmeldedatum: 05.01.2006
Beiträge: 782
Wohnort: Dresden

BeitragVerfasst am: Mo Jan 23, 2006 3:17 pm    Titel: Antworten mit Zitat

AGU hat Folgendes geschrieben:
Wie man sowas in das Kontextmenü eines Browsers integriert ist mir übrigens nicht bekannt. Das würde wahrscheinlich Modifikationen an der Windows Registrierung erfordern.

Genau das würde es. Aber soweit ich das überblicke ist das Modifizieren des Kontextmenüs per Registry ein im englischen Forum viel diskutiertes Thema. Wär jedenfalls schön, weil meine 3 zusätzlichen Maustasten schon stark belegt sind und die rechte Maustaste für solche Übungen schön intuitiv wäre.
Hier übrigens der Registry-Schlüssel für das IE-Kontextmenü
Code:
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt


AGU hat Folgendes geschrieben:
Was meinst du eigentlich mit der Einbindung in ein anderes Skript? Das könnte ein bisschen Arbeit nach sich ziehen. Überprüfen ob Variablen nicht doppel belegt sind, Gui Nummerierung anpassen, falls in deinem Skript ebenfalls Guis existieren, ...

Im Prinzip reicht für eine Einbindung eine Bereitstellung des Quelltextes und eine saubere Programmierung. Der Initialisierungsteil müsste fein säuberlich vom Hotkey-Teil getrennt werden, Verzeichnissnamen und andere volatile Teile (z. B. das Anlegen von Registry-Einträgen) müssten schön am Anfang stehen und gekennzeichnet sein, Funktionen und Unterprogramme müssten ihre Funktion durch einen kurzen Kommentar preisgeben, damit man sie ohne spätere Verständnisprbleme zur Reihe der eigenen Funktionen dazunehmen könnte.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Thalon



Anmeldedatum: 25.10.2005
Beiträge: 1867
Wohnort: Österreich

BeitragVerfasst am: Mo Jan 23, 2006 3:26 pm    Titel: Antworten mit Zitat

Wie man Dinge in ein Context-Menü added ist irgendwo im englischen Forum auffindbar. Geht in jedem Fall über eine Manipulation der Registry.

Eine Einbindung in ein anderes Script schafft meiner Erfahrung nach keine Übersicht. Ich unterteile meine Scripts teilweise sogar in Komponenten, die ich mit "#Include" einfüge.

Falls es einigermaßen fertig ist werde ich es mir auch einmal ansehen.
Sind sicherlich einige interessante Dinge vorhanden...

Thalon

Edit: Kaum muss man während des schreibens kurz weg hats schon wer andrer schöner gepostet ^^
_________________
Mein Motto: Hilfe zur Selbsthilfe!
Teildeutsche Hilfe (CHM)!! und Deutsche Online-Hilfe
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
halweg



Anmeldedatum: 05.01.2006
Beiträge: 782
Wohnort: Dresden

BeitragVerfasst am: Mo Jan 23, 2006 3:29 pm    Titel: Antworten mit Zitat

Was den Namen angeht, wäre mein Vorschlag: Notes Saver
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AGermanUser



Anmeldedatum: 25.10.2005
Beiträge: 167

BeitragVerfasst am: Do Jan 26, 2006 5:50 pm    Titel: Antworten mit Zitat

Nach dem Motto "Versuch macht kluch" Wink hier also wie versprochen die nächste Version.

Puh, hat doch länger gedauert als ich angenommen habe. Ständig musste ich an der einen oder anderen Ecke nachfeilen, Fehlbenutzungen abfangen, dann auf einmal wieder beim Testen irgend ein komisches Verhalten, das durch einen Sonderfall ausgelöst wurde, ...
So ging das ewig weiter. Hab schon gedacht ich werd überhaupt nicht mehr fertig. Wink

Dadurch sind jetzt wieder viele Zeilen Code dazugekommen, die höchstwahrscheinlich sowohl verbessert werden, als auch den einen oder anderen Fehler produzieren könnten (Was ich dennoch nicht hoffe).
Also, wenn ihr lustig seid, schaut es euch doch mal an, und meldet etwaige Fehler.

Alles weitere übrigens im aktualisierten Posting. Mr. Green

Mich interessiert vor allem, ob die Icons im Kontextmenü richtig angezeigt werden.
Ach ja, bin natürlich weiter offen für weitere Verbesserungsvorschläge, nachdem meine ToDo Liste jetzt wieder einigermaßen leer ist. Mr. Green

Um die Einbindung in das Kontextmenü habe ich mich noch nicht gekümmert. Das muss ich erst durchdenken. Wollte erstmal die Sachen auf meiner ToDo Liste abarbeiten.
Aber vielleicht habt ihr ja eine gute Idee dazu?
_________________
Gruß
AGermanUser a.k.a. AGU
Moderator
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
toralf as guest
Gast





BeitragVerfasst am: Do Jan 26, 2006 8:31 pm    Titel: Antworten mit Zitat

Ok, some code comments

a) this
Code:
  If ShrtCtGui not contains #
    {
      ; Uncheck 'Use WIN key' checkbox
      ; Disable 'Win  +' text control
      GuiControl, 2:, Button10, 0
      GuiControl, 2:Disable, Static11
     
      ; Assign Hotkey to hotkey control     
      GuiControl, 2:, HotkeyGui, %ShrtCtGui%
    }
  Else
    {
      ; Check 'Use WIN key' checkbox
      GuiControl, 2:, Button10, 1
     
      ; Remove 'WIN key' from ShrtCtGui
      ; But leave ShrtCtGui untouched for later Hotkey disabling
      CleanGuiShrtCt = %ShrtCtGui%
      StringReplace, CleanGuiShrtCt, CleanGuiShrtCt, #
      GuiControl, 2:, HotkeyGui, %CleanGuiShrtCt%
    }
could be
Code:
  If ShrtCtGui not contains #
    {
      ; Uncheck 'Use WIN key' checkbox
      ; Disable 'Win  +' text control
      GuiControl, 2:, Button10, 0
      GuiControl, 2:Disable, Static11
    }
  Else
    {
      ; Check 'Use WIN key' checkbox
      GuiControl, 2:, Button10, 1
     
      ; Remove 'WIN key' from ShrtCtGui
      ; But leave ShrtCtGui untouched for later Hotkey disabling
      StringReplace, ShrtCtGui, ShrtCtGui, #
    }
  ; Assign Hotkey to hotkey control     
  GuiControl, 2:, HotkeyGui, %ShrtCtGui%



b) this
Code:
  If ChkCopyWinKey = 0
    {
      GuiControl, 2:Disable, Static10
    }
  Else If ChkCopyWinKey = 1
    {
      GuiControl, 2:Enable, Static10
    }
could be
Code:
      GuiControl, 2:Enable%ChkCopyWinKey%, Static10


c) this
Code:
; Read previous Gui dimensions and position
IniRead, PosX, config.ini, GuiPosition, X_Pos, x150
IniRead, PosY, config.ini, GuiPosition, Y_Pos, y150
IniRead, GuiW, config.ini, GuiDimension, W_Gui, w681
IniRead, GuiH, config.ini, GuiDimension, H_Gui, h401

      ; Show Gui
      Gui, 1:Show, x%PosX% y%PosY% w%GuiW% h%GuiH%, %ScriptName%

      IniWrite, %PosX%, config.ini, GuiPosition, X_Pos
      IniWrite, %PosY%, config.ini, GuiPosition, Y_Pos
     
      IniWrite, %GuiW%, config.ini, GuiDimension, W_Gui
      IniWrite, %GuiH%, config.ini, GuiDimension, H_Gui
could be
Code:
; Read previous Gui dimensions and position
IniRead, Gui1_Pos, config.ini, GuiPosition, Gui1_Pos, x150 y150 w681 h401

      ; Show Gui
      Gui, 1:Show, %Gui1_Pos%, %ScriptName%

      IniWrite, x%PosX% y%PosY% w%GuiW% h%GuiH%, config.ini, GuiPosition, Gui1_Pos



d) I believe you could handle the INI settings for the browser more elegant. But since I didn't understand yet, what you did, I can't tell you how. It just looks to complicated to me.

Thats it for tonight.

.... Und ich bin schon wieder ins Englische verfallen. Gott, ich verbringe zuviel Zeit im englischen Forum.

Bis denne
toralf
Nach oben
AGU
Gast





BeitragVerfasst am: Fr Jan 27, 2006 2:10 pm    Titel: Antworten mit Zitat

@toralf


zu a)
Code:
  Else
    {
      ; Check 'Use WIN key' checkbox
      GuiControl, 2:, Button10, 1
     
      ; Remove 'WIN key' from ShrtCtGui
      ; But leave ShrtCtGui untouched for later Hotkey disabling
      CleanGuiShrtCt = %ShrtCtGui%
      StringReplace, CleanGuiShrtCt, CleanGuiShrtCt, #
      GuiControl, 2:, HotkeyGui, %CleanGuiShrtCt%
    }

Habe das eigentlich absichtlich im zweiten Fall mit einer temporären Variable gelöst, da ich später, wenn der neue Hotkey gesetzt wird, den alten erst mit Hotkey, ShrtCtGui, Off deaktivieren muss. Aus diesem Grund, sollte der aktuelle Wert in "ShrtCtGui" nicht verändert werden.
Im zweiten Fall muss ich allerdings die Windowstaste aus dem Hotkey nehmen, da ich das Hotkeycontrol ja vorbelege, aber es leider nichts mit der Windows Taste anfangen kann.

zu b)
Ist gekauft Wink

zu c)
Schau ich mir auch mal an. Du speicherts alles in einer Variablen, ich in vier Einzelvariablen. Mal überlegen, ob ich da bei meiner Lösung bleibe. Ist zwar ein bisschen länger, aber dafür in der config.ini besser lesbar.
Außerdem ließe sich die config.ini besser manuell bearbeiten. Aber mal sehen.

zu d)
wär natürlich toll, wenn du das was findest. Mr. Green

Gruß
AGU

P.S. Nicht vergessen beim nächsten Mal, du bist hier im deutschen Forum. Wink Vielleicht brauchen wir wirklich die schonmal von BoBo vorgeschlagenen Landesflaggen im Logo. Der Platz links im blauen Balken des Logos schreit förmlich nach einer Flagge.
Nach oben
halweg



Anmeldedatum: 05.01.2006
Beiträge: 782
Wohnort: Dresden

BeitragVerfasst am: Fr Jan 27, 2006 3:30 pm    Titel: Antworten mit Zitat

AGU hat Folgendes geschrieben:
Nicht vergessen beim nächsten Mal, du bist hier im deutschen Forum. Wink Vielleicht brauchen wir wirklich die schonmal von BoBo vorgeschlagenen Landesflaggen im Logo. Der Platz links im blauen Balken des Logos schreit förmlich nach einer Flagge.

Also ich find es wichtiger, dass ich selbst hier bequem deutsch schreiben kann (geht bei mir ben viel schneller als englisch).
Wie die anderen schreiben ist mir fast egal, gern auch französisch oder russisch Wink

@AGU: ähhh Explorerkontextmenü ähhh [wegduck]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AGU
Gast





BeitragVerfasst am: Sa Jan 28, 2006 12:23 am    Titel: Antworten mit Zitat

Zitat:
@AGU: ähhh Explorerkontextmenü ähhh [wegduck]

*AGU wartet, bis halweg sich wieder hochduckt, und wirft ihm dann einen schweren Steingutaschenbecher an den Kopf* Wink Laughing

Nun ja, mal meine ersten Gedanken zur Integration in das Kontextmenü:

Zu allererst mal folgendes. Wenn man im Internet Explorer Text markiert und dann das Kontextmenü aufruft, wird ein anderes Menü eingeblendet als das, das normal bei einem Rechtsklick eingeblendet wird. Man müsste also erstmal abklären, wie man ausgerechnet in das erste der beiden erwähnten Kontextmenüs den Eintrag integriert.

Dann müsste man noch abklären, wie man evtl. auch in anderen Browsern den Eintrag in das Kontextmenü integriert.

Dann habe ich mir gedacht, man bewerkstelligt das als zusätzliches Skript, das einfach zusammen mit CopyPassage ausgeliefert wird. Wenn man dieses Feature möchte, kann man es so einfach nach Bedarf durch Doppelklicken installieren.

So, das war zwar nicht viel, aber meine ersten *Gehirnfürze* Wink zu dem Thema. Da ich in dieser Thematik nicht so bewandert bin, wäre ich natürlich für jede Hilfe dankbar. Ansonsten müsste ich selbst erstmal nachforschen, wie man die Registrierung richtig verändert. Und selbst da wüßte ich im Moment nicht, wo ich am geschicktesten nach den Informationen suche.

Gruß
AGU
Nach oben
BoBo
Gast





BeitragVerfasst am: Sa Jan 28, 2006 9:08 am    Titel: Antworten mit Zitat

Zitat:
Wenn man im Internet Explorer Text markiert und dann das Kontextmenü aufruft, wird ein anderes Menü eingeblendet als das, das normal bei einem Rechtsklick eingeblendet wird
Du meinst damit den Standard - heisst hier das ein Anwendungsbezogenes Kontextmenü eingeblendet wird? (Anyway. Ich hab den kompleten Thread nicht intus) Sollte die Herausforderung darin bestehen, ein alternatives Kontextmenü zu coden welches neben dem Standardmenü triggerbar ist, sollte doch kiu's script im US/UK Forum ---> [hier] ein Einstieg sein.
Falls ich Quark rede, einfach ignorieren ... Wink
Nach oben
halweg



Anmeldedatum: 05.01.2006
Beiträge: 782
Wohnort: Dresden

BeitragVerfasst am: Sa Jan 28, 2006 11:29 am    Titel: Antworten mit Zitat

[immer noch weggeduckt]
Also unter
Code:
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt
gibt es zu jedem Unterschlüssel einen Binärwert Contexts. Ich nehme, das das Flags sind, die bestimmen, ob der entsprechende Eintrag bei markiertem Text oder ohne Marktierung im Kontextmenü erscheint.
Bei mir hat zum Beispiel der Unterschlüssel &ins Deutsche übersetzen, der nur bei markiertem Text erscheint, die Zeichenfolge "(Standard)" mit
res://c:\programme\google\GoogleToolbar1.dll/cmsimilar.html
und den Binärwert "Contexts" mit
21 00 00 00.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AGU
Gast





BeitragVerfasst am: Sa Jan 28, 2006 2:15 pm    Titel: Antworten mit Zitat

OK, damit wären wir schonmal ein Stück weiter. Hab das hier gefunden:
http://msdn.microsoft.com/workshop/browser/ext/tutorials/context.asp

Danach sollte 0x10 der contexts Hex-Wert sein, mit dem der Eintrag ins Kontextmenü bei markiertem Text geschrieben wird.
Also bisher hab ich es soweit:

  1. Hier einen Schlüssel "Save Notes" erstellt.
    Code:
    HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt

  2. eine DWord Eintrag "Contexts" mit dem Wert 0x10 erstellt.


Was jetzt fehlt ist die Anweisung für den "Standard"wert unter dem Schlüssel Save Notes. Weiß erstens nicht, was er aufrufen soll, und zweitens, wie er das aufrufen soll. Vorschläge?

Das folgende Code sollte schon mal den richtigen Schlüssel anlegen. Allersdings fehlt noch die Zuweisung an den (Standard)wert.
Code:
RegWrite, REG_DWORD, HKCU, Software\Microsoft\Internet Explorer\MenuExt\Save Notes , Contexts, 0x10


Gruß
AGU
Nach oben
AGU
Gast





BeitragVerfasst am: Sa Jan 28, 2006 2:16 pm    Titel: Antworten mit Zitat

Zitat:
[immer noch weggeduckt]
Irgendwann musst du dich wieder hochducken, und dann fliegt der Aschenbecher. Wink

Gruß
AGU
Nach oben
AGermanUser



Anmeldedatum: 25.10.2005
Beiträge: 167

BeitragVerfasst am: Sa Jan 28, 2006 2:41 pm    Titel: Antworten mit Zitat

Wieder ein kleiner Fortschritt. Eine mögliche Aktion für den (Standard)wert wäre das file protocol. Also sowas wie file://C:\Ordner\test.ahk

Sofern die .ahk Verknüpfung richtig registriert ist, sollte der IE gleich das Skript ausführen. Das ist aber keine Allgemeinlösung für alle Browser. Der Firefox z.B. zeigt stattdessen bei Aufruf einer AHK Datei nur den Textinhalt an.
Ich bin also immer noch auf der Suche nach einer allgemeingültigen Methode.
Evtl. funktioniert vielleicht der Aufruf der Autohotkey.exe mit dem Skript als Parameter. Muss ich mal ausprobieren. Setzt aber leider auch wieder voraus, das auf allen Systemen Autohotkey im selben Verzeichnis installiert ist.

Irgendwie dreh ich mich im Kreis.

Das erinnert mich an den FrogBender in der Stufe 3 Wink
http://joecartoon.atomfilms.com/pages/frogbender/
_________________
Gruß
AGermanUser a.k.a. AGU
Moderator
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
halweg



Anmeldedatum: 05.01.2006
Beiträge: 782
Wohnort: Dresden

BeitragVerfasst am: Sa Jan 28, 2006 7:22 pm    Titel: Antworten mit Zitat

AGermanUser hat Folgendes geschrieben:
Das erinnert mich an den FrogBender in der Stufe 3 Wink

[Vorsichtig aus der Deckung schauend]Da seh ich mit Aschenbecher am Kopf sicher noch gut dagegen aus. Wink

Zur Sache: Das klingt als ob die Lösung schon da ist. Zumindest für mich. Wenn man das Skript per Kontextmenü irgendwie über ein RUN gestartet bekommt, wird das alles sehr einfach:
Alles was ich bräuchte wäre der korrekte Registryeintrag für den IE (z. B., als modifizierbares AHK-Skript) und die AHK-Datei zum "in die Textdatei kopieren" (mit EXITAPP am Ende).

Auf die GUI-Features könnte ich vielleicht verzichten. Auf jeden Fall wäre es günstig, wenn das Skript nicht im Speicher bliebe und ich über einen RUN-Befehl aus meinem eigenen Skript die GUI starten könnte. So würde ich dann wohl auch das Tray-Icon einsparen (Aktion "sauberer Tray-Bereich").

Ich hoffe, du hast nichts dagegen, wenn ich dein Skript derart vergewaltige. Rolling Eyes [/Vorsichtig aus der Deckung schauend]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AGU
Gast





BeitragVerfasst am: Sa Jan 28, 2006 11:08 pm    Titel: Antworten mit Zitat

war echt der Meinung so müsste das funktionieren:

Code:
RegWrite, REG_SZ   , HKCU, Software\Microsoft\Internet Explorer\MenuExt\Save Notes ,, file://C:\Test.ahk
RegWrite, REG_DWORD, HKCU, Software\Microsoft\Internet Explorer\MenuExt\Save Notes , Contexts, 0x10

Aber irgendwie will das doch nicht klappen. Wenn man den file:// URI händisch in die Adresszeile eintippt, wird sie anstandslos ausgeführt.
Klickt man allerdings auf den Eintrag im Kontextmenü, passiert gar nichts.
Weiß im Moment echt nicht, was ich noch anstellen soll. Nachdem ich noch ein bisschen recherchiert habe, und gesehen habe, das es für die anderen Browser auch nicht gerade leichter wird, bin echt schon am überlegen, ob ich das mit dem Kontextmenü nicht doch lieber fallen lasse.

Was die anderen Sachen angeht, bist du natürlich völlig frei. Nimm aus dem Skript was du brauchst. In deinem Fall wahrscheinlich eher die "CopyPassage" Subroutine. Du hast ja gesagt, du möchtest auf das GUI Feature verzichten.
Du könntest natürlich auch versuchen, den IE noch so hinzubekommen, das er tatsächlich ein Skript ausführt, wenn du den Kontextmenüeintrag anklickst.
Dann öffnest du einfach eine kleine Skriptdatei, mit der du den Hotkey Win+C bzw. den von dir vergebenen Hotkey sendest. Damit könntest du auch das GUI Feature nutzen.

Und was das TrayIcon angeht:
Einfach
Code:
#NoTrayIcon
oben in das Skript eintragen, und weg ist das TrayIcon. Wink

Gruß
AGU
Nach oben
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    AutoHotkey Community Foren-Übersicht -> Skripte & Funktionen Alle Zeiten sind GMT
Gehe zu Seite Zurück  1, 2, 3  Weiter
Seite 2 von 3

 
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de