Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   ClipBord (https://www.delphipraxis.net/198742-clipbord.html)

oldmann 27. Nov 2018 18:58

AW: ClipBord
 
Hallo,
scheinbar gibt es immer noch unklarheiten mit meiner Frage.
Es ist ein Sytemweiter Hotkey.
Der Text liegt schon in der Zwischenablage von Windows.
Ich möchte gerade vermeiden, dass der Anwender zusätzlich Tasten drücken muss.
Das Ziel ist, das der Text aus der Zwischenablage in einem Zug in das Textdokument eingefügt wird.
Also der Anwender drückt "Strg+E" und der hinterlegte Text wird in die Zwischenablage kopiert.
Also wie bekomme ich den Text ohne zusätzlich Tasten zu drücken in das Textdokument.
Ich hoffe, dass das deutlich war.

Gruss Oldmann

ghubi01 27. Nov 2018 22:49

AW: ClipBord
 
Hallo,

ich gehe mal davon aus, dass MS-Word zur Textverarbeitung verwendet wird.
In diesem Fall könnte man das so realisieren:
Delphi-Quellcode:
procedure CpClipToWord;
var
  WordApp, WordDoc: OleVariant;
begin
  try
     WordApp := GetActiveOleObject('Word.Application'); // Aktives geöffnetes Word
   except
     Exit;
   end;
   WordDoc:=WordApp.ActiveDocument;   // Aktives Worddokument
   WordApp.Selection.Paste;           // Inhalt vom Clipboard an der aktuellen Cursorposition im Worddokument schreiben
   WordApp.Selection.TypeText(#13#10); // ggf. den Cursor in die nächste Zeile setzen
end;
Wie das mit anderen Textverarbeitungs-Tools geht, kann ich Dir nicht sagen.

Jumpy 28. Nov 2018 08:56

AW: ClipBord
 
Zitat:

Zitat von oldmann (Beitrag 1419408)
Hallo,
scheinbar gibt es immer noch unklarheiten mit meiner Frage.
Es ist ein Sytemweiter Hotkey.
Der Text liegt schon in der Zwischenablage von Windows.
Ich möchte gerade vermeiden, dass der Anwender zusätzlich Tasten drücken muss.
Das Ziel ist, das der Text aus der Zwischenablage in einem Zug in das Textdokument eingefügt wird.
Also der Anwender drückt "Strg+E" und der hinterlegte Text wird in die Zwischenablage kopiert.
Also wie bekomme ich den Text ohne zusätzlich Tasten zu drücken in das Textdokument.
Ich hoffe, dass das deutlich war.

Gruss Oldmann

Ich glaube eher, das Problem ist nicht so ganz einfach. Dein Ctrl+T wird ja gedrückt, wenn du in irgend einer Anwendung bist, irgendeiner Textverarbeitung. Jetzt kriegt aber dein Programm über den Hotkey den Fokus / wird aktiviert. Jetzt musst du aber erstmal wissen, wo du vorher warst, sprich in welcher Textverarbeitung. Und das ist mMn schon schwierig.

Wenn du erstmal weißt, wo du her kamst, dann sollte es möglich sein, da Text hinzupasten. Siehe z.B. #9.

p80286 28. Nov 2018 09:27

AW: ClipBord
 
Hab ich da was falsch verstanden?
[Strg+V] und gut ist?

Gruß
K-H

oldmann 28. Nov 2018 09:30

AW: ClipBord
 
Hallo,

Danke erst mal wieder.
man kann doch über "Shift Einf" jeden Text aus der Zwischenablage in jede Textverarbeitung oder jedes Textdokument einfügen.
Dazu ist es doch vollkommen egal welche Textverarbeitung oder welches Textdokument es ist.
Man müsste diese Tastendrücke doch in Delphi auch simulieren können ?
Ich möchte mich nicht auf irgend eine Spezielle Anwendung festlegen, da ich ja nicht weiß welche Anwendung der Benutzer hat.
Es sieht simpel aus, aber scheinbar ist es doch komplizierter.
Ich habe das bis jetzt nicht geschafft aber es gibt doch unter euch sicher Profis die so etwas können.

Gruss oldmann

Blup 28. Nov 2018 09:45

AW: ClipBord
 
Nach welchen Kriterien soll die Anwendung ermittelt werden, an die eine Tastenkombination zu senden ist?
Wahrscheinlich doch an das Anwendungsfenster, welches zuvor als letztes aktiv war?
Weist du nicht wie das geht?

Ansonsten hat die Redeemer bereits Quellcode zur Verfügung gestellt, um eine Tastenkombination an eine Anwendung zu senden.
Kommst du damit nicht klar?

"Shift+Einf" wird möglicherweise nicht in jedem Fall funktionieren, "Strg+V" ist besser.

KodeZwerg 28. Nov 2018 11:00

AW: ClipBord
 
Ich blicke da immer noch nicht durch aber hier ein Ansatz mit Delphi 5:
Delphi-Quellcode:
for i := 1 to Length(MeinText) do
begin
  keybd_event(Ord(MeinText[i]), 0, 0, 0);
  Sleep(10);
  keybd_event(Ord(MeinText[i]), 0, 0 or KEYEVENTF_KEYUP, 0);
  Sleep(10);
end;
Das bewirkt folgendes:
Egal was gerade den Focus hat bekommt deinen "MeinText" gesendet.

Ist es das was Du wolltest?

zeras 28. Nov 2018 12:51

AW: ClipBord
 
Wie schon teilweise oben beschrieben.
Wenn du mit der Zwischenablage arbeitest und beispielsweise STRG + C drückst, dann wird das Objekt oder der Bereich der aktiven Anwendung in die Zwischenablage kopiert. Nun musst du dein anderes Programm als aktiv erklären und dann würde auch STRG +V gehen. Das ist offenbar dein Problem. Deshalb musst du wissen, welches das "Zielprogramm" sein soll.
Ansonsten würde ein STRG + V wieder in dein Quellprogramm kopieren.
Ich mache das mit einem meiner Programme so, dass ich das "Zielprogramm" anlerne und dann weiß mein Programm, mit welchem anderen Programm es zusammenarbeiten soll.

freimatz 28. Nov 2018 15:27

AW: ClipBord
 
Wenn ich es nun richtig verstanden habe, dann wird deine Anwendung mit Strg+T NICHT zur aktiven Anwendung.
Und die Textverarbeitung war und ist immer noch die aktive.
Dann sollte das was KodeZwerg schrieb funktionieren.

Hobbycoder 28. Nov 2018 16:48

AW: ClipBord
 
Wenn ich das richtig verstanden habe, dann muss man also vorher einen Text in deiner Anwendung auswählen.
Dann wechselt man in die Textverarbeitung, drückt STRG+T was dann in deiner Anwendung den Text in die Zwischenablage kopiert, und dann soll dieser Text quasi automatisch an der Cursorposition eingefügt werden.

In der Annahme, dass ich das richtig verstanden habe,
wäre es nicht wesentlich einfacher, wenn die Auswahlaktion in deiner Anwendung den Text gleich bei der Auswahl in die Zwischenablage kopiert und der Anwender dann in der Textverarbeitung nur noch STRG+V drückt? Immerhin muss er ja sowieso in deine Anwendung wechseln, um einen Text auszuwählen. Warum dann noch mal das ganze umständlich über STRG+T?
Mal abgesehen, dass du dann ja auch sicherstellen musst, dass die ZielTextverarbeitung nicht STRG+T selbst verwenden möchte, und dass STRG+V eigentlich den meisten Anwendern geläufig ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:36 Uhr.
Seite 2 von 4     12 34      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz