4

この質問は以前に尋ねられましたが、決定的な答えはありません。

特定の条件下でビープ音を生成する必要がある Windows サービスを Delphi で作成しました。これは XP では問題なく動作しますが、Windows 7 または 2008 では失敗します。

ノート:

  1. PCスピーカーを使用して、サービスの代わりにコンソールプログラムを作成すると、ビープ音が機能します。
  2. 「サービスがデスクトップと対話できるようにする」を有効にしたり、サービスに管理者権限を割り当てたりしても、ビープ音はサービスで機能しません。

私の質問: サービスで動作するようにビープ API を呼び出す方法はありますか? ありがとう。

4

2 に答える 2

1

Vista以降ではこれを行うことはできません。サービスは別のセッションで実行されるため、スピーカーにアクセスできません。

于 2011-05-12T16:57:34.867 に答える
1

更新: 誰かがここで方法を見つけました。これにはIOCTLが含まれ、ドライバーとサービスで使用できます。

元の答え:

ユーザーと対話するために私が知っている唯一の方法は、自動実行するためにHKEY_LOCAL_MACHINE \ CurrentUser\Runに追加される小さなユーザーエージェントプロセスとサービスを通信させることです。

これは、vistaおよびwin7の通常のパターンであり、サービスから直接ユーザーとの対話はできません。

  1. MyLittleService.exeはユーザーにアクセスできません。ただし、トレイアイコンユーティリティを使用して名前付きパイプを介して通信できます。

  2. MyLittleTrayIcon.exeはサービスと通信し、メッセージボックスでユーザーに信号を送り、どの方法でもビープ音を鳴らすように指示することもできます(Windowsの効果音は、すべてのPCに存在することが保証されていないPCスピーカーにアクセスするよりも優れている可能性があります) )など、サービスを制御するために使用することもできます(再起動、構成の再読み込みなど)。

于 2011-05-14T04:52:14.253 に答える