哈哈,经过近一年的折磨,第一个问题终于基本解决了!(其实应该说是绕过去了@_@)<br>只要把 WriteBtnClick 改成如下代码即可解决第一个问题!<br>procedure TForm1.WriteBtnClick(Sender: TObject);<br>var<br> FHandle:Hwnd;<br><br> function GetConsoleWHND:HWND;<br> begin<br> if Win32Platform=VER_PLATFORM_WIN32_NT then //若操作系统为 NT,则找'ConsoleWindowClass'<br> Result:=FindWindow('ConsoleWindowClass',nil)<br> else //操作系统为 Windows,则找'tty'<br> Result:=FindWindow('tty',nil);<br> end;<br><br>begin<br> FHandle:=GetConsoleWHND; //取得控制台窗口句柄<br> SetForegroundWindow(FHandle); //强制控制台窗口为当前激活窗口,否则下面的SendMessage在这种状态下会无效<br> ShowWindow(FHandle,SW_RESTORE); //如果控制台窗口在最小化状态,则SendMessage也无效<br> SendMessage(FHandle,WM_RBUTTONDOWN,0,0); //每当要输出信息之前,先模拟鼠标右键<br> SendMessage(FHandle,WM_RBUTTONUP,0,0);<br> writeln('test message'); //OK,此问题已成功绕过<br>end;<br><br> 非常感谢各位的帮助,这个困扰我已久的问题终于解决了,我真高兴!谢谢大家!<br> 但是我的第二个问题依然如故,有人能够解决吗?