Delphi-PRAXiS
Seite 3 von 4     123 4      

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 29. Nov 2018 10:44

AW: ClipBord
 
Hallo,
erst mal wieder ein großes Danke für die rege Teilname.
Aber wie ich aus den Hinweisen ersehen kann, ist noch nicht allen klar worum es genau geht.
Wahrscheinlich drücke ich mich zu ungenau aus.
Daher nochmal,
der Anwender öffnet ein Textformular und der Cursor steht im Textfeld.
Er drückt jetzt "Strg+T" und es öffnet sich ein Listfeld mit verschiedenen Texten die der Anwender erstellt hat.
Er klickt eine Textdatei an.
Die Datei wird gelesen und der Text wird in die Zwischenablage von Windows kopiert und das Listfeld schließt sich.
Natürlich könnte der Anwender den Text jetzt per "Shift+Einf" in sein Textdokument einfügen, aber genau das möchte ich vermeiden.
Der Text soll nach drücken von "Strg+T" sofort in das Textdokument eingefügt werden.
Der Ansatz von CodeZwerg scheint ein guter Weg zu sein.
Ich gehe davon aus, dass 's' den Text aus der Zwischenablage übernehmen soll. Leider werden im Textfeld aber nur ein paar Zahlen ausgegeben.
Aber zumindest wird schon mal was ausgegeben.
Gleichzeitig öffnet sich ein Suchfeld, in dem auch einige Zahlen stehen.
Ich denke, dass mit der Lösung dieses Problems auch vielen anderen geholfen wird die ein ähnliches Problem haben.

Gruss Oldmann

KodeZwerg 29. Nov 2018 11:24

AW: ClipBord
 
Wie wäre es wenn Du uns einfach mal Dein Projekt zeigst?
Das was Du wolltest macht der Schnippsel den ich gab, wie Du den benutzt kann ich nicht beurteilen da ich kein Code sehe.
Du hast ein Talent Dich so auszudrücken das nicht nur ein Result bei rauskommen kann und bei jeder Aussage kommt was anderes hinzu wo noch mehr ??? auftauchen da wieder irgendwas verschleiert bleibt.

Vielleicht hat ja jemand ne stärkere Glaskugel, mir geht der Saft aus :-)

zeras 29. Nov 2018 11:26

AW: ClipBord
 
Das Clipboard arbeitet immer mit dem aktiven Fenster (hat den Fokus). Dies habe ich schon im Beitrag #18 versucht, deutlich zu machen.
Wenn du also über die Zwischenablage gehen willst, dann musst du dein Zielprogramm zum aktiven Fenster machen. Sonst wird das nichts.
Beiträge über "aktives Fenster" gibt es zuhauf im Forum.

oldmann 29. Nov 2018 11:30

AW: ClipBord
 
Hallo CodeZwerg,

Hier ist das Listing:

Delphi-Quellcode:
procedure TForm4.FileListBox1Click(Sender: TObject);
var s,d_name:string;
    i:integer;
begin
  If FileListBox1.ItemIndex >= 0 Then
  begin
    Clipboard.clear;
    d_name:=ExtractFileName(filelistbox1.filename);
    Try
    Assignfile(f,lpf+'\Mustertexte\'+d_name);
    Reset(f);
    while not eof (f) do
    begin
      readln(f,s);
      Clipboard.AsText:=Clipboard.AsText+s+#13#10;
    end;
    Closefile(f);
    Except
    Closefile(f);
    end;
    Form4.Close;
  end;
[COLOR="Blue"]// Hier habe ich Deinen Text eingefügt.[/COLOR]
  for i := 1 to Length(s) do
  begin
    keybd_event(Ord(s[i]), 0, 0, 0);
    Sleep(10);
    keybd_event(Ord(s[i]), 0, 0 or KEYEVENTF_KEYUP, 0);
    Sleep(10);
  end;
end;
Gruss Oldmann

KodeZwerg 29. Nov 2018 11:38

AW: ClipBord
 
Wenn Form4.Close aufgerufen wurde, was hat dann den Focus? Deine ListBox1 ? (so klappt mein Code nicht)

oldmann 29. Nov 2018 11:44

AW: ClipBord
 
Hallo KodeZwerg,

Form4 wird ja nicht mehr gebraucht, da der Text ja in der Zwischenablage von Windows ist.

Oldmann

KodeZwerg 29. Nov 2018 11:47

AW: ClipBord
 
Damit es präziser arbeitet solltest Du per MSDN-Library durchsuchenGetForegroundWindow() Dir das aktive Handle sichern bevor Deine Form/Dein Code sich einmischt und bevor Du meinen Schnippsel aufrufst per MSDN-Library durchsuchenSetForegroundWindow() wieder dahin zurückschalten.

Ps: Die Zwischenablage/Clipboard benötigst Du nicht um ans Ziel zu kommen.

oldmann 29. Nov 2018 11:51

AW: ClipBord
 
Hallo KodeZwerg,

Diesen Befehl kenne ich nicht.
Wie und wo mus ich den in meinem Code einsetzen.

Oldmann

KodeZwerg 29. Nov 2018 11:59

AW: ClipBord
 
GetForegroundWindow() im Hotkey-Event. Gleich als erstest bevor Du Deinen Kram anzeigen lässt.
SetForegroundWindow() vor meinem Schnippsel mit dem Result vom obigen GetForegroundWindow().
Wenn Du da mehr Hilfe brauchst müsste man mehr Code von Dir sehen.
Wenn es nicht gerade ein Geheimprojekt ist, häng es doch einfach mal ran.

oldmann 29. Nov 2018 12:14

AW: ClipBord
 
Hallo KodeZwerg,

Hier ist mehr Code:

Delphi-Quellcode:
procedure TForm1.WMHotKey(var Msg: TWMHotKey);
var fNameBMP, fNameJPG, verz_name:string;
    pic    : TImage;
begin
  if Msg.HotKey = id1 then
  begin
    Form4.Filelistbox1.Mask:=Lpf+'Mustertexte\*.txt';
    Form4.Show;
  end;

  if Msg.HotKey = id2 then
  begin
    Clipboard.clear;
    Clipboard.AsText:=Clipboard.AsText+'ews@eberhard-werner.de';
//    Form1.PasteFromClipBoard;
  end;
end;

procedure TForm1.WMTASKBAREVENT(var message: TMessage);
var point : TPoint;
begin
    case message.LParamLo of
         WM_LBUTTONDBLCLK : begin
                                 form2.show;
                            end;
         WM_RBUTTONDOWN  : begin
                                 GetCursorPos(point);
                                 popupmenu1.popup(point.x,point.y);
                            end;
    end;
end;


procedure TaskBarAddIcon;
var tnid : TNOTIFYICONDATA ;
begin
    tnid.cbSize := sizeof(TNOTIFYICONDATA); // Größenangabe der Struktur
    tnid.Wnd := Form1.handle;              // Handle des Message-Empfängers
    tnid.uID := 1;                         // ID beliebig
    tnid.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP; // siehe Tabelle
    tnid.uCallbackMessage := WM_TASKBAREVENT;       // Message# für Form1
    tnid.hIcon := form1.image2.picture.icon.handle; // Iconhandle
    strcopy(tnid.szTip,'Textdateien');               // Tooltiptext
    Shell_NotifyIcon(NIM_ADD, @tnid);               // Registrieren ...
end;

procedure TaskBarRemoveIcon;
var tnid : TNOTIFYICONDATA ;
begin
    tnid.cbSize := sizeof(TNOTIFYICONDATA);
    tnid.Wnd := Form1.handle;
    tnid.uID := 1;
    Shell_NotifyIcon(NIM_DELETE, @tnid);
end;


procedure TForm1.FormCreate(Sender: TObject);
const
  MOD_ALT = 1;
  MOD_CONTROL = 2;
  MOD_SHIFT = 4;
  MOD_WIN = 8;
  VK_A = $41;
  VK_R = $52;
  VK_F4 = $73;
  VK_T = $54;
  VK_E = $45;
  VK_0 = $30;
  VK_1 = $31;
  VK_2 = $32;
  VK_3 = $33;
  VK_4 = $34;
  VK_5 = $35;
  VK_6 = $36;
  VK_7 = $37;
  VK_8 = $38;
  VK_9 = $39;
begin
  // Register Hotkey Ctrl + T
  id1 := GlobalAddAtom('Hotkey1');
  RegisterHotKey(Handle, id1, MOD_CONTROL, VK_T);
  ShowWindow(GetWindow(handle,GW_OWNER),SW_HIDE);

  id2 := GlobalAddAtom('Hotkey2');
  RegisterHotKey(Handle, id2, MOD_CONTROL, VK_E);

 end;
oldmann


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:27 Uhr.
Seite 3 von 4     123 4      

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