怎样禁用文本中的另存为、打印、复制粘贴等操作?(有熟悉C#中word等文本操作的大虾请进!有满意的答复我会继续最佳分数,可给到500分)

suhuaiqiang_janlay 2012-06-27 03:11:50
我希望在C#程序中实现如下功能:在程序中打开文件(可能是word、excel或txt、bmp和jpg图像类型),用户不能对其文本内容进行另存为、打印、复制粘贴等操作,要怎么实现呢?

打开文件的操作已经实现了:例如:Process p = System.Diagnostics.Process.Start("d:\\1.doc");

接下来要怎样禁止另存为等操作?(希望有高手指教,有满意的答复我会继续最佳分数!)
...全文
413 13 点赞 打赏 收藏 举报
写回复
13 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
bupt_2011110814 2012-08-31
hook windows底层的API函数吧
  • 打赏
  • 举报
回复
我自己已经找到办法了,就是通过FindWindow()找到“另存为”和“打印”对话框,然后将其关掉就可以。。暂时这么实现了。。不过还是谢谢大家!
  • 打赏
  • 举报
回复
五更琉璃 2012-06-28
这需求只能用HOOK吧消息截住 没别的办法了
  • 打赏
  • 举报
回复
不同的文件类型可能实现的方法不一样。这样吧,先说word,我现在只想屏蔽掉另存为和打印功能。不知道能不能截获word的“另存为”和“打印”对话框的消息,然后不让其完成另存为、打印行为?
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
你的程序是在IIS中打开的吗?如果是的话word、excel之类的本来就不能黏贴、修改之类的!

但能复制、和打印,下面是禁止复印的代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<hea……
[/Quote]

我只是在普通的winfrom控制台里面打开的,不是网页。是这样的,我只是想做一个类似windows文件夹里面的管理系统,能够双击打开一个文件(譬如word),然后希望word里面的另存为、打印功能可以屏蔽掉。

txt文件我已经能实现了,只要知道文件窗口句柄然后屏蔽掉它的菜单就可以,可是word2007上面的操作区好像不是菜单做的。没法定位到菜单栏。
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]
你用 Process.Start打开的,等于新开启了一个进程打开相应的页面,打开的是word,excel本身的窗体,你的程序无法控制的。。
如果一定要控制,在winform里打开,才行。
[/Quote]

winfrom里面能够打开word文件吗?
  • 打赏
  • 举报
回复
加油馒头 2012-06-28
你用 Process.Start打开的,等于新开启了一个进程打开相应的页面,打开的是word,excel本身的窗体,你的程序无法控制的。。
如果一定要控制,在winform里打开,才行。
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
这需求只能用HOOK吧消息截住 没别的办法了
[/Quote]

怎么拦截呢?能不能详细一点?是不是要知道“另存为”和“打印”对话框弹出的时候发送的消息码是多少?
  • 打赏
  • 举报
回复
永远的小鱼 2012-06-27
这些方法经测试 都不能完全防住的
  • 打赏
  • 举报
回复
H_Gragon 2012-06-27
1. oncontextmenu="window.event.returnvalue=false" 将彻底屏蔽鼠标右键
<table border oncontextmenu=return(false)><td>no</table> 可用于Table

2. <body onselectstart="return false"> 取消选取、防止复制

3. onpaste="return false" 不准粘贴

4. oncopy="return false;" oncut="return false;" 防止复制

5. <link rel="Shortcut Icon" href="favicon.ico"> IE地址栏前换成自己的图标

6. <link rel="Bookmark" href="favicon.ico"> 可以在收藏夹中显示出你的图标

7. <input style="ime-mode isabled"> 关闭输入法

  • 打赏
  • 举报
回复
H_Gragon 2012-06-27
你的程序是在IIS中打开的吗?如果是的话word、excel之类的本来就不能黏贴、修改之类的!

但能复制、和打印,下面是禁止复印的代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>js禁止复制网页代码</title>
<script type="text/javascript">
document.body.oncopy = nocopy;

function nocopy() {
clipboardData.setData("text", "");
setTimeout(nocopydelay,100);
}
function nocopydelay(){
alert("不能复制");
clipboardData.setData("text", "哈哈"+"rn文章来自: pawpaw_新浪博客详细参考:"+location.href);
}

  • 打赏
  • 举报
回复
assky124 2012-06-27
你用Process打开,跟你就没啥关系了

用控件什么的显示

也许可以拦截系统的右键等消息,自己查查API,这方面不是很了解
  • 打赏
  • 举报
回复
有没有人知道呢?急啊!!!
  • 打赏
  • 举报
回复
相关推荐
发帖
C#
创建于2007-09-28

10.6w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2012-06-27 03:11
社区公告

让您成为最强悍的C#开发者