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

2024-03-14 20:36

本文主要是介绍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);}}}}}
}

这篇关于WPF 两个程序之间传递参数(shell32.dll)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/809650

相关文章

Java使用WebView实现桌面程序的技术指南

《Java使用WebView实现桌面程序的技术指南》在现代软件开发中,许多应用需要在桌面程序中嵌入Web页面,例如,你可能需要在Java桌面应用中嵌入一部分Web前端,或者加载一个HTML5界面以增强... 目录1、简述2、WebView 特点3、搭建 WebView 示例3.1 添加 JavaFX 依赖3

防止SpringBoot程序崩溃的几种方式汇总

《防止SpringBoot程序崩溃的几种方式汇总》本文总结了8种防止SpringBoot程序崩溃的方法,包括全局异常处理、try-catch、断路器、资源限制、监控、优雅停机、健康检查和数据库连接池配... 目录1. 全局异常处理2. 使用 try-catch 捕获异常3. 使用断路器4. 设置最大内存和线

Linux高并发场景下的网络参数调优实战指南

《Linux高并发场景下的网络参数调优实战指南》在高并发网络服务场景中,Linux内核的默认网络参数往往无法满足需求,导致性能瓶颈、连接超时甚至服务崩溃,本文基于真实案例分析,从参数解读、问题诊断到优... 目录一、问题背景:当并发连接遇上性能瓶颈1.1 案例环境1.2 初始参数分析二、深度诊断:连接状态与

史上最全nginx详细参数配置

《史上最全nginx详细参数配置》Nginx是一个轻量级高性能的HTTP和反向代理服务器,同时也是一个通用代理服务器(TCP/UDP/IMAP/POP3/SMTP),最初由俄罗斯人IgorSyso... 目录基本命令默认配置搭建站点根据文件类型设置过期时间禁止文件缓存防盗链静态文件压缩指定定错误页面跨域问题

使用Python创建一个功能完整的Windows风格计算器程序

《使用Python创建一个功能完整的Windows风格计算器程序》:本文主要介绍如何使用Python和Tkinter创建一个功能完整的Windows风格计算器程序,包括基本运算、高级科学计算(如三... 目录python实现Windows系统计算器程序(含高级功能)1. 使用Tkinter实现基础计算器2.

电脑找不到mfc90u.dll文件怎么办? 系统报错mfc90u.dll丢失修复的5种方案

《电脑找不到mfc90u.dll文件怎么办?系统报错mfc90u.dll丢失修复的5种方案》在我们日常使用电脑的过程中,可能会遇到一些软件或系统错误,其中之一就是mfc90u.dll丢失,那么,mf... 在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包

电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案

《电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案》最近有不少兄弟反映,电脑突然弹出“mfc100u.dll已加载,但找不到入口点”的错误提示,导致一些程序无法正... 在计算机使用过程中,我们经常会遇到一些错误提示,其中最常见的就是“找不到指定的模块”或“缺少某个DL

SpringBoot请求参数接收控制指南分享

《SpringBoot请求参数接收控制指南分享》:本文主要介绍SpringBoot请求参数接收控制指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring Boot 请求参数接收控制指南1. 概述2. 有注解时参数接收方式对比3. 无注解时接收参数默认位置

Spring 请求之传递 JSON 数据的操作方法

《Spring请求之传递JSON数据的操作方法》JSON就是一种数据格式,有自己的格式和语法,使用文本表示一个对象或数组的信息,因此JSON本质是字符串,主要负责在不同的语言中数据传递和交换,这... 目录jsON 概念JSON 语法JSON 的语法JSON 的两种结构JSON 字符串和 Java 对象互转

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http