Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.06.2011, 17:24   #1
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию Послать Ctrl+C неактивному окну (SendMessage не реботает)

Сначала думал, что можно обойтись простым SendMessage. Но почитал и понял, что нельзя послать Ctrl+C через SendMessage. Можно ли как-то сделать так, чтобы это заработало.
У меня такая идея - отлавливать сообщения, и если пришло, допустим, WM_USER+1, то как-то нажать CTRL+C. Вопрос как?
TwiX вне форума Ответить с цитированием
Старый 21.06.2011, 17:39   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Но почитал и понял, что нельзя послать Ctrl+C через SendMessage.
можно послать WM_COPY.
Цитата:
An application sends the WM_COPY message to an edit control or combo box to copy the current selection to the clipboard in CF_TEXT format.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 21.06.2011, 17:47   #3
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

Не помогло. Там нет стандартных эл-ов винды. Поэтому можно послать сообщение только главному окну.
TwiX вне форума Ответить с цитированием
Старый 21.06.2011, 18:36   #4
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

"Неактивное окно" - чужое? Что оно делает при нажатии ctrl+c? Не консоль?
пыщь
JTG вне форума Ответить с цитированием
Старый 21.06.2011, 19:02   #5
Silver_S
Форумчанин
 
Регистрация: 14.03.2011
Сообщений: 104
По умолчанию

Эмулировать нажатие Ctrl через keybd_event и послать сообщение WM_KEYDOWN/WM_CHAR
Silver_S вне форума Ответить с цитированием
Старый 21.06.2011, 19:21   #6
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Код:
var thatWindow: HWnd;
    thatThread, thisThread: cardinal;
    keyCode: byte;
begin
  thatWindow := FindWindow(nil, 'Form1');
  if thatWindow<>0 then
  begin
    thatThread := GetWindowThreadProcessID(thatWindow, nil);
    thisThread := GetWindowThreadPRocessID(handle, nil);
    if AttachThreadInput(thisThread, thatThread, true) then
    begin
      Windows.SetFocus(thatWindow);
      keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), 0, 0);
      keybd_event(Ord('C'), MapVirtualKey(Ord('C'), 0), 0, 0);
      keybd_event(Ord('C')  , 0, KEYEVENTF_KEYUP, 0);
      keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL,0), KEYEVENTF_KEYUP, 0);
      AttachThreadInput(thisThread, thatThread, false);
    end;
  end;
end;
пыщь
JTG вне форума Ответить с цитированием
Старый 21.06.2011, 19:36   #7
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

JTG, так окно ж активным делается. А если свёрнуто, то не работает

Silver_S, работает, если только на окне фокус =\ Наверное, специально так =\
TwiX вне форума Ответить с цитированием
Старый 02.07.2011, 06:06   #8
An1ka
C++,DirectX/OpenGL
Форумчанин
 
Регистрация: 09.01.2011
Сообщений: 422
По умолчанию

Код:
PostMessage(hwnd, WM_KEYDOWN, VK_CONTROL, 0);
PostMessage(hwnd, WM_KEYDOWN, 'С', 0);
PostMessage(hwnd, WM_KEYUP, 'С', 0);
PostMessage(hwnd, WM_KEYUP, VK_CONTROL, 0);
А так не пробовали ?
An1ka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как послать сообщение чужому окну Tihon Общие вопросы Delphi 4 17.05.2011 17:43
Послать Alt+Mouse1 используя SendMessage. TwiX Общие вопросы Delphi 0 07.06.2010 01:54
Сообщения чужому окну - SendMessage Mufer Win Api 11 10.01.2010 23:48
Как послать message окну Johnson Общие вопросы Delphi 4 09.11.2009 15:18
Можно ли как-нибудь с помощью sendmessage послать дабл-клик на элемент listview'a? TwiX Win Api 4 20.10.2009 18:33