Laden...

Tastaturhook oder ähnliches?

Erstellt von webby vor 19 Jahren Letzter Beitrag vor 19 Jahren 3.937 Views
W
webby Themenstarter:in
9 Beiträge seit 2005
vor 19 Jahren
Tastaturhook oder ähnliches?

Hallo,

ich brauche für den Verein ein Programm, welches Abkürzungen als vollen Text schreibt.
Also wenn man "d" eintippt, soll das Programm daraus "des" machen, bei "-" "ein" usw.
Mein Programm selber soll im Hintergrund sein, weil das Hauptprogramm in dem geschrieben wird ist Word.
Kann man so etwas unter C# realisieren, denn wie ich bisher festgestellt habe, hat man nicht mehr so einfach Zugriff auf die API (hab davor hobbymäßig Delphi programmiert).

Gruß,
webby

X
133 Beiträge seit 2004
vor 19 Jahren

Hallo webby

Mit Word kenne ich mich nicht so gut aus aber es gibt meiner Meinung nach dort doch
eine Liste in der du Abkürzungen deklarieren kannst die dann in ausgeschriebene
Wörter umgewandelt werden.
Mit openOffice geht das nämlich meiner Meinung nach auch.

Um was wirklich Neues zu erschaffen muss man das Rad neu erfinden

49.485 Beiträge seit 2005
vor 19 Jahren

Hallo webby,

die von x-sharp genannte Liste von Abkürzungen läuft bei Word - glaube ich - unter dem Namen Autokorrektur.

Anwendungsübergreifend gibt es eine fertige Lösung: GhostTyperXML:

http://www.sc-data.de/ghosttyper/de/index.php3

Wenn du was programmieren willst, geht das über globale Hooks. Die Forumssuche sollte bei 'hook' was passendes zu Tage fördern.

herbivore

PS: Ich habe gerade gesehen, dass GhostTyperXML mittlerweile was kostet. Ich nutze noch eine ältere Freeware-Version.

W
webby Themenstarter:in
9 Beiträge seit 2005
vor 19 Jahren

Am Anfang war das ja mit der Autokorrektur von Word gedacht, nur ist das leider ungünstig, weil Word zum Beispiel bei den Abkürzungen "-" -> "ein" und "-j" -> "einer" Macken macht. Wenn ich dann "-" tippe schreibt er sofort "ein"... Außerdem ist es für mich nervig, wenn ich im "Alltag" was abtippe und dann er alles gleich so ausschreibt, ich brauch das nämlich nur für Wettschreiben.

GhostWriter hab ich damals mal gehabt, leider nie wieder gefunden, eben nur die Shareware...
Weißt du wo es noch die alte (völlig ausreichende) Version gibt?

Gruß,
webby

W
webby Themenstarter:in
9 Beiträge seit 2005
vor 19 Jahren

Habs schon gefunden. Danke an Google 😉
(für die, die es interessiert: mal nach "ghostwriter" und "freeware" suchen 🙂)

Danke allerseits!

W
webby Themenstarter:in
9 Beiträge seit 2005
vor 19 Jahren

Oh, wie man sieht hab ich mich gewaltig vertan, hab nach "GhostWriter" gesucht... 😕
Welche Version hast du? Denn anscheinend war die 1.0er auch schon Shareware... 😦

W
webby Themenstarter:in
9 Beiträge seit 2005
vor 19 Jahren

Leider wäre selbst der neuste GhostTyper nicht das passende Programm:*er ist zu langsam beim Eingeben (er macht so einen Tippeffekt und schreibt jeden Buchstaben "ganz langsam") *eine Abkürzung muss mindestens zwei Zeichen lang sein

Da scheint wirklich nur ein eigenes Programm was zu helfen... 😕

Leider finde ich auch nichts über Hooks im C#-Bereich im Forum.

49.485 Beiträge seit 2005
vor 19 Jahren

Hallo webby,

das mit GhostWriter und GhostTyper war mir schon aufgefallen, aber dann habe ich mir die Beschreibung von GhostWriter angesehen und war der Meinung, dass der das auch tut, was du brauchst. Außerdem ist der GhostWriter ja wohl immer noch Freeware - auch für den nicht privaten Gebrauch.

GhostTyper hatte früher (und von Anfang an, glaube ich) eine geteilte Lizenz für privaten (freien) und geschäftlichen (kostenpflichtigen) Gebrauch. Wenn ich das richtig sehe, ist ab Version 3.0 auch der private Gebrauch kostenpflichtig und es gibt nur noch eine freie (zeitbeschänkte?) Testversion.

Die neueste Version mit der alten Lizenz, die ich im Netz noch zum Runterladen gefunden habe, war 2.02a (wobei an vielen Stellen zwar 2.02a steht, der Link aber auf 3.0 geht, also Achtung). Ich selbst habe Version 2.01.

Bei GhostTyper gab (und vermutlich gibt es) zwei Modi für das Einfügen des Langtextes: Per simulierter Tastatureingabe (langsam, aber man kann nicht nur Text eingeben, sondern auch z.B. Menü-Shortcuts verwenden) oder per Zwischenablage (schnell, aber nur für Texteingabe und die Zwischenablage wird überschrieben). Mit dem zweiten Modus sollte dein Geschwindigkeitsproblem zu lösen sein.

Das ist den mindestens zwei Zeichen scheint mir auf den ersten Blick eine sinnvolle Beschränkung.

Wenn du aber wirklich selbst programmieren willst, musst du Win32-Hooks verwenden. Da sollte sich aber auch im Netz massig zu finden lassen. Ich habe selber schon mal - allerdings unter OS/2 - mit Keyboard-Hooks programmiert und könnte dir - wenn ich nächste Woche wieder Zugriff auf den Code habe - auf Anforderung ein paar Zeilen C++ posten.

HTH

herbivore

W
webby Themenstarter:in
9 Beiträge seit 2005
vor 19 Jahren

Mh, selbst das mit der Zwischenablage bringt nicht viel, das sind ja wieder mehr Anschläge und sogar mehr als das eigentliche Wort hätte... 😕

OS/2 machen wir erst nächtes Jahr in der Schule... 🙂
Aber C++ hilft mir überhaupt nichts, weil ich so richtig nur Delphi (nicht .NET), PHP und C# kann... Aber das wollte ich in C# realisieren...

Inzwischen hab ich was gefunden, wie man Hooks realisiert, doch hab ich jetzt gleich die nächste Frage: Wie schicke ich einen Tastendruck?

Gruß,
webby

49.485 Beiträge seit 2005
vor 19 Jahren

Hallo webby,

den Einwand bezüglich der Zwischenablage verstehe ich nicht. Es werden in diesem Modus ja eben keine Anschläge geschickt, sondern die Zwischenablage per API genutzt; das geht verzögerungsfrei.

Den Einwand mit OS/2 und C++ verstehe ich ebenfalls nicht, weil es hier ja um den Aufruf von Win32-APIs geht und die sind in fast jeder Programmiersprache (und zwischen OS/2 und Windows) fast gleich bzw. zumindest leicht übersetzbar. Aber wenn du schon eine Lösung gefunden hast, gut.

Das Thema 'Tastendruck schicken' wurde hier (für den Fall Ctrl-Alt-Entf) besprochen: p/Invoke SendInput

HTH

herbivore

W
webby Themenstarter:in
9 Beiträge seit 2005
vor 19 Jahren

Zwischenablage: OK, dann hab ich das falsch verstanden...

API: Unter C# kann man nicht mehr so ohne weiteres auf die API zugreifen, soweit ich weiß...

49.485 Beiträge seit 2005
vor 19 Jahren

Hallo webby,

doch, man kann in C# mit DllImport auf Win32 durchgreifen. Ob das "ohne weiteres" geht, mag jeder selbst beurteilen. Solange die benötigte Funktion nur Integer-Werte oder Strings als Parameter benötigt, ist es m.E. wirklich ziemlich einfach. Wenn Strukturen oder Win32-spezifische Datentypen ins Spiel kommen, wird es tatsächlich etwas aufwändiger. Die Forumssuche nach DllImport dürfte einiges zu Tage fördern.

HTH

herbivore

W
webby Themenstarter:in
9 Beiträge seit 2005
vor 19 Jahren

Mh gut in meinem Fall geht es nicht anders, aber man sollte doch bedenken, dass .NET plattformunabhängig sein soll!!!
Und das wird es natürlich nach zig DLLimports nicht.