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

berrey 2003-12-17 01:50:53
想用自己的应用程序监视资源管理器中是否有新的文件被“粘贴”进来了,应该怎么实现呢?
...全文
3 点赞 收藏 2
写回复
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
定义一个钩子函数拦截对剪贴板的操作,然后对其做响应就可以了。
回复
发动态
发帖子
Windows SDK/API
创建于2007-08-02

1202

社区成员

C++ Builder Windows SDK/API
申请成为版主
社区公告
暂无公告