MSEide+MSEguiに基づいて、Linux および Windows
(MSEgit)用のグラフィカル git フロントエンドを作成しています。MSEgit には、パイプによって git と通信する内部コンソール ウィンドウがあります。Linux では PTY を使用するため、SSH は PTY で鍵のロック解除パスワードを要求します。
Windows では、小さなパスワード入力アプリケーションを作成し、それに応じて SSH_ASKPASS 環境変数を設定しました。
CreateProcess() dwCreationFlags DETACHED_PROCESS が設定された状態で git が開始された場合、SSH はパスワード アプリケーションを呼び出しますが、パスワード入力ウィンドウはフォーカスされず、代わりにタスクバー アイコンが点滅します。
MSEgit にコンソールが接続されていないことを確認するために FreeConsole() が呼び出され、DETACHED_PROCESS ではなく CREATE_NO_WINDOW を使用せずに git が開始された場合、SSH はパスワード アプリケーションを実行しません。
POSIX setsid() に相当する Windows を呼び出す必要があると思います。
DETACHED_PROCESS フラグなしで SSH に SSH_ASKPASS を強制的に使用させるにはどうすればよいですか?
これが不可能な場合、パスワード入力ウィンドウがフォーカスされていることを確認するにはどうすればよいですか?
3953 次
1 に答える
0
Windows では、許可を得ない限り、子プロセスは親からフォーカスを奪うことはできません。親は、AllowSetForegroundWindowを呼び出して、そのアクセス許可を提供する必要があります。その後、子プロセスはフォアグラウンドになり、適切にフォーカスを設定できます。
于 2012-06-09T12:37:34.320 に答える