1

アプリを実行するスケジュールされたタスクがあります。notepad.exeとしましょう。タスクが「ユーザーがログインしている場合にのみ実行される」場合はメモ帳が表示されますが、タスクが「ユーザーがログインしているかどうかに関係なく実行される」場合、メモ帳は対話モードで実行されません。また、ログインしてこのモードでタスクを実行しても、タスク マネージャーで [すべて表示] を選択するまで、メモ帳ウィンドウまたはプロセスが表示されません。問題は、メモ帳にエラーがある場合です。ログイン時にそのエラーが表示されないため、エラーが何であるか、またはエラーが発生したときにメモ帳が何をしていたかを知る方法がありません。開始時にログインしているユーザーがいないため、タスクをインタラクティブ モードで実行できないようです。だから私の質問は: ユーザーがログインしたら、メモ帳をインタラクティブモードに変更する方法はありますか?

プログラムによる解決策を見ると、実行時に shell32 または user32 を使用してアプリケーションをインタラクティブ モードに変更する方法はありますか?

また、私の問題は明らかにメモ帳ではありません...単なる概念実証です。

4

1 に答える 1

0

スケジュールされたタスクについてはよくわかりませんが、サービスのように動作する場合は、これらのウィンドウにアクセスするのに苦労するでしょう。サービスでデスクトップと対話できるようにする場合、サービスが開くウィンドウを見たい場合は、彼にユーザー アカウントを与える必要があります。そのアカウントに再ログインし、新しいウィンドウが開いたときのみ。新しいウィンドウが開かれると、デスクトップに通知が表示されます(私の記憶がうまく機能する場合は、デスクトップの上部にあります)。開いているアプリケーションを表示するには、クリックする必要があります。

スケジュールされたタスクのアプリケーションを変更できる場合は、非 GUI にして、イベント ビューアーまたはログ ファイルにエラーを報告することをお勧めします。スケジュールされたタスクのアプリケーションを変更できない場合は、それをサービスとしてラップしてみてください。そうすれば、新しいウィンドウが開いたときに通知を受け取ることができます。

于 2013-04-12T19:35:36.743 に答える