首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将powershell命令传递给具有特殊PID的特定进程。

将powershell命令传递给具有特殊PID的特定进程。
EN

Stack Overflow用户
提问于 2016-02-20 21:35:08
回答 1查看 113关注 0票数 0

我试图写一个表单,在那里我有一个选项,打开一个具有不同会话的exe,每个会话有两个核心。我需要这样做的项目叫做Revit 2015。我已经想出了一种将其包含在我的应用程序Revit 2015中的方法:

cmd.exe /c启动"Revit“/affinity XX "C:\Program \Autodesk\Revit 2015\Revit.exe

在我的视觉项目中,它应该是这样的:

代码语言:javascript
复制
Private Sub GPG4B1_Click(sender As Object, e As EventArgs) Handles GPG4B1.Click
    If Not Me.RadioButton1.Checked And Not Me.RadioButton2.Checked Then
        MessageBox.Show("Please select a Revit version")
    Else
        If IsNothing(Me.ComboBoxGP.SelectedItem) Then
            MessageBox.Show("Please select the Cores")
        Else
            If Me.RadioButton1.Checked And Me.ComboBoxGP.Text = "1 Core" Then
                Shell("cmd.exe /c start ""Revit"" /affinity 00000001 ""C:\Program Files\Autodesk\Revit 2015\Revit.exe""")
            End If

            If Me.RadioButton1.Checked And Me.ComboBoxGP.Text = "2 Cores" Then
                Shell("cmd.exe /c start ""Revit"" /affinity 9 ""C:\Program Files\Autodesk\Revit 2015\Revit.exe""")
            End If

            If Me.RadioButton1.Checked And Me.ComboBoxGP.Text = "3 Cores" Then
                Shell("cmd.exe /c start ""Revit"" /affinity 15 ""C:\Program Files\Autodesk\Revit 2015\Revit.exe""")
            End If

因此,用户会从我的表单中选择带有单选按钮工具的Revit版本,并从组合框中选择他想要使用的核心集。出于某种原因,这并没有削减它与Revit 2016!使用相同的命令行只会对Revit会话的亲和力没有任何作用,我正在尝试传递该命令行

但是互联网是慷慨的,所以我为2016年版本找到了一个工作,就是在Revit启动后传递一个PowerShell命令行,所以我现在想知道的是,如何将这个PowerShell命令传递给某个特定的会话,而不影响其他会话--这就是PowerShell行:

$Process = Get-Process;$Process.ProcessorAffinity=255

因此,有了这个PowerShell命令行,我就可以选择我可以在Revit2016中使用的核心。下一步是将它合并到我的表单中,但正如您已经知道的,如果我在任何时候传递它,这将影响到其他"Revit.exe“会话,并将它们带到我在命令行中指定的核心。因此,我不得不想出一种通过PID来区分Revit进程的方法,vb.net通过使用以下方法使它变得非常简单:

myProcess.Id

有了这个代码:

代码语言:javascript
复制
   myProcess.StartInfo.FileName = "C:\Program Files\Autodesk\Revit 2016\Revit.exe"
    myProcess.Start()
    TextBox1.Text = myProcess.Id

我能够完成,打开Revit,并捕获它的PID。我的问题是,如何使用特定会话的进程ID,并将PowerShell命令传递给我刚刚开始的特定ID的进程?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2016-02-21 07:05:56

启动进程所需的一切都包含System.Diagnostics命名空间。您可以做的一件事是输入这个命令行,将应用程序启动到Process.Start(字符串,字符串)方法,后者返回一个process对象。其中,如果用户有权限,也可以设置关联(参见Process类--这是PowerShell代码所做的)。

MSDN代码示例应该足够了,但是如果没有,请随时联系!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35529342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档