<h2>OpenProcess函数:</h2>
<p>如果函数成功,则返回值是指定的过程和它可以用于任何需要进程句柄的函数中。在</p>
<h2>SetForegroundWindow函数:</h2>
<p>它的参数是一个窗口的句柄,应该被激活并带到前台。在</p>
<p>所以你需要这样的翻译:</p>
<pre><code>HWND h = ::GetTopWindow(0 );
while ( h )
{
DWORD pid;
DWORD dwTheardId = ::GetWindowThreadProcessId( h,&pid);
if ( pid == /*your process id*/ )
{
// here h is the handle to the window
break;
}
h = ::GetNextWindow( h , GW_HWNDNEXT);
}
</code></pre>
<p>python版本:</p>
^{pr2}$
<p>注意:</p>
<blockquote>
<p>But note that this can easily fail, because when you first launch the process, it probably doesn't have a window until a few milliseconds later. Without some means of synchronizing between the parent and child, there's really no way around this. (You can hack it by, say, sleeping for a second, but that has the same problem as any attempt to sleep instead of synchronizing—most of the time, it'll be way too long, reducing the responsiveness/performance of your code for no reason, and occasionally, when the computer is busy, it'll be too short and fail.)</p>
</blockquote>
<p>真正解决这个问题的唯一方法是使用pywin32来创建进程,而不是使用标准的Python代码。然后你就掌握了这个过程。这意味着您可以等待子进程启动其窗口循环,然后只枚举该进程的窗口。在</p>