none
CreateProcess RRS feed

  • 質問

  • フォーラムが違うような気もするのですが適当な所が判らなくて...

    今までWindowsアプリケーションから別のコンソールプログラムをCreateProcessで起動していました.

    起動していた部分をWindowsサービスに持っていった所,コンソールプログラムの起動は出来るのですが表示されなくなってしまいました.

    コンソールプログラムの中で行っているCreateWindowもエラーを返して来ないのですが表示はされません.

    そもそも起動すると表示されていたコマンドプロンプトの様なコンソール自体表示されません.

    CreateProcessのスタートアップ情報にSTARTF_USESHOWWINDOWとか入れてみたのですが変化有りませんでした.

    何か基本的に間違っているような気がしてきたのですが何がまずいと考えられるでしょうか?

     

    そうそうWindowsサービスは.NET Frameworkで作っています.

    そこから作ったアンマネージの関数からCreateProcessを呼び出しています.

     

    2007年3月8日 3:51

回答

  • Windows サービスアプリケーションは、ログオンユーザとは異なるユーザアカウントで実行されます。
    そのため、サービスアプリケーションでウィンドウの作成などを行い、成功してもログオンユーザのデスクトップには表示されません。(メッセージボックスなどを表示してしまうと応答できなくなってしまいます)

    通常、Windows サービスアプリケーションでは、ユーザとの対話を行うためのウィンドウの生成などは行いません。
    サービスと対話するログオンユーザアカウントで動作するアプリケーションなどを作成する必要があります。

    詳しくは以下を参照すると良いかと思います。

    Windows サービス アプリケーションの概要
    http://msdn2.microsoft.com/ja-jp/library/d56de412(VS.80).aspx

    2007年3月8日 5:12

すべての返信

  • Windows サービスアプリケーションは、ログオンユーザとは異なるユーザアカウントで実行されます。
    そのため、サービスアプリケーションでウィンドウの作成などを行い、成功してもログオンユーザのデスクトップには表示されません。(メッセージボックスなどを表示してしまうと応答できなくなってしまいます)

    通常、Windows サービスアプリケーションでは、ユーザとの対話を行うためのウィンドウの生成などは行いません。
    サービスと対話するログオンユーザアカウントで動作するアプリケーションなどを作成する必要があります。

    詳しくは以下を参照すると良いかと思います。

    Windows サービス アプリケーションの概要
    http://msdn2.microsoft.com/ja-jp/library/d56de412(VS.80).aspx

    2007年3月8日 5:12
  • 動作させているOSは、何でしょうか?

    あと、"そもそも起動すると表示されていた"と書いている
    ということは、以前は大丈夫だったということでしょうか?

    2007年3月8日 8:55
  • あ,すいません.

    chack - Akira Inoue さんの書かれた様にサービスでは普通にウィンドウを開けないって事で納得しました.

    起動しっぱなしで外部からのアクセスを待つプログラムだったのでリモートデバッガみたいにサービスにしたほうがいいのかな?と思いまして.

     

    2007年3月20日 5:07