Thema: Delphi clipboard mit Strg +C

Einzelnen Beitrag anzeigen

wol

Registriert seit: 13. Nov 2007
Ort: Stuttgart
21 Beiträge
 
Delphi 6 Personal
 
#1

clipboard mit Strg +C

  Alt 20. Nov 2008, 23:55
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?
Danke / Bitte; Gruß Wolfgang
  Mit Zitat antworten Zitat