标签: process

异步进程启动并等待它完成

我是.net中的线程模型的新手.你会用什么来:

  1. 启动一个处理文件的进程(process.StartInfo.FileName = fileName;)
  2. 等待用户关闭进程或在一段时间后放弃该线程
  3. 如果用户关闭了该进程,请删除该文件

启动进程并等待应该在与主线程不同的线程上完成,因为此操作不应该影响应用程序.

例:

我的应用程序生成一个HTML报告.用户可以右键单击某处并显示"查看报告" - 现在我在临时文件中检索报告内容并启动处理html文件的进程,即默认浏览器.问题是我无法清理,即删除临时文件.

.net c# multithreading process

36
推荐指数
3
解决办法
7万
查看次数

在C#中访问Process.MainModule.FileName时如何避免Win32异常?

我开始了一个新项目,列出了所有正在运行的进程的完整路径.当访问某些进程时,程序崩溃并抛出Win32Exception.描述说明列出流程模块时发生错误.最初我认为这个问题可能会发生,因为我在64位平台上运行它,所以我重新编译它为CPU类型x86AnyCPU.不过,我遇到了同样的错误.

Process p = Process.GetProcessById(2011);
string s = proc_by_id.MainModule.FileName;
Run Code Online (Sandbox Code Playgroud)

错误发生在第2行.空白字段显示发生错误的进程: 截图

有没有办法绕过这个错误信息?

c# windows exception process

36
推荐指数
3
解决办法
3万
查看次数

如果进程仍在运行,如何使用Python检入Linux?

我发现的唯一方法是:

import sys
import os

try:
        os.kill(int(sys.argv[1]), 0)
        print "Running"
except:
        print "Not running"
Run Code Online (Sandbox Code Playgroud)

(来源)
但这可靠吗?它适用于每个流程和每个分发吗?

python unix linux process

35
推荐指数
7
解决办法
8万
查看次数

单个.NET进程是否有内存限制

我们目前正在考虑构建一个缓存系统来保存从SQL数据库中提取的数据,并使其可用于其他几个应用程序(网站,Web服务等).我们想象缓存作为Windows服务运行,基本上由一个保存缓存条目的智能字典组成.我的问题是,应用程序的工作集是否有限制(它将在Windows Server 2003下运行)?或者是物理内存量的限制?

.net memory process limit .net-3.5

35
推荐指数
3
解决办法
6万
查看次数

使用Process.Start()以Windows服务中的不同用户身份启动进程

我想定期在Windows服务的指定用户帐户下运行任意.NET exe.

到目前为止,我已经让我的Windows服务运行逻辑来决定目标进程是什么,以及何时运行它.目标进程以下列方式启动:

  1. Windows服务使用"管理员"凭据启动.
  2. 到时候,执行一个中间的.NET进程,其参数详细说明应该启动哪个进程(文件名,用户名,域名,密码).
  3. 此过程创建一个新的System.Diagnostics.Process,将ProcessStartInfo对象与传递给它的参数相关联,然后在进程对象上调用Start().

第一次出现这种情况,目标进程执行罚款,然后正常关闭.然而,每次后续时间,一旦目标进程启动,它就会抛出错误"应用程序无法正常运行(0xc0000142)".重新启动Windows服务将允许进程再次成功运行(第一次执行).

当然,目标是每次都成功执行目标进程.

关于上面的步骤2:要以不同的用户身份运行进程.NET调用win32函数CreateProcessWithLogonW.此函数需要一个窗口句柄来记录指定的用户.由于Windows服务未在交互模式下运行,因此它没有窗口句柄.这个中间过程解决了这个问题,因为它有一个可以传递给目标进程的窗口句柄.

请不要使用psexec或windows任务规划器的建议.我已经接受了我的生活,包括以上述方式解决问题.

.net c# service windows-services process

35
推荐指数
1
解决办法
4万
查看次数

winapi:CreateProcess但隐藏进程的窗口?

我正在使用CreateProcess创建一个cmd.exe进程,该进程传递一个它执行并退出的参数,这会使命令提示符在屏幕上闪烁.

我试图通过将STARTUPINFO struct wShowWindow设置为SW_HIDE来避免这种情况,但此参数似乎影响调用窗口,而不是执行进程的窗口.

无论如何,您是否可以使用createprocess来启动隐藏在视图中的程序?

获取环境变量的正确winapi标准方法是什么?

c windows winapi process

35
推荐指数
3
解决办法
5万
查看次数

正确的方式(在.NET中)将焦点切换到另一个应用程序

这是我到目前为止:

    Dim bProcess = Process.GetProcessesByName("By").FirstOrDefault
    If bProcess IsNot Nothing Then
        SwitchToThisWindow(bProcess.MainWindowHandle, True)
    Else
        Process.Start("C:\Program Files\B\B.exe")
    End If
Run Code Online (Sandbox Code Playgroud)

它有两个问题.

  1. 有些人告诉我,SwitchToThisWindow已被删除.
  2. 如果应用程序B被最小化,则从用户的角度来看,此功能无声地失败.

那么这样做的正确方法是什么?

.net pinvoke process

35
推荐指数
4
解决办法
6万
查看次数

如何在bash中的tab delim文件中获取第二和第三列?

我想使用bash来处理制表符分隔文件.我只需要第二列,第三列是新文件.

bash tabs process delimited

35
推荐指数
2
解决办法
4万
查看次数

NODEJS流程信息

如何PID在Node.JS程序中获得具有(进程ID)的进程名称,平台包括Mac,Windows,Linux.

它有一些节点模块吗?

process node.js

35
推荐指数
3
解决办法
4万
查看次数

如何在C#中使用[DllImport("")]?

我发现了很多关于它的问题,但是没有人解释我如何使用它.

我有这个:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using Microsoft.FSharp.Linq.RuntimeHelpers;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.IO;

public class WindowHandling
{
    public void ActivateTargetApplication(string processName, List<string> barcodesList)
    {
        [DllImport("User32.dll")]
        public static extern int SetForegroundWindow(IntPtr point);
        Process p = Process.Start("notepad++.exe");
        p.WaitForInputIdle();
        IntPtr h = p.MainWindowHandle;
        SetForegroundWindow(h);
        SendKeys.SendWait("k");
        IntPtr processFoundWindow = p.MainWindowHandle;
    }
}
Run Code Online (Sandbox Code Playgroud)

有人可以帮助我理解为什么它会在DllImport线路和线路上给我一个错误public static吗?

有没有人有想法,我该怎么办?谢谢.

c# process dllimport

35
推荐指数
1
解决办法
17万
查看次数