我正在为Linux和Windows编写一个图形git前端
(MSEgit)基于MSEide+MSEgui。 MSEgit有一个内部控制台窗口,通过管道与git通信。在Linux上,它使用PTY,因此SSH要求在PTY上输入密钥解锁密码
在Windows上,我编写了一个小密码输入应用程序,并相应地设置了SSH_ASKPASS环境变量
SSH调用密码应用程序如果git以CreateProcess()启动dwCreationFlags设置DETACHED_PROCESS但密码输入窗口不会聚焦,其任务栏图标会闪烁。
如果调用FreeConsole()以确保没有连接到MSEgit的控制台并且没有使用DETACHED_PROCESS而是使用CREATE_NO_WINDOW而启动git,则SSH不会运行密码应用程序。
我假设应该调用Windows等效的POSIX setsid()
如何在不使用DETACHED_PROCESS标志的情况下强制SSH使用SSH_ASKPASS?
如果无法做到这一点,我怎样才能确保密码输入窗口被聚焦?
答案 0 :(得分:0)
在Windows上,除非得到权限,否则不允许子进程将焦点从父进程中移开。家长应致电AllowSetForegroundWindow以提供该许可。然后,子进程可以成为前台并适当地设置其焦点。