C#和asp.net执行外部EXE程序
2020-11-15 04:36
标签:com style tar ext c string art t get sp ble 这两天研究下.Net的执行外部EXE程序问题,就是在一个程序里通过按钮或其他操作运行起来另外一个程序,需要传入参数,如用户名、密码之类(实际上很类似单点登录,不过要简单的多的多);总结如下: 1、CS版:WebForm的调用外部程序,很简单 (1)如果不考虑参数问题,仅仅是执行另外一个程序,用:System.Diagnostics.Process.Start("‘)即可: 如:System.Diagnostics.Process.Start("D:\\首字母拼音码.exe", ""); (2)如果需要传入参数,最好使用ShellExecute: 如:程序1中执行程序2,并将用户名和密码传入程序2 首先,程序1中某个页面: 添加引用:using System.Runtime.InteropServices; 在按钮事件的外面添加: [DllImport("shell32.dll ")] 最后,按钮事件: private void button3_Click(object sender, EventArgs e) ShellExecute(IntPtr.Zero, new StringBuilder("Open"), new
StringBuilder("D:\\首字母拼音码.exe"), new StringBuilder("用户名 密码"), new
StringBuilder(""), 1); } 方法的第三个参数是:外部EXE程序的路径和名称;第四个参数是:要传入的用户名和密码,用空格分隔; 其他参数就不细说了,有兴趣的自己在网上找找吧。 其次:程序2需要接收参数: Program文件里: [STAThread] Form1文件里: private string _Name = ""; _Name和_Pwd两个公用变量就得到了传送过来的参数。 运行程序1,点击按钮,即可打开程序2,并得到两个参数值。 2、BS:WebForm版本执行外部程序,比较要命,因为我们需要在客户端调用,而按照CS版本写的话,在VS里可以运行,但是部署到IIS后访问,就没有反应了,目前发现的方法是使用脚本来实现: (1)无参数:程序1中,添加script脚本, var wsh = new ActiveXObject("WScript.Shell"); } 然后: (2)有参数:程序1中, var temp = document.getElementById(‘Hidden1‘); } 说明下:Hidden1和Hidden2是两个隐藏域,用于存放【用户名、密码】和【程序2的地址】 然后: 程序2和CS中的设置一致。 发布后,只要客户端有程序2,路径和设置的一致,就可以打开 对了,BS版本用该方法有些地方要注意: 首先,浏览器要是IE内核 其次,在浏览器的“Internet选项”,选择“安全”,将程序1的网址加入到“可信任站点” 其次,点“自定义级别”,选择“ActiveX控件和插件”中的“对未标记为可安全执行脚本的ActiveX控件初始化并执行脚本‘,选择”启用“(一般是禁用),保存即可 3、其他: 其他方法还有很多,不过感觉不大方便,比如修改计算机注册信息等;需要时再从网上找找吧(不过BS的仅找到这么一个方法,其他的无法再IIS部署后使用,以后有时间再研究吧) C#和asp.net执行外部EXE程序,布布扣,bubuko.com C#和asp.net执行外部EXE程序 标签:com style tar ext c string art t get sp ble 原文地址:http://www.cnblogs.com/jiutianxingchen/p/3696757.html
public static extern int
ShellExecute(IntPtr hwnd, StringBuilder lpszOp, StringBuilder lpszFile,
StringBuilder lpszParams, StringBuilder lpszDir, int FsShowCmd);
{
static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1(args));
}
private string _Pwd = "";
public Form1(string[] args)
{
InitializeComponent();
if (args != null && args.Length
> 1)
{
_Name = args[0].ToString();
_Pwd = args[1].ToString();
}
}
if (wsh) {
wsh.Run(command);
}
var path =
document.getElementById(‘Hidden2‘);
var ShellApp = new
ActiveXObject("Shell.Application");
ShellApp.ShellExecute(path.value, temp.value)