怎么样向一个句柄发送CTRL+C的消息?

解决方案 »

  1.   

    SendMessage(vHandle, WM_COPY, 0, 0);
      

  2.   

    用这个好像不行哦...
    sendmessage(handle,wm_keydown,vk_control,0);
    这个是发送ctrl键,而我不知道怎么发送ctrl+c键..
      

  3.   

    //再来一组,参考如下代码
    procedure PostKeyEx(
      mHandle: THandle; //窗体句柄
      mKey: Word; //键盘值
      mShift: TShiftState; //组合键
      mSpecialKey: Boolean //专用键
    );
    var
      vKeyboardState: TKeyboardState;
      vOldKeyboardState: TKeyboardState;
      lParam: LongInt;
    Begin
      if not IsWindow(mHandle) then Exit;
      lparam := MakeLong(0, MapVirtualKey(mKey, 0));
      if mSpecialKey then lParam := lParam or $1000000;
      GetKeyboardState(vOldKeyboardState);
      FillChar(vKeyboardState, Sizeof(TKeyboardState), 0);
      if ssShift in mShift then vKeyboardState[VK_SHIFT] := $80;
      if ssAlt in mShift then
      begin
        vKeyboardState[VK_MENU] := $80;
        lparam := lparam or $20000000;
      end;
      if ssCtrl in mShift then vKeyboardState[VK_CONTROL] := $80;
      if ssLeft in mShift then vKeyboardState[VK_LBUTTON] := $80;
      If ssRight In mShift then vKeyboardState[VK_RBUTTON] := $80;
      If ssMiddle In mShift then vKeyboardState[VK_MBUTTON] := $80;
      SetKeyboardState(vKeyboardState);
      if ssAlt in mShift then
      begin
        PostMessage(mHandle, WM_SYSKEYDOWN, mKey, lParam);
        PostMessage(mHandle, WM_SYSKEYUP, mKey, lParam or Integer($C0000000));
      end else
      begin
        PostMessage(mHandle, WM_KEYDOWN, mKey, lParam);
        PostMessage(mHandle, WM_KEYUP, mKey, lParam or Integer($C0000000));
      end;
      Application.ProcessMessages;
      SetKeyboardState(vOldKeyboardState);
    end; { PostKeyEx }procedure TForm1.Button1Click(Sender: TObject);
    begin
      PostKeyEx(Edit1.Handle, Ord('C'), [ssCtrl], True);
    end;
      

  4.   

    procedure TForm1.Button1Click(Sender: TObject);
    beginwinexec('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);
    end;
      

  5.   

    模拟 ctrl + C 打开文件菜单
    keybd_event(VK_CONTROL,0,KEYEVENTF_EXTENDEDKEY or 0,0);
    keybd_event(67,0,KEYEVENTF_EXTENDEDKEY or 0,0);
    keybd_event(67,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
    keybd_event(VK_CONTROL,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
      

  6.   

    高兴ing...
    给分,谢谢,真的很谢谢...昨天我忙到今天早上都没解决,现在收到你的答案,谢谢了...