如题,已经得到窗口的hwnd,用posemessage发,不要keyevent的那种,知道的说下。
在网上查资料说发不了,我想不会吧,给个代码,要delphi的

解决方案 »

  1.   

      CTRL_A=$4041;  //Ctrl-a
      CTRL_B=$4042;
      CTRL_C=$4043;
      CTRL_D=$4044;
      CTRL_E=$4045;
      CTRL_F=$4046;
      CTRL_G=$4047;
      CTRL_H=$4048;
      CTRL_I=$4049;
      CTRL_J=$404A;
      CTRL_K=$404B;
      CTRL_L=$404C;
      CTRL_M=$404D;
      CTRL_N=$404E;
      CTRL_O=$404F;
      CTRL_P=$4050;
      CTRL_Q=$4051;
      CTRL_R=$4052;
      CTRL_S=$4053;
      CTRL_T=$4054;
      CTRL_U=$4055;
      CTRL_V=$4056;
      CTRL_W=$4057;
      CTRL_X=$4058;
      CTRL_Y=$4059;
      CTRL_Z=$405A;  //Ctrl-z
      

  2.   

    mastersky能不能说清楚一点点,给代码最好.以你的回复是不是这样
    postmessage(hwnd,wm_keydown,$4046,0) 这样吗???
      

  3.   

    如果对memo的消息进行跟踪,发现在按下ctrl-c之类的组合键时,
    memo得到的消息中,第2个参数不是0,既postmessage(hwnd,wm_keydown,$4046,0)的最后这个不是0,
    最后这个参数到底如何设置
      

  4.   

    如果这个窗体上的Ctrl+F键对应的有一个菜单项,你可以向这个菜单发单击消息。如果你发组合键好像是不可能,以前有人提过这个问题都没法解决。
      

  5.   

    当前窗体里改写系统消息传递函数 Winproc
    procedure WndProc(var Message: TMessage); override;//改写消息传递函数//改写消息传递函数
    procedure TFrm_Main.WndProc(var Message: TMessage);
    begin
      inherited;
      case Message.Msg of
       $4046://当前窗体捕获到的键盘值
       begin
         postmessage(hwnd,2008,0,0);//hwnd是目标窗体的handle值  
       end;
      end;
    end;
    //目标窗体 //改写消息传递函数
    procedure TFrm_Main.WndProc(var Message: TMessage);
    begin
      inherited;
      case Message.Msg of
      2008://当前窗体捕获到的消息ID值
      begin
         // 目标窗体已经捕获到消息了  在这里进行处理    
      end;
    end;
    也可以用dispach()函数向目标窗体发送消息。。
      

  6.   

    向目标窗体发送 Ctrl+F 就 上面的 2008 换成Ctrl+F $4046 就可以了
      

  7.   

    不成功,请指教
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Memo1: TMemo;
        Button1: TButton;
        procedure   WndProc(var   Message:   TMessage);   override;
        procedure Button1Click(Sender: TObject);//改写消息传递函数
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}
    procedure   tform1.WndProc(var   Message:   TMessage);
    begin
        inherited; 
        case   Message.Msg   of 
          $4056://当前窗体捕获到的键盘值
          begin
              postmessage(memo1.Handle,2008,0,0);//hwnd是目标窗体的handle值
          end; 
        end; 
    end; procedure TForm1.Button1Click(Sender: TObject);
    begin
    postmessage(memo1.Handle,$4056,0,0);
    end;end.