【问题标题】:Get the process id of application by clicking on the icon in the taskbar通过单击任务栏中的图标获取应用程序的进程ID
【发布时间】:2019-08-30 12:19:52
【问题描述】:

我想通过单击任务栏中的图标来获取进程 ID 以获取唯一标识符,因为可能会出现多次打开此应用程序的情况。

有什么方法吗?这给了我我所关注的应用程序的进程 ID?

我想从一个应用程序中获取信息,但在此之前,我需要知道他想要跟踪哪个应用程序,因为它可能会发生,该应用程序被多次打开并且有多个应用程序被打开不同的版本,但名称相同。

我试图在互联网上找到一些现有的例子,但似乎直到现在还没有人遇到过这个问题。

下面的代码只是为我提供了我自己的应用程序的 ID,但相反,它应该“等待”直到我改变了我对在任务栏中单击的应用程序的关注。

    private void TextBox1_Click(object sender, EventArgs e)
    {

        //wait until focus is set on new application
        {
           Process prcsToTrack =  Process.GetCurrentProcess();
           int processID = prcsToTrack.Id;
           TextBox1.Text = processID.ToString();
        }
    }

也许你们中的某个人已经掌握了这个问题或一些想法,可以向我展示一些结果。

【问题讨论】:

  • SetWinEventHook => (idProcess = 0, idThread = 0, Min/Max = EVENT_SYSTEM_CAPTURESTART, flags = WINEVENT_OUTOFCONTEXT | WINEVENT_SKIPOWNPROCESS | WINEVENT_SKIPOWNTHREAD)。或 UI 自动化。
  • 这是XY Problem。请询问问题而不是您提出的解决方案。

标签: c# .net windows pid visual-studio-2019


【解决方案1】:

尝试您要获取进程 ID 的表单/窗口的 this.Activated 事件。

类似的东西

 private void MainWindow_Activated(object sender, EventArgs e)
 {
       var pid = Process.GetCurrentProcess().Id;
       // do something
 }

【讨论】:

  • 问题是,我不知道进程ID将从哪个窗口获取,因为正如我所说,用户应该从任务栏中的每个应用程序中进行选择,我想知道他选择了哪个应用程序,这样我以后可以得到有关它的信息。用户必须选择一个“Dynamcis NAV 开发环境”应用程序,但通常会打开 2-3 个相同类型的应用程序以及一些其他较旧或较新版本的应用程序。
猜你喜欢
  • 2012-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-28
  • 1970-01-01
  • 1970-01-01
  • 2011-09-29
  • 1970-01-01
相关资源
最近更新 更多