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

Вниз

послать нажатие клавиши   Найти похожие ветки 

 
Jonis_84 ©   (2012-05-11 13:20) [0]

Доброго времени суток!Подскажите пожалуйста как послать нажатие Ctrl+X в другое приложение?


procedure TForm2.Timer1Timer(Sender: TObject);
begin
keybd_event(VK_CONTROL, 0, 0, 0);
keybd_event(Ord("X"), 0, 0, 0);
keybd_event(Ord("X"), 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
end;

end.

есть какие нибудь ещё варианты?


 
Dimka Maslov ©   (2012-05-11 13:33) [1]

Найти ХВНД через ЕнумВиндовс и послать правильную последовательность сообщений ВМ_КЕЙДОВН и ВМ_КЕЙУП


 
stas ©   (2012-05-11 13:40) [2]

Так: "А не пошло бы ты - нажатие Ctrl+X, в другое приложение?" )


 
Jonis_84 ©   (2012-05-11 13:41) [3]


procedure TForm2.Timer1Timer(Sender: TObject);
Var
Des:HWND;
begin
Des:=GetForegroundWindow;
PostMessage(Des,WM_KeyDown,Ord("X"),0);
PostMessage(Des,WM_KeyUp,Ord("X"),0);
end;

end.

Так?


 
Jonis_84 ©   (2012-05-11 13:42) [4]

Не пашет!!!!


 
Jonis_84 ©   (2012-05-11 13:45) [5]

procedure TForm2.Timer1Timer(Sender: TObject);
Var
Des:HWND;
begin
Des:=GetForegroundWindow;
PostMessage(Des,WM_KeyDown,VK_CONTROL,0);
PostMessage(Des,WM_KeyDown,Ord("X"),0);
PostMessage(Des,WM_KeyUp,Ord("X"),0);
PostMessage(Des,WM_KeyUp,VK_CONTROL,0);
end;


 
Jonis_84 ©   (2012-05-11 13:49) [6]

"X" жмёт 2-а раза , а Ctrl не нажимает


 
Dimka Maslov ©   (2012-05-11 14:05) [7]

Прога, которая получает сообщения может проверять нажатие Ctrl через GetAsyncKeyState, тогда способ с сообщениями не прокатит. Ну а кроме того, существует сообщение WM_CUT (если я правильно понял, зачем надо посылать Ctrl-X)


 
sniknik ©   (2012-05-11 14:08) [8]

есть еще WM_SYSKEYDOWN


 
sniknik ©   (2012-05-11 14:14) [9]

http://www.delphimaster.net/view/4-7256


 
stas ©   (2012-05-11 14:18) [10]

PostMessage(Des,WM_SYSKEYDOWN,VK_CONTROL,0);
 PostMessage(Des,WM_KeyDown,Ord("X"),0);
 PostMessage(Des,WM_KeyUp,Ord("X"),0);
 PostMessage(Des,WM_SYSKEYUP,VK_CONTROL,0);


 
Leonid Troyanovsky ©   (2012-05-12 09:11) [11]

http://www.delphimaster.net/view/2-1246437194


 
Jonis_84 ©   (2012-05-12 14:30) [12]

не один из вариантов не работает.Есть 2-е проги ,после непродолжительного времени 1-я выдаёт окно закрыть которое можно одной из предложеных комбинаций клавиш,их всего 5 (ctrl+x,alt+d ......)


 
Jonis_84 ©   (2012-05-12 18:07) [13]

нет больше вариантов, да?


 
sniknik ©   (2012-05-12 18:19) [14]

чем варианты перебирать лучше бы разобрался почему не работает...


 
brother ©   (2012-05-12 20:05) [15]

> после непродолжительного времени 1-я выдаёт окно закрыть
> которое можно одной из предложеных комбинаций клавиш

похоже на сообщение о триальности или не зарегистрированности программы...


 
Inovet ©   (2012-05-12 20:27) [16]

> [15] brother ©   (12.05.12 20:05)
> похоже на сообщение о триальности или не зарегистрированности
> программы...

которое надо загасить.


 
Jonis_84 ©   (2012-05-13 13:21) [17]

Удалено модератором


 
stas ©   (2012-05-14 10:22) [18]

А окно определяется правильно?
Может быть проще посылать окну сообщение на закрытие?


 
Jonis_84 ©   (2012-05-15 12:46) [19]

Окно определяется HWND выводиться в Edit.Закрыть нельзя

> окно закрыть которое можно одной из предложеных комбинаций
> клавиш,их всего 5 (ctrl+x,alt+d ......)
>

Почему..........не знаю!!!по этому перебираю.


 
Jonis_84 ©   (2012-05-15 12:48) [20]

Есть ещё варианты?Или где почитать?


 
Jonis_84 ©   (2012-05-15 12:54) [21]

Все предложенные варианты работают в др. приложениях а с этим окном нет!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!


 
stas ©   (2012-05-15 13:34) [22]

Можешь дать приложение посмотреть (в котором окно)?


 
Омлет ©   (2012-05-15 15:16) [23]


> Jonis_84

У тебя точно фокус на нужном окне находится?
Попробуй ещё через SendInput:

const
 ExtendedKeys: set of Byte = [
       VK_LBUTTON, VK_RBUTTON, VK_CANCEL, VK_MBUTTON, VK_BACK, VK_TAB, VK_CLEAR,
       VK_RETURN, VK_SHIFT, VK_CONTROL, VK_MENU, VK_PAUSE, VK_CAPITAL, VK_KANA,
       VK_HANGUL, VK_JUNJA, VK_FINAL, VK_HANJA, VK_KANJI, VK_ESCAPE,
       VK_CONVERT, VK_NONCONVERT, VK_ACCEPT, VK_MODECHANGE, VK_SPACE, VK_PRIOR, VK_NEXT,
       VK_END, VK_HOME, VK_LEFT, VK_UP, VK_RIGHT, VK_DOWN, VK_SELECT, VK_PRINT, VK_EXECUTE,
       VK_SNAPSHOT, VK_INSERT, VK_DELETE, VK_HELP, VK_LWIN, VK_RWIN, VK_APPS, VK_NUMPAD0,
       VK_NUMPAD1, VK_NUMPAD2, VK_NUMPAD3, VK_NUMPAD4, VK_NUMPAD5, VK_NUMPAD6,
       VK_NUMPAD7, VK_NUMPAD8, VK_NUMPAD9, VK_MULTIPLY, VK_ADD, VK_SEPARATOR,
       VK_SUBTRACT, VK_DECIMAL, VK_DIVIDE, VK_F1, VK_F2, VK_F3, VK_F4, VK_F5, VK_F6, VK_F7,
       VK_F8, VK_F9, VK_F10, VK_F11, VK_F12, VK_F13, VK_F14, VK_F15, VK_F16, VK_F17, VK_F18,
       VK_F19, VK_F20, VK_F21, VK_F22, VK_F23, VK_F24, VK_NUMLOCK, VK_SCROLL, VK_LSHIFT,
       VK_RSHIFT, VK_LCONTROL, VK_RCONTROL, VK_LMENU, VK_RMENU, VK_PROCESSKEY, VK_ATTN,
       VK_CRSEL, VK_EXSEL, VK_EREOF, VK_PLAY, VK_ZOOM, VK_NONAME, VK_PA1, VK_OEM_CLEAR
 ];

procedure SendKeyInput(AKey: Byte; IsKeyUp: boolean = false);
var
 Input: TInput;
begin
 Input.Itype := INPUT_KEYBOARD;
 with Input.ki do
 begin
   wVk := AKey;
   if AKey in ExtendedKeys then
     dwFlags := KEYEVENTF_EXTENDEDKEY
   else
     dwFlags := 0;
   if IsKeyUp then
     dwFlags := dwFlags or KEYEVENTF_KEYUP;
   time := 0;
   dwExtraInfo := 0;
 end;
 SendInput(1, Input, SizeOf(Input));
end;

procedure TForm2.Timer1Timer(Sender: TObject);
begin
 SendKeyInput(VK_CONTROL);
 SendKeyInput(Ord("X"));
 SendKeyInput(Ord("X"), true);
 SendKeyInput(VK_CONTROL, true);
end;


 
Омлет ©   (2012-05-15 15:27) [24]

А, ты, похоже, просто забыл указать флаг KEYEVENTF_EXTENDEDKEY для контрола (VK_CONTROL).


 
Омлет ©   (2012-05-15 15:31) [25]

Хотя, может и нет. Не помню, важен ли он для keybd_event.


 
Омлет ©   (2012-05-15 15:34) [26]

Да, он есть-таки в описании: http://msdn.microsoft.com/en-us/library/windows/desktop/ms646304(v=vs.85).aspx



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.088 c
15-1345527113
ProgRAMmer Dimonych
2012-08-21 09:31
2013.03.22
Можно ли запретить CryptoAPI лезть в сеть?


15-1354048202
Юрий
2012-11-28 00:30
2013.03.22
С днем рождения ! 28 ноября 2012 среда


15-1345632073
Rouse_
2012-08-22 14:41
2013.03.22
Семинар "RAD Studio XE3"


2-1348400327
Jimmy
2012-09-23 15:38
2013.03.22
Изменение курсора мыши


6-1261579139
ZV
2009-12-23 17:38
2013.03.22
Client и Server. Как сделать надежно и просто ?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский