Tag: 进程

有没有办法用C#关闭特定的资源管理器实例?

我正在寻找一种方法来关闭一个对某个文件夹打开的Windows资源管理器窗口。 说c:\ users \ bob \文件夹。 我可以用下面的代码关闭所有的探险家,但这显然不是我想要做的。 这可能吗? foreach (Process p in Process.GetProcessesByName(“explorer”)) { p.Kill(); } 谢谢

如何将keypresses发送到正在运行的流程对象?

我正在尝试使C#启动一个应用程序(在这种情况下是开放式办公室),并开始发送该应用程序按键,使其看起来好像有人正在打字。 理想情况下,我可以发送一个正在运行的开放式办公室流程来处理字母“d”的按键,然后打开办公室就会在纸上输入d。 任何人都可以根据具体情况给我指点吗? 我试图做以下事情: p = new Process(); p.StartInfo.UseShellExecute = true; p.StartInfo.CreateNoWindow = false; p.StartInfo.FileName = processNames.executableName; p.Start(); p.StandardInput.Write(“hello”); 但这并没有给我带来预期的效果 – 我没有看到文本在开放式办公室输入。

从Process获取实时输出

我的项目有问题。 我想启动一个进程,7z.exe(控制台版)。 我尝试过三种不同的东西: Process.StandardOutput.ReadToEnd(); OutputDataReceived和BeginOutputReadLine 的StreamWriter 什么都行不通。 它始终“等待”过程结束以显示我想要的内容。 我没有任何代码可以放,只是如果你想要我的代码与其中一个列出的东西。 谢谢。 编辑:我的代码: process.StartInfo.UseShellExecute = false; process.StartInfo.RedirectStandardOutput = true; process.StartInfo.CreateNoWindow = true; process.Start(); this.sr = process.StandardOutput; while (!sr.EndOfStream) { String s = sr.ReadLine(); if (s != “”) { System.Console.WriteLine(DateTime.Now + ” – ” + s); } } 要么 process.StartInfo.UseShellExecute = false; process.StartInfo.RedirectStandardOutput = true; process.OutputDataReceived += new […]

FindWindow和SetForegroundWindow的替代品?

我正在寻找使用FindWindow()和SetForegroundWindow()切换到不同应用程序的旧User32.dll版本的替代品。 我确实找到了第一个使用Process.GetProcessesByName()的替代方法,但我没有看到相应的方法切换(设置活动/前台)到该应用程序。 有没有办法在不使用User32.dll的旧方法的情况下这样做? 谢谢您的帮助。 编辑 我接受了@Sorceri的答案,虽然这不是我想要的答案。

如何启动进程隐藏?

我通过ProcessStartInfo和process.Start()启动控制台应用程序。 我想隐藏黑色的窗户。 这是我的代码: string output = “”; //Setup the Process with the ProcessStartInfo class ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.FileName = “C:\\WINNT\\system32\\cmd.exe”; startInfo.UseShellExecute = false; startInfo.RedirectStandardOutput = true; //Start the process Process proc = Process.Start(startInfo);

在.NET中有效地重定向标准输出

我试图从.NET程序调用php-cgi.exe。 我使用RedirectStandardOutput将输出作为流返回,但整个过程非常慢。 你对我如何更快地做到这一点有什么想法吗? 还有其他技术吗? Dim oCGI As ProcessStartInfo = New ProcessStartInfo() oCGI.WorkingDirectory = “C:\Program Files\Application\php” oCGI.FileName = “php-cgi.exe” oCGI.RedirectStandardOutput = True oCGI.RedirectStandardInput = True oCGI.UseShellExecute = False oCGI.CreateNoWindow = True Dim oProcess As Process = New Process() oProcess.StartInfo = oCGI oProcess.Start() oProcess.StandardOutput.ReadToEnd()

如何从C#应用程序远程调用另一个进程方法

我有一个C#应用程序,我想从我的app调用一个函数名称,例如SendChatMessage(字符串消息,int userid)。但是这个函数属于我计算机上另一个运行的基于客户端/服务器的应用程序。 我找不到如何做到这一点的方式。 我尝试使用Reflection库进行此操作但失败了。 希望有人帮助我。 感谢帮助。

获取进程路径时访问被拒绝

我试图通过pid获取进程路径,但我得到Win32Exception(访问ID被拒绝)。 代码如下所示: string path = Process.GetProcessById(pid).MainModule.FileName 我已经尝试使用OpenProcess和GetModuleFileNameEx但是OpenProcess返回0.我甚至尝试根据C#启用SeDebugPrivilege – 如何启用SeDebugPrivilege但它没有帮助。 上面的代码适用于大多数进程,但抛出SynTPHelper.exe(Synaptics Pointing Device Helper)的错误。应用程序在与我的代码相同的用户名下运行。 两者,我的应用程序和进程都以64位运行。 是否可以在不以管理员身份运行我的应用程序的情况下检索路径? 编辑 即使我没有以管理员身份运行它,任务管理器也可以“打开文件位置”。

图像文件副本正被另一个进程使用

我正在尝试创建一个用户perfil编辑窗口,在这个窗口中有一个Image控件 当我选择一个图像文件时,它将显示在此Image控件中并将此文件复制到我的图像文件夹中,第一次就可以了,但第二次显示错误 “该进程无法访问文件’C:\ 1.jpg’,因为它正被另一个进程使用。” 我认为这是因为我的Image控件正在使用这个文件,所以,我不知道我能做什么 private void Select_Click(object sender, RoutedEventArgs e) { OpenFileDialog od = new OpenFileDialog(); if (od.ShowDialog() == true) { string imageLocal = @”C:/1.jpg”; File.Copy(od.FileName, imageLocal, true); image1.Source = new BitmapImage(new Uri(imageLocal)); } }

获取另一个进程的窗口状态

如何获取正在运行的另一个进程的窗口状态( maximized , minimized )? 我试过用这个: Process[] procs = Process.GetProcesses(); foreach (Process proc in procs) { if (proc.ProcessName == “notepad”) { MessageBox.Show(proc.StartInfo.WindowStyle.ToString()); } } 但如果进程Maximized或Minimized ,它将返回Normal 。 如何解决这个问题?