TClipboard
-
ich würde gerne auf die windows zwischenablage reagieren.
dazu habe ich in der BCB hilfe TClipboard gefunden.
man solle folgendes inkludieren
#include <Clipbrd.hpp>ich frage mich nun aber, wie ich direkt auf die zwischenablage reagieren kann. also sobald text reinkopiert wird etc. wohin muss ich nun
char *Buffer; int bSize; if(Clipboard()->HasFormat(CF_TEXT)) { Memo1->Lines->Add(Clipboard()->GetTextBuf(Buffer, bSize)); }und foglendes stimmt nicht

Memo1->Lines->Add(Clipboard()->GetTextBuf(Buffer, bSize));
-
Hallo,
Wie du mit der Komponente umgehend kannst weiß ich nicht (schau mal in die Hilfe vom BCB), aber bei deinem ersten Problem würde ich sagen, dass es am einfachsten ist diese Abfrage in einem OnTimer-Event einer TTimer-Komponente zu setzen; Dann brauchst du dich nicht mehr um den Rest zu kümmern!
-
Reyx danke. grundsätzlich hast du schon recht. aber eine timer lösung finde ich hier nicht gerade elegant. ich denke das geht auch anders. message, hook oder so. nur weis ich hald nicht wie

-
ich nochmal
das umgangsproblem habe ich nun gelöstif(Clipboard()->HasFormat(CF_TEXT)) { Memo1->Lines->Add(Clipboard()->AsText); }bleibt nur die frage wie abfangen, ausser den einsatz von TTimer

-
Hallo
schau mal ins WinAPI-Forum, mit "message, hook" wirst du schon richtig liegen.
bis bald
akari
-
ich würde das jetzt aber lieber mit einem von hier besprechen der es evl. schonmal gemacht hat, befor ich mich nun tot suche und am ende doch nichts finde

-
-
danke! krieg die übersetzung nach C++ aber nicht ganz hin.
kann mir jemand helfen?Unit1.h
//--------------------------------------------------------------------------- #ifndef Unit1H #define Unit1H //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> //--------------------------------------------------------------------------- class TForm1 : public TForm { __published: // Von der IDE verwaltete Komponenten void __fastcall FormCreate(TObject *Sender); void __fastcall FormCloseQuery(TObject *Sender, bool &CanClose); private: // Anwender-Deklarationen public: // Anwender-Deklarationen __fastcall TForm1(TComponent* Owner); void __fastcall WMChangeCbChain(TMessage *Msg); void __fastcall WMDrawClipboard(TMessage *Msg); }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- #endifUinit1.cpp
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; int NextClipboardViewer; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::WMChangeCbChain(TMessage *Msg) { if(Msg->wParam == NextClipboardViewer) { NextClipboardViewer = Msg->lParam; } else { SendMessage(NextClipboardViewer, wm_ChangeCbChain, Msg.wParam, Msg.lParam); } } //--------------------------------------------------------------------------- void __fastcall TForm1::WMDrawClipboard(TMessage *Msg) { SendMessage(NextClipboardViewer, wm_DrawClipboard, Msg->wParam, Msg->lParam); } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { NextClipboardViewer = SetClipboardViewer(Form1->Handle); } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose) { ChangeClipboardChain(Form1->Handle, NextClipboardViewer); } //---------------------------------------------------------------------------
-
Bin mir nicht ganz sicher, aber schau dir mal BEGIN_MESSAGE_MAP in der (VCL-)Hilfe an.
-
hmm... kriegs nicht hin
