先用C#写个简单的exe,这里我就用winForm
Program.cs这里加了个启动参数
Program.cs这里加了个启动参数
大气象
Form1.cs
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace WindowsApplication1
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1(args));
}
}
}
using System.Collections.Generic;
using System.Windows.Forms;
namespace WindowsApplication1
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1(args));
}
}
}
大气象
然后建个网站项目。using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public Form1(string[] s)
{
InitializeComponent();
if (s.Length > 0)
MessageBox.Show(s[0]);
if (s.Length > 1)
MessageBox.Show(s[1]);
}
}
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public Form1(string[] s)
{
InitializeComponent();
if (s.Length > 0)
MessageBox.Show(s[0]);
if (s.Length > 1)
MessageBox.Show(s[1]);
}
}
}
大气象
protected void btnCount_Click(object sender, EventArgs e)
{
//调用记事本
//System.Diagnostics.Process.Start("C:\\WINDOWS\\system32\\notepad.exe");
try
{
//调用自己的exe传递参数
Process proc = new Process();
string sPath = Request.MapPath("~");//取得物理路径
proc.StartInfo.FileName = sPath + @"\hi.exe";
proc.StartInfo.Arguments = "参数1 参数2";
proc.Start();
Thread.Sleep(5000);//暂停3秒
foreach (System.Diagnostics.Process pro in System.Diagnostics.Process.GetProcessesByName("hi"))
{
pro.Kill();
}
}
catch (Exception ex)
{
Response.Write(ex.ToString());
}
}
{
//调用记事本
//System.Diagnostics.Process.Start("C:\\WINDOWS\\system32\\notepad.exe");
try
{
//调用自己的exe传递参数
Process proc = new Process();
string sPath = Request.MapPath("~");//取得物理路径
proc.StartInfo.FileName = sPath + @"\hi.exe";
proc.StartInfo.Arguments = "参数1 参数2";
proc.Start();
Thread.Sleep(5000);//暂停3秒
foreach (System.Diagnostics.Process pro in System.Diagnostics.Process.GetProcessesByName("hi"))
{
pro.Kill();
}
}
catch (Exception ex)
{
Response.Write(ex.ToString());
}
}
这里exe的打开与关闭都有了。
这种方法直接用vs打开可以正常运行,但是放在iis下就不行了,权限不足。
最后找到一个方法就是通过Windows API调用外部程序
同样写个简单的控制台程序。就是在D盘新建一个文本文件。
大气象
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
FileInfo f = new FileInfo(@"D:\hi.txt");
StreamWriter w = f.CreateText();
string s = "0";
if (args.Length > 0)
s = "123";
w.WriteLine("dddd" + s);
w.Close();
}
}
}
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
FileInfo f = new FileInfo(@"D:\hi.txt");
StreamWriter w = f.CreateText();
string s = "0";
if (args.Length > 0)
s = "123";
w.WriteLine("dddd" + s);
w.Close();
}
}
}
通过Web Service调用
大气象
using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Diagnostics;
using System.ComponentModel;
using System.Runtime.InteropServices;
using System.Text;
/// <summary>
/// WebService 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class WebService : System.Web.Services.WebService
{
[DllImport("shell32.dll ")]
public static extern int ShellExecute(IntPtr hwnd, StringBuilder lpszOp, StringBuilder lpszFile, StringBuilder lpszParams, StringBuilder lpszDir, int FsShowCmd);
public WebService()
{
//如果使用设计的组件,请取消注释以下行
//InitializeComponent();
}
[WebMethod]
public string HelloWorld()
{
ShellExecute(IntPtr.Zero, new StringBuilder("Open"), new StringBuilder("hi"), new StringBuilder("jjj"), new StringBuilder(@"D:\"), 1);
return "Hello World";
}
}
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Diagnostics;
using System.ComponentModel;
using System.Runtime.InteropServices;
using System.Text;
/// <summary>
/// WebService 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class WebService : System.Web.Services.WebService
{
[DllImport("shell32.dll ")]
public static extern int ShellExecute(IntPtr hwnd, StringBuilder lpszOp, StringBuilder lpszFile, StringBuilder lpszParams, StringBuilder lpszDir, int FsShowCmd);
public WebService()
{
//如果使用设计的组件,请取消注释以下行
//InitializeComponent();
}
[WebMethod]
public string HelloWorld()
{
ShellExecute(IntPtr.Zero, new StringBuilder("Open"), new StringBuilder("hi"), new StringBuilder("jjj"), new StringBuilder(@"D:\"), 1);
return "Hello World";
}
}
这是目前asp.net调用exe找到的正确运行的方法。放在IIS中正确运行。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· DeepSeek火爆全网,官网宕机?本地部署一个随便玩「LLM探索」
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 上周热点回顾(1.20-1.26)