我正在尝试编写一个程序,它将管理几个控制台窗口,我的程序将能够CreateProcess()
用于新的控制台窗口,获得一个窗口主句柄以及用于调整大小,关闭,隐藏的句柄的用法改变标题等但我找不到一个可靠的方法来获得主窗口句柄。目的是有一个标签栏,并通过单击选项卡在创建的控制台窗口之间切换。
我尝试过几种方法:
1)使用windows "cmd.exe"
能力设置窗口标题,然后FindWindow("tmp_title"...)
这有一个问题,我不需要cmd.exe
运行,而且我需要processID
作为目标程序而不是cmd.exe
。也许我应该使用这种方式,但检查儿童子过程?
2)EnumWindows()
然后CreateProcess()
然后等待40毫秒,然后再EnumWindows()
再找到新窗口。
这是不可靠的!有时出于奇怪的原因我有两个新窗户。
3)使用GetWindowThreadProcessId()
+ EnumWindows()
。这在XP上运行得最好,但是在win7上找到的窗口似乎是错误的,它是GetWindowText()
返回"DefaultIME"
并隐藏/显示此窗口什么都不做。所以这显然是错误的。
所以任何想法如何可靠地进行,如果可能的话跨平台(跨窗口,XP,Vista,7)