使process.start从WindowStyle开始工作

时间:2019-01-09 23:50:49

标签: .net vb.net pinvoke

在vb.net中,我试图找到一种可靠的方式来在隐藏,最小化,正常或最大化的窗口(由用户提前确定)中启动新过程。

下面的代码,正确设置了MyWindowProcessingStyle的值,有时可能会起作用,但其他情况下不会起作用:

     Dim MyWindowsProcessingStyle As ProcessWindowStyle = ProcessWindowStyle.Maximized

    ' the above set elsewhere to values of minimized, maximized, hidden, and normal

    Dim MyProcess as new Process
    Dim MyProcessStartInfo As New ProcessStartInfo

    With MyProcessStartInfo
         .FileName = Program
         .Verb = "open"
         .CreateNoWindow = True               
         .WindowStyle = MyWindowProcessingStyle
         .UseShellExecute = True
    End With

    myProcess.Start(MyProcessStartInfo)

例如,如果我用它来启动批处理文件(.bat),则它可以100%可靠地工作。

但是,如果我用它来启动窗口的计算器,那么它根本就无法工作。它只是以与上次运行相同的方式打开窗口的计算器。

出于与我的应用程序工作方式相关的原因,我需要与MyProcessStartInfo的其他部分保持联系。因此,this observation对我不利。

我试图在应用程序启动后向其发送击键,例如(WIN)(DownArrrow)以使事实发生后的应用程序最小化-尽管这在许多情况下是有问题的,但在另一些情况下却存在问题。 / p>

我也曾尝试获取启动后的进程ID或应用程序的句柄,希望此后我可以使用各种Pinvolke方法来获得所需的信息-但可悲的是,我失败了

任何帮助将不胜感激。

0 个答案:

没有答案