怎样把 ALT+s 这个组合键传到指定的程序中呢?我的源代码:
procedure TForm1.Button1Click(Sender: TObject);
  var
  hwndNotepad : THandle;
  hwndEdit    : THandle;
  s : string;
begin
  hwndNotepad := FindWindow('GLBSWizard',nil);  if hwndNotepad=0 then
  begin
    ShowMessage('Not found');
    Exit;
  end;
  hwndEdit := FindWindowEx(hwndNotepad, 0, 0, nil);
  if hwndEdit=0 then
  begin
    ShowMessage('Not found');
    Exit;
  end;
  PostMessage(hwndEdit,WM_KEYDOWN,Vk_Menu,0);
  PostMessage(hwndEdit,WM_KEYDOWN,ord('s'),0);
  PostMessage(hwndEdit,WM_KEYup,Vk_Menu,0);
end;end.要把‘ALT+S'组合键传到“GLBSWizard”这个窗口去,好像不行!
错在哪里了?解决问题一定结帐、给分!

解决方案 »

  1.   

    用SENDMESSAGE()
    POSTMESSAGE()要消息被处理后才会返回,如果队列中消息过多则会引起延迟.
    估计是这里的问题.
      

  2.   

    可以肯定,不应该分两次发送消息,而应该给LParam和WParam赋一定的值,一次发送
    AltMask = $20000000;
    试试将SendMessage(hwndEdit, WM_KEYDOWN, ord('s') or AltMask, lp);
      

  3.   

    错了,抱歉,应该是
    SendMessage(hwndEdit, WM_KEYDOWN, ord('s') ,AltMask);
      

  4.   

    按照 lazycat818(lazycat818)的方法,执行程序后“GLBSWizard”窗口还是没有任何反应!
    不行耶!