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

berrey 2003-12-17 01:50:53
想用自己的应用程序监视资源管理器中是否有新的文件被“粘贴”进来了,应该怎么实现呢?
...全文
32 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
小笨象 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
  • 打赏
  • 举报
回复
定义一个钩子函数拦截对剪贴板的操作,然后对其做响应就可以了。

1,221

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧