c#winform高手来!!怎样让winform 通过命令行运行且不弹出form窗口
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#winform高手来!!怎样让winform 通过命令行运行且不弹出form窗口相关的知识,希望对你有一定的参考价值。
1.怎样让winform 通过命令行运行且不弹出form窗口?
2.参数怎么传进去代替原form中的参数?
3.对运行过程中的异常,有什么办法取消弹出异常的对话框让程序一直运行到完成任务。
先行谢了
(稍后再加100)
这是个Winform程序,同时必须具备在命令行(传入参数运行的)功能。就是一个程序两种用法都具备。看过很多源码,方法也是千奇百怪,不胜枚举…………。
想看看同行的高见,也想比较一下国内外高手谁的思路更好,先谢谢兄弟的发言,我虚心学习先!
(只能加两次50,否则,我加到1000分)
string cmdtext = "net user bobo 123321 /add"
Process MyProcess= new Process();
//设定程序名
MyProcess.StartInfo.FileName = "cmd.exe";
//关闭Shell的使用
MyProcess.StartInfo.UseShellExecute = false;
//重定向标准输入
MyProcess.StartInfo.RedirectStandardInput = true;
//重定向标准输出
MyProcess.StartInfo.RedirectStandardOutput = true;
//重定向错误输出
MyProcess.StartInfo.RedirectStandardError = true;
//设置不显示窗口 ,你想要的效果就在这句!
MyProcess.StartInfo.CreateNoWindow = true;
MyProcess.Start();
MyProcess.StandardInput.WriteLine(cmdtext);
MyProcess.StandardInput.WriteLine("exit");
//从输出流获取命令执行结果,
string exepath = Application.StartupPath;
string
//返回信息从头读到尾:StrInfo=MyProcess.StandardOutput.ReadToEnd();
this.textBox1.Text = StrInfo;
2,不太明白什么意思!是不是给窗体传入参数!如果窗体已经创建完毕的话,就只能操作窗体内的静态变量!如果窗体是new出来的话!那么直接通过构造函数传入参数就好咯!
3,这个东西是FW内部的提示错误!无法用代码来控制!winform不想网页里面可以定义application_error事件!目前我知道的办法就是把所有会出错的地方加上try catch 错误处理! 参考技术A 先完成你一个给点分记得
先在程序入口类 Program 的 Main方法加入 参数数组 string []command 这就好办了吧,想定义什么参数改变什么在里面来个switch条件
static class Program
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string []command
)
form1 frm =new form1() //比如说这是主窗体先实例化一下
for (int i=0;i<command.Length;i++
//在这里来个参数判断
switch(command[i])
case "a" : //比方a是参数 让窗体隐藏启动
frm.Visible=false;
break;
case "b" : //比方b是让程序最大化 这是比方你可以选择你要的情况
frm.WindowState = FormWindowState.Maximized;
break;
// 好了你要什么做下面自己扩展吧 累死了
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(frm);
比方运行的时候 你可以在cmd 中进入到程序目录 比如程序文件名为test.exe
那么你在cmd中打 test.exe a 那么窗体就会隐藏启动
test.exe b 那么窗体就会最大化启动
参数可以一起使用
test.exe a b 那么窗体就隐藏了然后最大化了。看不见
谢谢本回答被提问者采纳 参考技术B private void Form1_Load(object sender, EventArgs e)
string [] arguments= Environment.GetCommandLineArgs();
if (arguments.Length > 1)
//这样就可以得到命令行传过来的参数了,
//不想显示窗体就 form 的visitiy 属性为false就行了
参考技术C 1 可以将FORM影藏起来
2 不清楚什么意思
3 如果不用TRY,CATCH将异常抛出。可以调用API使弹出的消息提示框,定时直接关闭。
# region 定时关闭MESSAGEBOX
private void StartKiller()
System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();
timer.Interval = 10; //定时可以很短,使肉眼无法识别 timer.Tick += new EventHandler(Timer_Tick);
timer.Start();
private void Timer_Tick(object sender, EventArgs e)
KillMessageBox();
//停止计时器
((System.Windows.Forms.Timer)sender).Stop();
private void KillMessageBox()
//查找MessageBox的弹出窗口,注意对应标题
IntPtr ptr = FindWindow(null, "exit");
if (ptr != IntPtr.Zero)
//查找到窗口则关闭
PostMessage(ptr, WM_CLOSE, IntPtr.Zero, IntPtr.Zero);
[DllImport("user32.dll", EntryPoint = "FindWindow", CharSet = CharSet.Auto)]
private extern static IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern int PostMessage(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);
public const int WM_CLOSE = 0x10;
# endregion 参考技术D 先完成你一个给点分记得
先在程序入口类
Program
的
Main方法加入
参数数组
string
[]command
这就好办了吧,想定义什么参数改变什么在里面来个switch条件
static
class
Program
///
<summary>
///
应用程序的主入口点。
///
</summary>
[STAThread]
static
void
Main(string
[]command
)
form1
frm
=new
form1()
//比如说这是主窗体先实例化一下
for
(int
i=0;i<command.Length;i++
//在这里来个参数判断
switch(command[i])
case
"a"
:
//比方a是参数
让窗体隐藏启动
frm.Visible=false;
break;
case
"b"
:
//比方b是让程序最大化
这是比方你可以选择你要的情况
frm.WindowState
=
FormWindowState.Maximized;
break;
//
好了你要什么做下面自己扩展吧
累死了
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(frm);
比方运行的时候
你可以在cmd
中进入到程序目录
比如程序文件名为test.exe
那么你在cmd中打
test.exe
a
那么窗体就会隐藏启动
test.exe
b
那么窗体就会最大化启动
参数可以一起使用
test.exe
a
b
那么窗体就隐藏了然后最大化了。看不见
谢谢
C#winform开发的C/S结构的程序,怎样实现自动升级的功能!望高手指教!
参考技术A 1你有网站放升级文件2程序分块制作,小更新就更新组件,大更新就自动重装
3
有更新功能
设定打开时检测版本,或定时检测,有高版本就提示更新 参考技术B 我有写过现成的自动更新程序,只要引用了程序集后生成安装包就可以自动更新了.如果你有兴趣的话邮件给我联系:
fishcn@foxmail.com 参考技术C 你可以写一个WebService让客户端来调用,替换程序集就可以了...我的博客新开,有很多很好的文章,欢迎来坐坐我的URL:
www.garychen.net
以上是关于c#winform高手来!!怎样让winform 通过命令行运行且不弹出form窗口的主要内容,如果未能解决你的问题,请参考以下文章
C#winform怎样等所有控件加载完再显示窗体?C#透明窗体显示时闪现黑块怎么解决?
C#winform怎样等所有控件加载完再显示窗体?C#透明窗体显示时闪现黑块怎么解决?