別プロセスの実行を SW_SHOWMINNOACTIVE で行うには?


ぴこ  2009-04-21 11:20:12  No: 145860  IP: 192.*.*.*

VB2008 で別プロセスを実行する場合に SW_SHOWMINNOACTIVE で実行したいのですが、可能でしょうか?

Process.Start では WindowStyle に Normal、Hidden、Minimized、Maximized しか指定できません。

よろしくお願いします。

編集 削除
魔界の仮面弁士  2009-04-21 12:30:15  No: 145861  IP: 192.*.*.*

Win32_ProcessStartup クラスの ShowWindow プロパティに SW_SHOWMINNOACTIVE (=7) を設定し、それを Win32_Process クラスの Create メソッドに引数として渡してみてはどうでしょうか。

編集 削除
魔界の仮面弁士  2009-04-21 12:53:39  No: 145862  IP: 192.*.*.*

http://msdn.microsoft.com/en-us/library/aa389388.aspx
http://msdn.microsoft.com/en-us/library/aa394375.aspx


Using ps As New System.Management.ManagementClass("Win32_ProcessStartup"), _
      p As New System.Management.ManagementClass("Win32_Process")

    Const SW_SHOWMINNOACTIVE As Integer = 7
    ps("ShowWindow") = SW_SHOWMINNOACTIVE

    Dim args As System.Management.ManagementBaseObject = p.GetMethodParameters("Create")
    args("CommandLine") = "notepad.exe C:\file.txt"
    args("CurrentDirectory") = "C:\"
    args("ProcessStartupInformation") = ps

    Dim result As System.Management.ManagementBaseObject = p.InvokeMethod("Create", args, Nothing)

    Dim retValue As Integer = CInt(result("ReturnValue"))
    Dim pid As Integer = CInt(result("ProcessId"))
    System.Console.WriteLine("結果={0}, プロセスID={1}", retValue, pid)
End Using

編集 削除