Текущий архив: 2006.10.15;
Скачать: CL | DM;
Внизпослать Ctrl+S в другое приложение Найти похожие ветки
← →
laronov (2006-09-25 12:37) [0]Как послать Ctrl+S в другое приложение?
Пытаюсь послатьPostMessage(<хендл окна>, WM_KEYDOWN, VK_F4, Ord("S"))
но не получается....
← →
clickmaker © (2006-09-25 12:42) [1]а причем тут VK_F4?
и если уж на то пошло надо слать и нажатие и отпускание
← →
laronov (2006-09-25 12:43) [2]не внимателен....
PostMessage(wnd, WM_KEYDOWN, VK_CTRL,0);
так вообще ругается на VK_CTRL
← →
laronov (2006-09-25 12:49) [3]вернее вот так :)
PostMessage(wnd, WM_KEYDOWN, VK_CONTROL, Ord("S"));
не ругается но и не срабатывает...
при этом, когда надо было нажать F4PostMessage(wnd, WM_KEYDOWN, VK_F4, 0);
срабатывало....
← →
clickmaker © (2006-09-25 12:53) [4]
> [3] laronov (25.09.06 12:49)
SetKeyboardState();
← →
laronov (2006-09-25 13:01) [5]
> clickmaker © (25.09.06 12:53) [4]
на сколько я понимаю, я не смогу передать потом это сочитание клавиш в др окно...?
← →
clickmaker © (2006-09-25 13:20) [6]можно еще keybd_event()
← →
MacroDenS © (2006-09-25 14:16) [7]А если попробовать:
PostMessage(wnd, WM_KEYDOWN, VK_CONTROL+Ord("S"), 0);
PostMessage(wnd, WM_KEYUP, VK_CONTROL+Ord("S"), 0);
← →
laronov (2006-09-25 14:26) [8]
> clickmaker © (25.09.06 13:20) [6]
там так же негде указать хендл окна, и соответственно это нажатие не будет передано...
> MacroDenS © (25.09.06 14:16) [7]
не срабатывает... :(
такPostMessage(wnd, WM_KEYDOWN, VK_CONTROL, 0);
PostMessage(wnd, WM_KEYDOWN, ord("S"), 0);
PostMessage(wnd, WM_KEYUP, ord("S"), 0);
PostMessage(wnd, WM_KEYUP, VK_CONTROL, 0);
тоже не сработало...
← →
clickmaker © (2006-09-25 14:51) [9]
H := FindWindow("Notepad", nil);
if (H <> 0) then begin
ThreadId := GetWindowThreadProcessId(H, nil);
AttachThreadInput(GetCurrentThreadId(), ThreadId, True);
GetKeyboardState(KS);
KS[VK_CONTROL] := $80;
SetKeyboardState(KS);
PostMessage(H, WM_KEYDOWN, 83, 0);
PostMessage(H, WM_KEYUP, 83, 0);
Sleep(1000);
KS[VK_CONTROL] := 0;
SetKeyboardState(KS);
AttachThreadInput(GetCurrentThreadId(), ThreadId, False);
end;
← →
laronov (2006-09-25 15:14) [10]
> clickmaker © (25.09.06 14:51) [9]
Заработало! Большое спасибо!
только я не совсем понял что занчитKS[VK_CONTROL] := $80;
и что значит код 83. который мы посылаем....
← →
clickmaker © (2006-09-25 15:21) [11]
> [10] laronov (25.09.06 15:14)
KS[VK_CONTROL] := $80; - состояние клавиши ctrl нажатое (старший бит взведен)
83 = "S"
← →
laronov (2006-09-25 16:27) [12]спасибо!
Страницы: 1 вся ветка
Текущий архив: 2006.10.15;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.044 c