2017-01-23 21 views
0

具体的な理由から、Windowsサーバー(LiquidWebがホストする2012 RC2)でWindowsフォームアプリケーションを実行する必要があります。フォームアプリケーション自体は、特定のファイルシステムの変更時にコンソールアプリケーションから生成されます。アクティブセッションのないWindowsサーバーにウィンドウをフォーカス

このアプリの目的は、Webブラウザーコントロールを使用してタスクを自動化することです。さまざまな間隔で、私たちが必要とするタスクを完了するために、フォームアプリケーションにキー入力を送信します(ファイルをアップロードおよびダウンロードするため)。これを機能させるには、アプリにフォーカスが必要です。私はthis threadのコードを使って、問題なくアプリケーションに焦点を当てています。

(リモートデスクトップ経由)にログインしている限り、これはすべて正常に動作します。しかし、(ユーザーをログアウトせずに)リモートデスクトップセッションを閉じると、フォームアプリケーションがフォーカスを受け取る方法がないようです。

スポーンがうまくいくと、フォームアプリケーションが開始してブラウザセッションを計画どおりに開始しますが、はフォーカスを受け取りません。リモートデスクトップを使用して再度ログインすると、コンソールアプリケーションの背後にフォームアプリケーションが表示されます。

私は、フォームアプリケーションとそれを生成するコンソールアプリケーションの両方から直接考えることができるSetForegroundWindow/ShowWindowの任意の組み合わせを試しました。また、(私は "ビジュアル"セッションを持っている限り)同じ結果でフォームアプリケーションを起動した後、コンソールアプリケーションからAutoHotKeyスクリプト(WinActivateコマンドを含む)を実行しようとしました。

アイデアは何ですか?

答えて

0

これは、リモートデスクトップセッションを離れるときにリモートコンピュータがロックされ、問題のアプリケーションがフォーカスを制御できないという事実に関連しているようです。

解決策は、thisの記事に記載されているように、tsconコマンドを使用してログアウトすることです。基本的には、以下の内容のバットファイルを実行してログオフしてください:

for /f "skip=1 tokens=3" %%s in ('query user %USERNAME%') do (
    %windir%\System32\tscon.exe %%s /dest:console 
) 
関連する問題