我现在做一个数据窗口导出EXCEL功能,其中就用到了PB的Clipboard剪切板函数,由于数据有几十万,导出时间比较长,程序也频繁调用Clipboard函数,在这期间,如果用户用到了系统的复制、粘贴,程序会出错或导出的内容不对,我想就是在导出期间屏蔽用户复制、粘贴的快捷键和快捷菜单,导出后再恢复
------解决方案--------------------
你这种导出不能改成不使用clipboard吗?
本身这种做法不合理
------解决方案--------------------
或者你在导出时弹出一个popup类型窗口做的提示框,提示用户不要进行数据复制、剪切等操作,否则无法正常导出数据
pb屏蔽剪贴板基本做不到
如果导出excel的代码是自己写的,最好改导出的代码
------解决方案--------------------
FUNCTION ulong OpenClipboard(ulong hwnd) LIBRARY "user32.dll"
FUNCTION ulong CloseClipboard() LIBRARY "user32.dll"
当你打开剪贴板后
OpenClipboard(handle(w_主窗口))
不释放剪贴板,其他程序就无法操作剪贴板了,客户也无法使用操作系统的复制功能了,
使用完毕时再关闭剪贴板
CloseClipboard()
但是这样一来,你自己也无法clipboard('数据')了
你可以通过这种做法来变通实现,如:
closeclipboard()
clipboard("你的数据")
OpenClipboard(handle(w_主窗口))
就是说,每次调用clipboard函数前,先closeclipboard()
调用完毕后马上OpenClipboard(handle(w_主窗口))锁住剪贴板
等到数据导出完毕时,再调用一次关闭剪贴板
closeclipboard()
------解决方案--------------------
pb实现不了,只能用其他语言写dll,hook按键,然后pb调用
我上面说的方法可以实现的,你试试
OpenClipboard(handle(w_主窗口))
而不closeclipboard(),则使用电脑时,右键可以看到复制菜单,单击复制后,却是无法复制内容的
按我说的这种方法,应该是可以实现的:
你可以通过这种做法来变通实现,如:
closeclipboard()
clipboard("你的数据")
OpenClipboard(handle(w_主窗口))
就是说,每次调用clipboard函数前,先closeclipboard()
调用完毕后马上OpenClipboard(handle(w_主窗口))锁住剪贴板
等到数据导出完毕时,再调用一次关闭剪贴板
closeclipboard()
------解决方案--------------------
CSDN里不是有dw2xls的下载吗?可以参考一下他的实现方法.