在已知一个控制台运行程序的进程PID的情况下。
我希望能向这个进程发送按键消息以及获取其在控制台的输出。
出于对原有控制台输出缓存大小的考虑,还要预先把缓冲设置大一点,以免冲掉部分内容。
(重点在于获取控制台输出,按键一般还是好办的。)实际在xp下,我已经利用Freeconsole和attachconsole实现了以上的要求。
但Attachconsole这个函数在win2000下没有。我知道用EnumWindows可以获得窗口句柄,再就不知道怎么搞了。
好像获得标准输出流的时候,都是针对程序自己的控制台来的。希望哪位兄弟能给出完整方案。
我希望能向这个进程发送按键消息以及获取其在控制台的输出。
出于对原有控制台输出缓存大小的考虑,还要预先把缓冲设置大一点,以免冲掉部分内容。
(重点在于获取控制台输出,按键一般还是好办的。)实际在xp下,我已经利用Freeconsole和attachconsole实现了以上的要求。
但Attachconsole这个函数在win2000下没有。我知道用EnumWindows可以获得窗口句柄,再就不知道怎么搞了。
好像获得标准输出流的时候,都是针对程序自己的控制台来的。希望哪位兄弟能给出完整方案。
http://blog.csdn.net/yangjiudan/archive/2006/04/29/697517.aspx
if( !hKernel32 )
{
return false;
}
typedef BOOL ( WINAPI *PATTACHCONSOLE)(DWORD);
PATTACHCONSOLE pAttachConsole = (PATTACHCONSOLE) GetProcAddress( hKernel32,"AttachConsole" );
if( !pAttachConsole )
{
return false;
}
BOOL bRet = pAttachConsole( dwProcessId );
怎么调用 AttachConsole我知道。
2000环境我没法自己控制是不是SP4的。
Ctrl+Break可以打印所有线程信息。