CreateProcessを使いアプリケーションを実行させていますが、
非表示の状態で起動することができません。
どうしてでしょうか?
ちゃんと、非表示の状態で起動するように引数を与えていますが...
> ちゃんと、非表示の状態で起動するように引数を与えていますが...
アドバイスをもらいたいならば、あなたが正しいと思ってコーディングした
ソースをのせるべきなのでは?
すいません。コードです。
strCommandline = vbNullString
udtProcessAttributes.nLength = Len(udtProcessAttributes)
udtThreadAttributes.nLength = Len(udtThreadAttributes)
strCurrentDriectory = vbNullString
udtStartupInfo.cb = Len(udtStartupInfo)
udtStartupInfo.dwFlags = STARTF_USESHOWWINDOW
udtStartupInfo.wShowWindow = SW_HIDE
lngResult = CreateProcess(strEXEPath, _
strCommandline, _
udtProcessAttributes, _
udtThreadAttributes, _
False, _
0, _
ByVal vbNullString, _
strCurrentDriectory, _
udtStartupInfo, _
udtProcessInformation)
プログラムによっては、非表示で起動しないものもありますよね。
例えば、VB6でも、
Private Sub Form_Load()
Call Me.Show()
End Sub
としたフォームをメインフォームにしている場合は、非表示には
なりませんし。
まずCreateProcessを使う前に、VB標準のShell関数で、
Call Shell(strEXEPath, vbHide)
で起動させてみて試してみては。
>プログラムによっては、非表示で起動しないものもありますよね。
CreateProcessでは不可能なのでしょうか?
まず、使っているものがフォームか何かは知らないけれど、それがちゃんと非表示になるものかどうかをまず試してくれと、そんな話だと思うのですー。
コントロールがちゃんと消えて、CreateProcess自体が正しいものであれば、
例えば、CreateProcessが動かないような場所に差し込んであるとか、
CreateProcessが動いていても、他のところに表示するようなコードがあるとか、
他に考えられる原因が、色々あるから、順番に調べて見ましょー。
というだけですー。とおもう。
ツイート | ![]() |