在“开始”-“运行”中键入cmd,回车,出现一个DOS窗口,标题为:“c:\WINDOWS\SYSTEM32\cmd.EXE”,利用DELPHI中的Findwindow()和Sendmessage()函数对这个DOS窗口能操控自如。但如果在“开始”-“运行”中键入DEBUG,回车,出现一个DOS窗口,标题为:“c:\WINDOWS\SYSTEM32\DEBUG.EXE”,此时利用同样的方法,想用对DOS窗口进行操控,却没有反应,请问是何原因?程序如下:
procedure TForm1.Button1Click(Sender: TObject);
var
        wnd:HWND;
begin
        wnd:=Findwindow(nil,'c:\WINDOWS\SYSTEM32\DEBUG.EXE');
        if wnd>0   then
           SendMessage(wnd,WM_KEYDOWN,81,0);
end;

解决方案 »

  1.   

    大小写正确吗?把 wnd>0 改成 wnd<>0 试试
      

  2.   

    大小写以及wnd>0 没什么问题,因为同样的写法对c:\WINDOWS\SYSTEM32\cmd.EXE窗口的操控是不存在问题的。
      

  3.   

    控制台窗口的类名是ConsoleWindowClass,如下,仅能做到给窗口改变标题。const
      PATH : PChar = 'C:\WINDOWS\system32\Debug.exe';
    var
      H, H2 : HWND;
    begin
      H := findwindow(nil,PATH);
      if H <> 0 then
         SendMessage(H,WM_SetText,0,integer(PChar('New Title')));
    end;