请您实验成功后再告诉我。

解决方案 »

  1.   

    方法一
    postmessage(form1.handle,wm_keydown,vk_down,$20000000)
    $20000000是一个32位值,
    $20000000;表示在按键的同时有alt
      

  2.   

    方法二
    用函数
      VOID keybd_event(    BYTE bVk, //按键代码,就象omkeydown里的
        BYTE bScan, // hardware scan code
        DWORD dwFlags, // flags specifying various function options
        DWORD dwExtraInfo  // additional data associated with keystroke
       );
    //举个比较完全里例子,打开记事本模拟写字+保存操作
    再一个举子:
    ----------------------------------------------------
    //运行windows记事本
    winexec('notepad',1);
    //把记事本窗口激活
    setforegroundwindow(findwindow(nil,'无标题-记事本'));
    //模拟输入 'abc'
    keybd_event(65,0,KEYEVENTF_EXTENDEDKEY or 0,0);
    keybd_event(65,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);keybd_event(66,0,KEYEVENTF_EXTENDEDKEY or 0,0);
    keybd_event(66,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);keybd_event(67,0,KEYEVENTF_EXTENDEDKEY or 0,0);
    keybd_event(67,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);//模拟 alt + F 打开文件菜单
    keybd_event(VK_MENU,0,KEYEVENTF_EXTENDEDKEY or 0,0);
    keybd_event(70,0,KEYEVENTF_EXTENDEDKEY or 0,0);
    keybd_event(70,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
    keybd_event(VK_MENU,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);//模拟输入 按 s  保存
    keybd_event(83,0,KEYEVENTF_EXTENDEDKEY or 0,0);
    keybd_event(83,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);//至于按键的 vkcode(正如你需要的方向键),你自己编个工具在form的 onkeydown里得到
      

  3.   

    下面程序
    模拟按下ALT+“下”的操作
    应该就是你想要的了procedure TForm1.Button1Click(Sender: TObject);//虚拟按下
    begin
      keybd_event(18, 0, 0, 0);//“ALT”的值
      keybd_event(40, 0, 0, 0);//“下”的值
      keybd_event(40, 0, KEYEVENTF_KEYUP, 0);
      keybd_event(18, 0, KEYEVENTF_KEYUP, 0);
    end;procedure TForm1.Button1KeyDown(Sender: TObject; var Key: Word;//实际按下
      Shift: TShiftState);
    begin
      if (Key = 40) and (ssalt in Shift)  then
        showmessage('Message!!');
    end;通过上面的例子,你可以发现当直接按Button的时候会发生Message,说明Button模拟了实际的按键操作,因为你点击Button的时候你并没有键盘上的ALT和方向键
    这样你可以发现当按下ALT+“下”或者直接按Button的时候都产生一样的效果了//其他的方向键你可以用下面的方法来测试得到值
    procedure TForm1.Button2Click(Sender: TObject);//最好在Form的按键中写
    begin
      showmessage(inttostr(VK_UP));
    end;好了,该给分了吧:)
      

  4.   

    procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
        if (ssAlt in Shift) and (key = key_down) then
        begin
            showmessage('Alt + down');
        end;
    end;
      

  5.   

    review了一下才发现人家已经说了这个方法了.........
      

  6.   

    我的实验好象失败了。我想通过发送“alt+左键头”使当前的IE后退,但没有响应啊?
      

  7.   

    procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
        if (ssAlt in Shift) and (key = key_down) then
        begin
            showmessage('Alt + down');
        end;
    end;
    上面有人说的这个方法很常用
      

  8.   

    晕,楼上的,跑题了。
    如果要实现的话,可以去注册一个热键,或者用键盘HOOK都可以。我知道要IE“后退”或“前进”可以发送一个消息给它。但我是一定要用ALT+左键头(右键头)来实现的。
    用keybd_event来向IE模拟按下ALT+左键头的话,是不能实现的。先给“伟大的伟大”记上50分吧。
      

  9.   

    那么请问一下如何输出一个很长的字符串呢?特别是一个含有中文自负的字符串?
    比如说第一位所说的激活notepad,然后我想输入一个含有中文的字符串,应该用那个汉书?
    谢谢!!
      

  10.   

    不是已经解决了吗?
    keybd_event(......);如果你要制定浏览器接受这个按键,只要 setfocus就可以了