![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
послать Ctrl+S в другое приложение [D7, XP]
laronov © (2006-09-25 12:37:00)Как послать Ctrl+S в другое приложение?
Пытаюсь послать
PostMessage(<хендл окна>, WM_KEYDOWN, VK_F4, Ord('S'))
но не получается....
laronov (2006-09-25 16:27:00) [1]спасибо!
clickmaker (2006-09-25 15:21:00) [2]
> [10] laronov (25.09.06 15:14)
KS[VK_CONTROL] := $80; - состояние клавиши ctrl нажатое (старший бит взведен)
83 = 'S'
laronov (2006-09-25 15:14:00) [3]
> clickmaker © (25.09.06 14:51) [9]
Заработало! Большое спасибо!
только я не совсем понял что занчит
KS[VK_CONTROL] := $80;
и что значит код 83. который мы посылаем....
clickmaker (2006-09-25 14:51:00) [4]
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 14:26:00) [5]
> 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);
тоже не сработало...
MacroDenS (2006-09-25 14:16:00) [6]А если попробовать:
PostMessage(wnd, WM_KEYDOWN, VK_CONTROL+Ord('S'), 0);
PostMessage(wnd, WM_KEYUP, VK_CONTROL+Ord('S'), 0);
clickmaker (2006-09-25 13:20:00) [7]можно еще keybd_event()
laronov (2006-09-25 13:01:00) [8]
> clickmaker © (25.09.06 12:53) [4]
на сколько я понимаю, я не смогу передать потом это сочитание клавиш в др окно...?
clickmaker (2006-09-25 12:53:00) [9]
> [3] laronov (25.09.06 12:49)
SetKeyboardState();
laronov (2006-09-25 12:49:00) [10]вернее вот так :)
PostMessage(wnd, WM_KEYDOWN, VK_CONTROL, Ord('S'));
не ругается но и не срабатывает...
при этом, когда надо было нажать F4
PostMessage(wnd, WM_KEYDOWN, VK_F4, 0);
срабатывало....
laronov (2006-09-25 12:43:00) [11]не внимателен....
PostMessage(wnd, WM_KEYDOWN, VK_CTRL,0);
так вообще ругается на VK_CTRL
clickmaker (2006-09-25 12:42:00) [12]а причем тут VK_F4?
и если уж на то пошло надо слать и нажатие и отпускание