Tag: 进程

用查询字符串打开html文件

是否可以使用查询字符串加载本地HTML文件? 我正在使用Process.Start,但是因为将?querystring=test附加到文件名的末尾使其搜索到它而失败。 Process.Start(“page.html?querystring=test”) 上面的代码导致FileNotFoundexception。 我已经尝试使用ProcessStartInfo并将查询字符串作为参数传递,但只是加载了正常页面。 这可能吗?

从StandardOutput获取二进制数据

我正在开始一个代码类似于下面的代码: // some of the flags are not needed process.StartInfo.CreateNoWindow = true; process.StartInfo.ErrorDialog = false; process.StartInfo.UseShellExecute = false; process.StartInfo.RedirectStandardError = true; process.StartInfo.RedirectStandardOutput = true; process.EnableRaisingEvents = true; process.OutputDataReceived += process_OutputDataReceived; process.ErrorDataReceived += process_OutputDataReceived; process.Start(); process.BeginErrorReadLine(); process.BeginOutputReadLine(); void process_OutputDataReceived(object sender, DataReceivedEventArgs e) { } void process_ErrorDataReceived(object sender, DataReceivedEventArgs e) { } 我遇到的问题是DataReceivedEventArgs对象有一个Data属性是一个字符串。 我需要读取标准输出数据作为二进制数据。 我猜测没有办法将字符串数据恢复到适当的二进制数据中,因此任何使用不同方法接收二进制数据的建议都会很棒。

从C#关闭最小化/图标化过程

这是我的问题:我需要从C#程序关闭已经运行的进程。 问题是该进程现在作为一个图标运行(最小化到任务栏),除非用户至少打开一次(在无人值守的机器上永远不会发生),它将永远不会有一个主窗口。 我的另一个要求是应用程序关闭而不是被杀死 。 我需要它将它的内存缓冲区写入磁盘 – 并且杀死它会导致数据丢失。 这是我到目前为止所尝试的: foreach (Process proc in Process.GetProcesses()) { if (proc.ProcessName.ToLower().StartsWith(“myapp”)) { if (proc.MainWindowHandle.ToInt32() != 0) { proc.CloseMainWindow(); proc.Close(); //proc.Kill(); <— not good! } } } 在窗口最小化后发现MainWindowHandle == 0之后,我添加了if子句。 删除if无济于事。 CloseMainWindow()和Close()都不起作用。 杀戮()确实如此,但如上所述 – 这不是我需要的。 任何想法都会被接受,包括使用神秘的Win32 API函数:)

.net cmd Proces.Start()无法更改目录

我认为我的问题标题已经非常明确了。 我通过传递“cmd.exe”作为参数来调用Process.Start()方法。 但不知何故,当我执行程序时,出现的命令提示符将我的项目文件夹中的…/bin/debug/作为其目录。 我希望它改为C:而不是。 有人可以就此提出建议吗?

C#相当于fork()/ exec()

我正在开发一个需要调用外部程序的程序,但需要等待它执行。 这是在C#中完成的(我是全新的,但在C ++,Qt和C方面有很多经验)并且CreateProcess似乎不是我正在寻找的(启动过程,然后忘记它,我不需要)。 这是我的第一个Windows项目之一(或者至少,只有Windows,当然只有.NET),而且我更习惯于为* nix做这类事情,我会在子项中使用fork然后执行exec,然后等孩子终止。 但我不知道在哪里开始寻找这样的事情。 哦,我很确定我被困在.NET中因为我需要读取访问注册表才能完成这个项目而.NET的注册表访问绝对是惊人的(在我看来,我没有任何东西可以将它与)。 谢谢。

在C#中,如何可靠地删除进程树

在C#中,我们使用以下代码来终止进程树。 有时它可以工作,有时它不工作,可能与Windows 7和/或64位有关。 它找到给定进程的子进程的方法是调用GetProcesses来获取系统中的所有进程,然后调用NtQueryInformationProcess来找出其父进程是给定进程的每个进程。 它以递归方式执行此操作,以便走树。 在线文档NtQueryInformationProcess应该使用NtQueryInformationProcess 。 相反,有一种叫做EnumProcesses东西,但我找不到C#中的任何例子,只有其他语言。 什么是在C#中杀死进程树的可靠方法? public static void TerminateProcessTree(Process process) { IntPtr processHandle = process.Handle; uint processId = (uint)process.Id; // Retrieve all processes on the system Process[] processes = Process.GetProcesses(); foreach (Process proc in processes) { // Get some basic information about the process PROCESS_BASIC_INFORMATION procInfo = new PROCESS_BASIC_INFORMATION(); try { […]

可以全屏打开程序的应用程序?

我需要创建一个以全屏模式启动新程序(例如记事本)的应用程序。 我能用c#做吗? 我很感激代码示例。谢谢:)

杀死远程机器上的进程

我正试图杀死远程机器上的进程。 但我得到错误。 我做错了什么,我该怎么做才能做到这一点? 我的代码: var iu = new ImpersonateUser(); try { iu.Impersonate(Domain, _userName, _pass); foreach (var process in Process.GetProcessesByName(“notepad”, “RemoteMachine”)) { string processPath = pathToExe; //Is set as constant (and is correct) process.Kill(); Thread.Sleep(3000); Process.Start(processPath); } } catch (Exception ex) { lblStatus.Text = ex.ToString(); } finally { iu.Undo(); } 只是为了澄清ImpersonateUser,它让我以正确的用户权限登录到远程机器。 所以问题不在那里。 当我调试并检查过程对象时,在这种情况下我找到了记事本的正确进程ID。 所以连接工作正常。 但是当我尝试杀死进程时,我收到此错误: System.NotSupportedException: […]

获取给定进程句柄的运行进程

如果我已经知道句柄,有人可以告诉我如何使用进程类在c#中捕获正在运行的进程吗? Id而不是也不必枚举getrunning流程方法。 如果可能的话,pInvoke是可以的。

如何判断另一个进程是否为64位?

我有一个正在运行的应用程序的进程 。 我怎么知道(没有p /调用,最好是)该进程是64位?