100分求解,想把一大程序分成若干个小的EXE文件,使其能相互通信传递参数.顶者有分. 如题,最基本的实现,多个子EXE文件共用主程序的用户名密码,使用同一权限子程序不能单独启动关闭主程序时必须先关闭所有的子程序还有就是能不能让子程序以模式窗口的样式运行,(就是打开子程序,必须关闭才能激活主程序)暂时先就这些,欢迎大家一起讨论,哪位有过这方面经验的请给一段代码或是个小例子啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1,多个子EXE文件共用主程序的用户名密码,使用同一权限让用户在主程序里打开单个的程序就可以了.2,子程序不能单独启动 编译成exe了,怎么可能不能单独启动呢?3,关闭主程序时必须先关闭所有的子程序关闭主进程时,检测所有子程序,有就关掉.4,还有就是能不能让子程序以模式窗口的样式运行,(就是打开子程序,必须关闭才能激活主程序) 想不出怎么处理. 这么快就有人顶贴了啊,各位给几句代码吧,小弟一直做BS的,CS刚接触不了解 小弟一直做cs的,bs刚接触不了解 想学 跟着后面看一看吧 给个代码,你参考下吧不懂的查询下MSDN主程序Main AppExePath = "程序名称.Exe"; AppExePath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), AppExePath); ProcessStartInfo p = new ProcessStartInfo(AppExePath); p.WorkingDirectory = Path.GetDirectoryName(AppExePath); p.Arguments = "启动"; AppProcess = Process.Start(p);其他EXEMain if (args.Length > 0 && args[0] == "启动") { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new frmMain()); } 其他EXE static void Main(string[] args) { if (args.Length > 0 && args[0] == "人事系统") { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new frmMain()); } } 多线程,可以实现子程序同时运行。application.exit()退出所有程序 多个子EXE文件共用主程序的用户名密码,使用同一权限 :(那些子程序继承窗体后,申明带参数的构造函数)(这样)子程序不能单独启动 关闭主程序时必须先关闭所有的子程序 (做个托盘,托管子程序——其实就是把进程拿一起,最后一起析构了)还有就是能不能让子程序以模式窗口的样式运行(Hide()),(就是打开子程序,必须关闭才能激活主程序) 如果子程序没有要求的话,写成dll应该就行了吧……如果要写成exe,主程序调用子程序时将用户名密码传过去,子程序如果检查没有用户名密码就直接退出……如果要想关闭主程序时关闭所有子程序,icdbow的方法就可以了吧;如果是子程序是由用户手动关闭的话,主程序就在调用子程序时进行记录,然后开线程随时检查调用的子程序,发现全部都关闭后才允许本身关闭操作执行…… 打开的时候好像用ShowDialog()就行了,记不清了 关闭主程序时必须先关闭所有的子程序 -----检测子程序进程还有就是能不能让子程序以模式窗口的样式运行,(就是打开子程序,必须关闭才能激活主程序) --主程序调用子程序后就隐藏或最小化到任务栏子程序关闭时再show出来,或者干脆关闭主程序,show出子程序,所有子程序关闭就show出主程序。你可以参考魔法兔子,和360的设计 总觉得楼主那个程序就应该做成一个exe没有通讯,没有启动服务的话就没必要做成多个exe 多个EXE分别都做托盘,传递参数方式可以采用公用配置文件INI,通过EXE自己的读取,写入参数到INI中,实现EXE的参数传递.登陆模块也可以通过INI文件配置一些标志量来表示是否已经顺利登陆. 可能是我想得不以,在我看来,这个其实并不太困难! 一)把各项目中除主项目之外的Main方法中的 Application.Run(new Form1())删除,只保留主项目的.这样其它子项目虽然编译成了exe文件,却不能独立运行. 二)在主程序中通过反射得到子项目的主窗体. 如: Assembly asm = Assembly.LoadFrom("ClassLibrary1.exe"); //加载子项目. Form fm = asm.CreateInstance("ClassLibrary1.Form1", true) as Form;//反射创建窗体. fm.ShowDialog(); 这样就可以如同一个程序一样方便的操作各子程序了.也就可以完成你要的效果了. 分布式应用程序。REMOTING 这也是。NET 真正优于其它开发语言的地址。 搞不懂你为啥要这样设计?你把exe变成dll不是很好吗? 问题1和2 通过主程序将user类传递给子exe程序进行同一管理问题3貌似多余,因为根据问题4的要求,不会出现问题3的情况...问题4 主窗体打开子程序后,可以设置enable=false,关闭子程序传回响应值后enable=true,进行操作,包括关闭。 运行a.exe par1, par2可以在a.exe中读到参数的。在C#中可以直接读到这些环境变量。至于模态窗体那种形式,就不清楚了。 急急急,如何用LINQ FOR XML来操作被允许访问网站的IP段??? 各位,如下代码怎样转为C#语言(急) 字典类是否支持使用正则表达式查找键值? System.Math.Floor dll封装后的图标如何用图标名读取 datagrid的问题 如何在FTP上上传下载文件? 动态调用DLL的问题-总是提示:找不到文件或程序集名称“Web_Sn_Extend_Library.dll”,或找不到它的一个依赖项。 组合键如何定义? 參數保存問題 请教一下关于高手c#调用外部DLL的方法的问题,谢谢 正则表达式 字符串中的句点如何表示
各位给几句代码吧,小弟一直做BS的,CS刚接触不了解
跟着后面看一看吧
不懂的查询下MSDN主程序
Main AppExePath = "程序名称.Exe";
AppExePath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), AppExePath);
ProcessStartInfo p = new ProcessStartInfo(AppExePath);
p.WorkingDirectory = Path.GetDirectoryName(AppExePath);
p.Arguments = "启动";
AppProcess = Process.Start(p);其他EXE
Main if (args.Length > 0 && args[0] == "启动")
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new frmMain());
}
static void Main(string[] args)
{
if (args.Length > 0 && args[0] == "人事系统")
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new frmMain());
}
}
退出所有程序
-----检测子程序进程
还有就是能不能让子程序以模式窗口的样式运行,(就是打开子程序,必须关闭才能激活主程序)
--主程序调用子程序后就隐藏或最小化到任务栏子程序关闭时再show出来,或者干脆关闭主程序,show出子程序,
所有子程序关闭就show出主程序。你可以参考魔法兔子,和360的设计
登陆模块也可以通过INI文件配置一些标志量来表示是否已经顺利登陆.
一)把各项目中除主项目之外的Main方法中的 Application.Run(new Form1())删除,只保留主项目的.这样其它子项目虽然编译成了exe文件,却不能独立运行.
二)在主程序中通过反射得到子项目的主窗体.
如: Assembly asm = Assembly.LoadFrom("ClassLibrary1.exe"); //加载子项目.
Form fm = asm.CreateInstance("ClassLibrary1.Form1", true) as Form;//反射创建窗体.
fm.ShowDialog();
这样就可以如同一个程序一样方便的操作各子程序了.也就可以完成你要的效果了.
REMOTING
这也是。NET 真正优于其它开发语言的地址。
问题3貌似多余,因为根据问题4的要求,不会出现问题3的情况...
问题4 主窗体打开子程序后,可以设置enable=false,关闭子程序传回响应值后enable=true,进行操作,包括关闭。
可以在a.exe中读到参数的。在C#中可以直接读到这些环境变量。至于模态窗体那种形式,就不清楚了。