Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.10.15;
Скачать: [xml.tar.bz2];

Вниз

послать 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"));
не ругается но и не срабатывает...
при этом, когда надо было нажать F4
PostMessage(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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.142 c
1-1157712245
TakTak
2006-09-08 14:44
2006.10.15
поместить в автозагрузку программу.


3-1155991205
DancerMan
2006-08-19 16:40
2006.10.15
Ошибка при восстановлении базы данных


15-1158917616
Stanislav
2006-09-22 13:33
2006.10.15
SQL В MSSQL


4-1148964758
Шмель
2006-05-30 08:52
2006.10.15
Сохранение позиции окна


15-1158875054
DrPass
2006-09-22 01:44
2006.10.15
О, ее-таки отправили на Бали





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский