Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.185 c
15-1334142183
Сергей М.
2012-04-11 15:03
2013.03.22
Занимательная криптография


2-1331367948
niro---
2012-03-10 12:25
2013.03.22
Заставить работать TWebBrowser в потоке из DLL


15-1333798232
ProgRAMmer Dimonych
2012-04-07 15:30
2013.03.22
Шаблон консольного приложения Delphi 7


15-1329135391
Kerk
2012-02-13 16:16
2013.03.22
KaZaNoVa


2-1345708838
Molchanov
2012-08-23 12:00
2013.03.22
Высокоскоростной обмен с аппаратурой