WPF 两个程序之间传递参数(shell32.dll)

当前文章只是笔记,代码并不完善仅作参考。

完整案例:WPF 两个程序之间传递参数(Process)_wpf的exe程序传入参数-CSDN博客

主窗口


        [DllImport("shell32.dll")]
        public static extern int ShellExecute(IntPtr hwnd, StringBuilder lpszOp, StringBuilder lpszFile, StringBuilder lpszParams, StringBuilder lpszDir, int FsShowCmd);

        public void sc(string exepath, string sof_Name)
        {
            ShellExecute(IntPtr.Zero, new StringBuilder("Open"), new StringBuilder(exepath + "\\rest.exe"), new StringBuilder("shortcut " + exepath + " " + sof_Name), new StringBuilder(exepath), 1);
            //ShortCut.CreateShortCut(exepath, sof_Name);
        }

        //例:该方法可以嵌套在按钮的单击事件里面
        public void StartProgram()
        {
            string url = @"F:\MainWindow.exe";//这里是要打开的程序路径,不是当前的程序路径
            Student stu = new Student();
            stu.ID = 1;
            stu.Name = "张三";
            stu.Age = 18;
            //把Student对象序列化为Json字符串 
            //引用:System.Web.Script.Serialization;
            string paras = new JavaScriptSerializer().Serialize(stu);
            //获取启动应用程序的可执行文件的路径,包括可执行文件的名称。    就是可以获取到当前程序的.exe文件
            string exe_path = System.Windows.Forms.Application.ExecutablePath; //System.Diagnostics.Process.GetCurrentProcess

            //启动MainWindow程序
            ShellExecute(IntPtr.Zero, new StringBuilder("Open"), new StringBuilder(url), new StringBuilder(paras.Replace("\"", "\\\"") + " " + exe_path), new StringBuilder(url.Replace("MainWindow.exe", string.Empty)), 1);

            //关闭当前程序
            //this.Close();
        }
        class Student
        {
            public int ID { get; set; }
            public string Name { get; set; }
            public int Age { get; set; }
        }

要打开的外部窗口(MainWindow)

创建Program.cs类

namespace MainWindow
{
    class Program
    {
        //标注主线程为STA模型
        [STAThread]
        static void Main(string[] args)
        {
            MessageBox.Show("是否可以获取到参数:"+args.Length );
            bool flag;
            Application.EnableVisualStyles();//启用可视化样式
            Application.SetCompatibleTextRenderingDefault(false);//将某些控件上定义的 UseCompatibleTextRendering 属性设置为应用程序范围内的默认值。
            using (new System.Threading.Mutex(true, Application.ProductName, out flag))
            {
                if (flag)
                {
                    if (args.Length > 0)
                    {
                       
                    }
                    else
                    {
                        MessageBox.Show("应用程序已经在运行中...");
                        Environment.Exit(1);
                    }

                }
            }
        }
    }
}

相关推荐

  1. WPF 程序之间传递参数shell32.dll

    2024-03-15 08:34:02       21 阅读
  2. 【Linux】shell——传递参数

    2024-03-15 08:34:02       5 阅读
  3. 前端网页之间传递参数

    2024-03-15 08:34:02       15 阅读
  4. 程序View点击响应传递参数

    2024-03-15 08:34:02       12 阅读
  5. android与React Native之间传递参数

    2024-03-15 08:34:02       29 阅读
  6. WPF —— MVVM command如何传递参数

    2024-03-15 08:34:02       38 阅读
  7. 「Linux系列」说说Shell参数传递参数处理方法

    2024-03-15 08:34:02       21 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-15 08:34:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-15 08:34:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-15 08:34:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-15 08:34:02       20 阅读

热门阅读

  1. 【C语言】宏定义的详解与实践

    2024-03-15 08:34:02       21 阅读
  2. Docker学习笔记

    2024-03-15 08:34:02       20 阅读
  3. 【Linux】文本替换Ubuntu 中 sed 指令的使用指南

    2024-03-15 08:34:02       22 阅读
  4. Uni-app开发Canvas当子组件示例,点点绘制图形

    2024-03-15 08:34:02       17 阅读
  5. Error: ENOENT: no such file or directory, uv_cwd

    2024-03-15 08:34:02       18 阅读
  6. 微信小程序uniapp onshow函数介绍

    2024-03-15 08:34:02       21 阅读
  7. YOLOv8 服务器与本地tensorboard映射

    2024-03-15 08:34:02       20 阅读
  8. SpringBoot自动配置工作流程中变更自动配置

    2024-03-15 08:34:02       18 阅读
  9. fpga相关知识

    2024-03-15 08:34:02       22 阅读
  10. Elastic Stack--10--QueryBuilders UpdateQuery

    2024-03-15 08:34:02       17 阅读