B/S结构中调用其他程序??在线等待

jinsfu 2003-09-13 02:07:33
目的:让客户端用户单击浏览器中的一个按钮Button1,启动notepad.exe
我写了下面的一段程序,但是不管用,也不报错!
private void Button1_Click(object sender, System.EventArgs e)
{
Process Proc=new Process();
Proc.StartInfo.FileName="C:\\WINNT\\system32\\notepad.exe";
Proc.StartInfo.Arguments="";
Proc.Start();
}
...全文
32 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
layerr 2003-09-16
  • 打赏
  • 举报
回复
在客户端用这种方法是不可能成功运行一个程序的。
如果可以的话,浏览器还有什么安全性可言?把你那个调用的程序改成:format c:/u的话结果会如何呢?谁还敢访问WEB???
panyee 2003-09-15
  • 打赏
  • 举报
回复
你的操作系统是什么? 是否把运行脚本的WScript.exe什么的程序给去掉了?

win2003的话, IE因为安全性的原因也不让运行

-----------------------
var obj = new ActiveXObject("WScript.Shell");
obj.Run("notepad.exe");
-----------------------

你把脚本存成.js文件, 双击运行运行试试? 如果不能运行, 那就是操作系统把此功能屏蔽了
LongBow007 2003-09-15
  • 打赏
  • 举报
回复
mark
jerryfangsh 2003-09-15
  • 打赏
  • 举报
回复
注意,在浏览器中调用外部的应用程序,并与之交互的技术是有技术专利的。

最近微软因为已经输了官司,正在考虑修改呢。
stoway 2003-09-15
  • 打赏
  • 举报
回复
up
jinsfu 2003-09-15
  • 打赏
  • 举报
回复
谢谢快乐王子!!!
我找到了一段代码,和你给的类似,可以运行,代码如下:
<script>
function exec (command) {
window.oldOnError = window.onerror;
window._command = command;
window.onerror = function (err) {
if (err.indexOf('utomation') != -1) {
alert('命令' + window._command + ' 已经被用户禁止!');
return true;
}
else return false;
};
var wsh = new ActiveXObject('WScript.Shell');
if (wsh)
wsh.Run(command);
window.onerror = window.oldOnError;
}
</script>

<input type="button" name="Submit" value="执行" onClick="exec('notepad')">

我现在遇到的问题是,我想调用其他的应用程序而不是notepad,路径我应该怎么写?

我做了一个测试,我把程序abc(该程序原来安装在C:\Program Files\下)拷贝到c:\winnt\下或c:\winnt\system32下,将notepad 换成abc即可运行!
我想这个是不是和系统变量的Path 有点关系?于是,我把C:\Program Files加入Path变量,程序仍然在C:\Program Files下,运行,脚本错误!

请指点迷津,谢谢
layerr 2003-09-14
  • 打赏
  • 举报
回复
应该说我没有理解错,我知道你是在用C#做ASP.net。但是你的C#程序只能控制服务器端的东东,如果你需要用户在网上点击一下就打开客户端的写字板,光用ASP.net中的后台CS文件是根本不可能实现的。
唯一的办法就是如我所述,你再仔细读一遍吧,为了你好理解,你可以把第2步中的Test.htm改成test.aspx,其它的不变就是了。
关键的一点就要理解:ASP.net在客户端就不能控制你用户的任何动作了!与html文件没有区别。所谓的ASP.net中的Button的Click()事件中的所有程序都是针对服务器操作的!!!!不是针对客户端操作的!!!!
如果你所写的程序,是要打开服务器上的notepad.exe,这有可能么??打开服务器上的notepad.exe,对客户端是没有任何反应的。只会造成这样的结果:有多少用户点击过这个页面上的这个按钮,服务器端就会打开多少过记事本,然后你就费点时间到服务器上一个一个的把记事本都关掉。
jinsfu 2003-09-14
  • 打赏
  • 举报
回复
自己UP一下
jinsfu 2003-09-14
  • 打赏
  • 举报
回复
快乐王子,能否提供具体实现的脚本?
你上面写的那一段,总是说网页有错误。关闭浏览器后,提示***内存不能read,确定后关闭。
jinsfu 2003-09-13
  • 打赏
  • 举报
回复
layerr(new WantToKnow(C#)) :
谢谢,但我想你理解错了,我使用C#做asp.net。
潜水员2099 2003-09-13
  • 打赏
  • 举报
回复
gz
layerr 2003-09-13
  • 打赏
  • 举报
回复
你的意图是想在客户端还使用C#的程序。
也就是说在WinForm中编写的类,直接可以用到网页中。
如果是这样你可以按如下步骤操作:
1、建立一个Window Form的自定义控件,其文件名为:CallNote.dll,名称空间为:MyNameSpace,类名为:MyClassName,在控件中拖入一个Button,Click事件的程序如你所写即可。
2、建立一个名为Test.htm的页面,将CallNote.dll拷贝到Test.htm的相同目录下,在Test.htm的<body></body>部分写入如下一段话:
<object id="simpleControl1"

classid="http:CallNote.dll#MyNameSpace.MyClassName"
height="300" width="300" VIEWASTEXT>
</object>
jinsfu 2003-09-13
  • 打赏
  • 举报
回复
有没有人能给出具体实现的代码?
本人再加50分!!
沈逸 2003-09-13
  • 打赏
  • 举报
回复
服务器端 执行进程的话
应该 看不到
其实已经运行了
jinsfu 2003-09-13
  • 打赏
  • 举报
回复
全部改成“启用”了,还是不行
xz_king 2003-09-13
  • 打赏
  • 举报
回复
没错,主要是权限问题,默认是禁用的。
panyee 2003-09-13
  • 打赏
  • 举报
回复
要把IE的权限放开, 安全性里把上头几项控件使用全改成"启用"
jinsfu 2003-09-13
  • 打赏
  • 举报
回复
是不是周末,人少?还是其他的
分不够可以加!!
jinsfu 2003-09-13
  • 打赏
  • 举报
回复
谢谢,试了一下,提示网页有错误
panyee 2003-09-13
  • 打赏
  • 举报
回复
这样是在服务端启动notepad.exe进程

在客户端执行要用javascript

<script>
function button_click()
{
var obj = new ActiveXObject("WScript.shell");
obj.Run("notepad.exe");
}
加载更多回复(1)

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

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