QT4.8
您好, 我使用QProcess架构连接到QT-Assistent。
例如(来自QT doc)
QProcess *process = new QProcess;
QStringList args;
args << QLatin1String("-collectionFile")
<< QLatin1String("mycollection.qhc")
<< QLatin1String("-enableRemoteControl");
process->start(QLatin1String("assistant"), args);
if (!process->waitForStarted())
return;
我正在使用建议的文档将命令传递给它:
QByteArray ba;
ba.append("setSource qthelp://com.mycompany.1_0_0/doc/index.html\n");
process->write(ba);
我的问题:
如果用户最小化它,如何最大化帮助窗口? 由于帮助是以不同的进程运行的,所以没有找到一种方法来启动窗口。
TIA。
答案 0 :(得分:1)
如果启动另一个进程,则需要使用Windows的操作系统特定管理工具。
您可以在创建流程时获取窗口ID,但管理其窗口是特定于平台的。
Qt并没有让其应用程序范围跨平台进行完全shell访问,但以下是在Windows中执行此操作的方法:
http://qt-project.org/doc/qt-5/qprocess.html#processId
http://forums.codeguru.com/showthread.php?353149-How-to-Get-windows-Handle-using-Process-Id
https://stackoverflow.com/a/10258861/999943
http://msdn.microsoft.com/en-us/library/windows/desktop/ms633548(v=vs.85).aspx
#include <windows.h>
//...
HWND h = ::GetTopWindow(0 );
{
DWORD pid;
DWORD dwTheardId = ::GetWindowThreadProcessId( h,&pid);
if ( pid == process->processId() )
{
// here h is the handle to the window
break;
}
h = ::GetNextWindow( h , GW_HWNDNEXT);
}
::SetForegroundWindow(h);
::ShowWindow(h, SW_SHOWMAXIMIZED);
希望有所帮助。