假如已知一个窗体的Handle值,并且那个窗体中定义了一系列热键
如:Ctrl + R, Ctrl + Enter, Ctrl + C, ……等等,表示可以调用
某某功能。
现在我想知道的是,如何向该窗口发送这些热键,并准确调用那个
窗体中所定义好的功能呢,希望能带些源代码赋上,谢谢:)

解决方案 »

  1.   

    ...
    uses Unit2;
    ...procedure TForm1.Button1Click(Sender: TObject);
    var
      msg: TMessage;
    begin
      //Ctrl + R
      msg.Msg := WM_HOTKEY;
      msg.LParamLo := MOD_CONTROL;
      msg.LParamHi := 82;
      sendmessage(Form2.Handle, WM_HOTKEY,IDHOT_SNAPDESKTOP, msg.LParam);
    end;
    ...
    unit Unit2;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;const
      strDrawLine = 'GloalDrawLine';type
      TForm2 = class(TForm)
        procedure FormCreate(Sender: TObject);  private
        { Private declarations }
        IntDrawLine: Integer;
        procedure ManageHotKey(var message: TMessage); message WM_HOTKEY;
      public
        { Public declarations }
      end;var
      Form2: TForm2;implementation{$R *.dfm}procedure TForm2.FormCreate(Sender: TObject);
    begin
      IntDrawLine := GlobalAddAtom(strDrawLine);
      if IntDrawLine > 0 then
        RegisterHotKey(handle,IntDrawLine,MOD_CONTROL,82);end;procedure TForm2.ManageHotKey(var message: TMessage);
    begin
      //Ctrl + R
      if (message.LParamLo = MOD_CONTROL) and (message.LParamHi = 82) then
      Caption := 'Macau is a ncie city'end;end.