下面这段代码如果是发送到计算器就可以,可是发送到别的程序就不行,为什么啊???(窗口已正确找到,发送WM_CLOSE消息的可以成功关闭该应用程序,可是发送回车就不起作用。)procedure TfrmTestProgram.Button28Click(Sender: TObject);
var
  appWnd : HWnd;
begin
  appWnd := FindWindow(nil, PCHAR('SnagIt'));
  if appWnd <> 0 then
  begin
    setForegroundWindow(appWnd);
    keybd_event(vk_return, mapVirtualKey(vk_return,0), 0, 0);
    keybd_event(vk_return, mapVirtualKey(vk_return,0), 1, 0);
    //SendMessage(appWnd,WM_KEYDOWN,VK_RETURN,0);
  end;end;

解决方案 »

  1.   

    可以做一个测试,接收消息的窗口代码如下:
    焦点在哪个按钮上,Label1的标题就会变成哪个按钮的标题,但是如果其中一个按钮的Default属性被设置成True,则只有这一个按钮能接收消息unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        Label1: TLabel;
        Button2: TButton;
        Button3: TButton;
        Button4: TButton;
        procedure FormCreate(Sender: TObject);
      private
        procedure ButtonClick(Sender: TObject);
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.ButtonClick(Sender: TObject);
    begin
    label1.Caption:= TButton(Sender).Caption;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
    Button1.OnClick := ButtonClick;
    Button2.OnClick := ButtonClick;
    Button3.OnClick := ButtonClick;
    Button4.OnClick := ButtonClick;
    end;end.