![]() |
clipboard mit Strg +C
Das Prg sollte folgende Funktionallität haben:
Mit STRG+Fn (Z Bsp. in Notepad) wird ein markierter text gespeichert. Mit Shift+Fn (Z Bsp. in Notepad) wird ein gespeicherter text Kopiert. Leider gibt es ein Fehler, wenn direkt nach Sh+FN Strg+Fn ausgeführt werden soll. Deshab das Try im Code. Meldung in IDE: --------------------------- Benachrichtigung über Debugger-Exception --------------------------- Im Projekt Project1.exe ist eine Exception der Klasse Exception aufgetreten. Meldung: 'Zwischenablage kann nicht geöffnet werden'. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen. --------------------------- OK Hilfe --------------------------- [delphi] unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure VC(a:char); procedure Ablage(x:byte); private { Private-Deklarationen } procedure WmHotkey(var Msg: TMessage); message WM_HOTKEY; public { Public-Deklarationen } end; const cl='Clipboard'; var Form1: TForm1; s:array[1..12] of string; implementation uses clipbrd; {$R *.dfm} procedure tform1.VC(a:char); //a=C, Ctrl+C copieren begin //a=V, Ctrl+V einfügen keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), 0, 0); keybd_event(Ord(a), MapVirtualKey(Ord(a), 0), 0, 0); keybd_event(Ord(a), MapVirtualKey(Ord(a), 0), KEYEVENTF_KEYUP, 0); keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), KEYEVENTF_KEYUP, 0); end; procedure tform1.Ablage(x:byte); begin if x<13 then begin VC('C');form1.Caption:=cl; try if Clipboard.HasFormat(CF_TEXT) then s[x]:=clipboard.AsText; except form1.Caption:='Fehler'; end; end else begin clipboard.AsText:=s[x-12]; VC('V');form1.Caption:=cl; end; end; procedure TForm1.WmHotkey(var Msg: TMessage); begin ablage(Msg.WParam); end; procedure TForm1.FormCreate(Sender: TObject); var m:byte; begin for m:=1 to 12 do begin RegisterHotKey(Handle, m, MOD_CONTROL,111+m); RegisterHotKey(Handle, m+12, MOD_Shift,111+m); s[m]:='leer'; end;form1.Caption:=cl; end; procedure TForm1.FormDestroy(Sender: TObject); var m:byte; begin for m:=1 to 24 do UnregisterHotKey(Handle, m); end; end. [b] wer kann mir helfen? |
Re: clipboard mit Strg +C
hier mal dein code richtig formatiert:
Delphi-Quellcode:
du musst doch die unit Clipbrd einbinden, sodass zu zugriff auf das zwischenablage hast. dann könnte es wahrscheinlich gehen. evtl. kann es daran liegen, dass noch ein clipboard.open(); fehlt.
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure VC(a:char); procedure Ablage(x:byte); private { Private-Deklarationen } procedure WmHotkey(var Msg: TMessage); message WM_HOTKEY; public { Public-Deklarationen } end; const cl='Clipboard'; var Form1: TForm1; s:array[1..12] of string; implementation uses clipbrd; {$R *.dfm} procedure tform1.VC(a:char); //a=C, Ctrl+C copieren begin //a=V, Ctrl+V einfügen keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), 0, 0); keybd_event(Ord(a), MapVirtualKey(Ord(a), 0), 0, 0); keybd_event(Ord(a), MapVirtualKey(Ord(a), 0), KEYEVENTF_KEYUP, 0); keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), KEYEVENTF_KEYUP, 0); end; procedure tform1.Ablage(x:byte); begin if x<13 then begin VC('C');form1.Caption:=cl; try if Clipboard.HasFormat(CF_TEXT) then s[x]:=clipboard.AsText; except form1.Caption:='Fehler'; end; end else begin clipboard.AsText:=s[x-12]; VC('V');form1.Caption:=cl; end; end; procedure TForm1.WmHotkey(var Msg: TMessage); begin ablage(Msg.WParam); end; procedure TForm1.FormCreate(Sender: TObject); var m:byte; begin for m:=1 to 12 do begin RegisterHotKey(Handle, m, MOD_CONTROL,111+m); RegisterHotKey(Handle, m+12, MOD_Shift,111+m); s[m]:='leer'; end;form1.Caption:=cl; end; procedure TForm1.FormDestroy(Sender: TObject); var m:byte; begin for m:=1 to 24 do UnregisterHotKey(Handle, m); end; end. |
Re: clipboard mit Strg +C
Zitat:
Clipbrd ist eingebunden, siehe nach implementation ? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz