怎么收到系统中“文件粘贴”的消息?

berrey 2003-12-17 01:50:53
想用自己的应用程序监视资源管理器中是否有新的文件被“粘贴”进来了,应该怎么实现呢?
...全文
5 点赞 收藏 2
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
小笨象 2003-12-20
void __fastcall TMainForm::WndProc(TMessage &Msg)
{
TForm::WndProc(Msg);
switch(Msg.Msg)
{

case WM_DRAWCLIPBOARD:
{
GetViewClipBoard(Msg);
break;
}
}
}
//---------------------------------------------------------------------------


void __fastcall TMainForm::GetViewClipBoard(TMessage &Msg)
{
//TODO: 处理监视剪贴板消息
//将WM_DRAWCLIPBOARD消息传递到下一个观察链中的窗口
SendMessage(NextClipHwnd,Msg.Msg,Msg.WParam,Msg.LParam);
//查询剪贴板中特定格式的数据内容
if( (Clipboard()->HasFormat(CF_TEXT)) ||(Clipboard()->HasFormat(CF_OEMTEXT)))
{
if(GetActiveEditWindow()->DBFilePath!="")
{ //处理剪贴板中内容
AddTxtActionExecute(NULL);
}
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ClipBardViewerActionExecute(
TObject *Sender)
{
//TODO:是否监视剪贴板。
ClipBardViewerAction->Checked=!ClipBardViewerAction->Checked;
if(ClipBardViewerAction->Checked)
{
//获得观察链中下一个窗口句柄
NextClipHwnd=SetClipboardViewer(Handle);

}
else
{
//从观察链中删除本观察窗口
ChangeClipboardChain(Handle,NextClipHwnd);
//将WM_DRAWCLIPBOARD消息传递到下一个观察链中的窗口
SendMessage(NextClipHwnd,WM_CHANGECBCHAIN,(int)Handle,(int)NextClipHwnd);

}
}
//---------------------------------------------------------------------------
回复
ktcserver 2003-12-17
定义一个钩子函数拦截对剪贴板的操作,然后对其做响应就可以了。
回复
相关推荐
发帖
Windows SDK/API
创建于2007-08-02

1205

社区成员

C++ Builder Windows SDK/API
申请成为版主
帖子事件
创建了帖子
2003-12-17 01:50
社区公告
暂无公告