Tag: 进程

WPF On Start检测进程是否已启动并将应用程序置于最前面

我有一个非常简单的问题。 程序启动后,用户尝试启动另一个实例。 新实例需要将旧实例放在前面并退出。 解决方案非常简单,我可以从http://www.codeproject.com/KB/cs/oneprocessonly.aspx获取代码并完成它。 幸运/不幸的是我正在使用WPF。 这意味着,我无法控制Main()方法的内容。 我找到了解决这个问题的方法“如何在我的WPF应用程序中提供自己的Main()方法?” @ http://learnwpf.com/Posts/Post.aspx?postId=a5643949-ab80-47f9-93c8-f5e8e5782d34 。 但是,当没有App.xaml文件时,这个解决方案会带来像Expression Blend stats这样的另一个问题。 我可以使用App类OnStarted事件,但我正在使用WPF的启动画面资源,这意味着将显示额外的启动画面。 我对这种方法的最后一个担忧是接缝不能“面向未来”给我:(。 这个问题有没有WPF风格的解决方案? 先感谢您。

C#进程启动焦点问题

当我开始一个新的过程时,它会自动获得焦点。 如何防止它获得焦点或者将焦点重新集中到我的应用程序? 这是我正在使用的代码: string path = @”c:\temp\myprocess.exe”; ProcessStartInfo info = new ProcessStartInfo(path); info.WorkingDirectory = path; Process p = Process.Start(info); 我只是需要执行过程才能获得焦点。 非常感谢你, 阿迪巴尔达

pConsole.StartInfo.RedirectStandardOutput和pConsole.Exited事件(c#)

我有一个GUI应用程序执行(在一个新的进程中)“控制台”应用程序并解析输出。 要重定向输出,请将pConsole.StartInfo.RedirectStandardOutput设置为true。 我还订阅了pConsole.Exited事件。 我看到的问题是我必须在Exited事件处理程序中使用Thread.Sleep()来获取最后的数据。 我的退出事件处理程序如下所示: Thread.Sleep(100); // Wait for additional data (if any). pConsole.OutputDataReceived -= new System.Diagnostics.DataReceivedEventHandler(this.localTerminal_DataAvailableEvent); int exit = pConsole.ExitCode; pConsole.Dispose(); pConsole = null; 似乎Exited事件在我的上一个pConsole_DataAvailableEvent之前执行。 任何人都知道这是怎么回事? 在开始执行下一个控制台应用程序之前,我还使用互斥锁/锁来确保我的Exited事件已完成。

如何在C#中执行cmd,然后在同一窗口中执行下面的另一个命令?

正是我想要完成的是一个基本上在1次点击中设置活动分区的程序,节省了使用cmd提示等的工作时间和技巧。 我查看了System.Management名称空间,但无法解决如何使用它:( 所以我已经使用CMD,我有一个用C#编写的模块应用程序,基本上我想运行“DISKPART”,然后在cmd窗口中启动diskpart,然后我想要它“选择磁盘0”然后“select partition 1”最后是“active”。 在CMD中这样做你自己工作得很好,但有一个应用程序,它被certificate是尴尬的:(我设法让它做的是在一个窗口中使用Process.Start运行DiskPart,然后让它打开一个新窗口并运行下一个一段代码,但因为新窗口没有运行diskpart cmd它不起作用> 🙁 有什么建议? 谢谢! 灰

如何使用c#将消息从Windows服务传递到Windows桌面应用程序?

我想将一条消息从Windows服务传递到已经运行的Windows桌面应用程序。 我在Windows服务上实现了一个计时器。 在一段时间之后,服务向Windows应用程序发送消息。 服务或发件人代码如下: System.Diagnostics.Process[] lProcs = System.Diagnostics.Process.GetProcessesByName(“TestProcess2”); if (lProcs.Length > 0) { IntPtr handle = lProcs[0].MainWindowHandle; if (handle != IntPtr.Zero) SendMessage(handle, 232, IntPtr.Zero, IntPtr.Zero); } 和windows桌面应用程序(接收器)代码如下: protected override void WndProc(ref Message m) { if (m.Msg == 232) { MessageBox.Show(“Received”); } else { base.WndProc(ref m); } } 当两个进程都是windows桌面应用程序时,上面的代码工作正常。 当我使用Windows服务作为发件人时,Windows桌面应用程序进程无法接收消息。 你能帮我吗?

C# – 如何检查进程是否成功启动

可能重复: 如何知道Process.Start()是否成功? 我的程序中有一个类似于看门狗的程序(让我们称之为WD ),这是另一个正在运行的程序(我们称之为A )。 我正在某个事件中启动WD进程,假设按下了一个键,我想用这个进程启动另一个进程,让我们称之为B 问题是我想知道进程B成功启动之后关闭了初始进程A 我怎么检查? 我正在使用Process.Start(argList)和ProcessInfo(argList)语法启动进程WD和B 每个进程都是一个简单的C#控制台应用程序

Process.Start()的替代方案

我刚刚完成编码文档存储解决方案,我遇到了以下问题。 在UI中,用户可以按下按钮打开文件: try { Process.Start(file); } catch (Exception ex) { //Error handling code } 我的问题是,如果用户没有与文件类型相关联的应用程序,则会抛出一个componentmodelexception,并显示一条消息。 我宁愿做的是在那种情况下弹出“打开方式”对话框,是否有方法调用我不见了?

如何以编程方式在C#中使用“using”关键字?

我有一些System.Diagnotics.Processes来运行。 我想自动调用close方法。 显然,“using”关键字为我做了这个。 这是使用using关键字的方式吗? foreach(string command in S) // command is something like “c:\a.exe” { try { using(p = Process.Start(command)) { // I literally put nothing in here. } } catch (Exception e) { // notify of process failure } } 我想开始多个进程同时运行。

使用C#获取应用程序打开的所有TCP连接

如何查找特定应用程序打开的所有tcp连接,可能是进程ID或smth。 像这样? 我用C#

向父进程发信号通知子进程已完全初始化

我正在启动一个公开WCF端点的子进程。 如何从子进程向父进程发出信号,表明子进程已完全初始化并且现在可以访问端点? 我想过为此目的使用信号量,但无法弄清楚如何实现所需的信号。 string pipeUri = “net.pipe://localhost/Node0”; ProcessStartInfo startInfo = new ProcessStartInfo(“Node.exe”, “-uri=” + pipeUri); Process p = Process.Start(startInfo); NetNamedPipeBinding binding = new NetNamedPipeBinding(); var channelFactory = new ChannelFactory(binding); INodeController controller = channelFactory.CreateChannel(new EndpointAddress(pipeUri)); // need some form of signal here to avoid.. controller.Ping() // EndpointNotFoundException!!