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

Вниз

sendkey в неактивном окне как hotkey   Найти похожие ветки 

 
porting ©   (2007-05-04 05:38) [0]

Приветствую всех собственно как реализовать hotkey в sendkey+неактивное окно?
Максимум что получилось это сендекей в неактивном окне, но опять же надо нажимать на кнопку на форме что бы сендкей работал.

вот так она определяет имя окна и нажимает в неактивном окне нужную кнопку клавы.
procedure TForm1.Button3Click(Sender: TObject);
begin
SendKeys1.GetWindowHandle("test 2");

if SendKeys1.WindowHandle <> 0 then

SendKeys1.SendKeys(Chr($39));

end;

Что надо зделать что бы это работала не по нажатию кнопки, а по нажатию горчих клавиш на клавературе например shift+9.

Например: есть test 1 окно активное, и test 2 не активное и чтобы работая в окне test 1 нажимая горячие клавишы нажималися в окне test2.


 
ЮЮ ©   (2007-05-04 06:24) [1]

Написать код не в обработчике OnClick кнопки, а в обработчике, который будет вызван по нажатию горчих клавиш на клавературе например shift+9.


З.Ы. А как вводить символ "(" в поле ввода при такой "горячей клавише"?
Посмотри комбинации, предлагаемве в TAction.ShortCut. Кстати, достатчно будет создать TActionList, а в нем TAction c твоим кодом


 
porting ©   (2007-05-04 16:06) [2]

procedure TForm1.Button3Click(Sender: TObject);
begin
SendKeys1.GetWindowHandle("test 2");
end;

procedure TForm1.WM_HotKeyHandler (var Message: TMessage);
 var
   idHotKey: integer;
   fuModifiers: word;
   uVirtKey: word;
begin
SendKeys1.SendKeys(Chr($39));
 

 if (fuModifiers = MOD_SHIFT) AND (uVirtKey = VK_F9) then
   caption:="Shift-F9 Нажата";
 inherited;
end;

Вроде что-то получилось но есть одна проблема теперь при нажатие горячих клавиш окно которое должно быть активным становится не активным как это зделать ? Тоесть надо что бы окно test 1 было активным постоянно.


 
porting ©   (2007-05-05 04:31) [3]

собственно не только окно test 1 становится не активным, а все окна как зделать чтобы активное окно не слетало??


 
Leonid Troyanovsky ©   (2007-05-05 10:13) [4]


> porting ©   (04.05.07 05:38)  

> и чтобы работая в окне test 1 нажимая горячие клавишы нажималися
> в окне test2.

Что за окно test2 и какие, собс-но, клавиши требуется "нажать".

--
Regards, LVT.


 
porting ©   (2007-05-05 16:59) [5]

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, Sendkey1, StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   SendKeys1: TSendKeys;
   Button2: TButton;
   Button3: TButton;
   Button4: TButton;
   Button5: TButton;
   procedure Button1Click(Sender: TObject);
   procedure Button2Click(Sender: TObject);
   procedure Button3Click(Sender: TObject);
   procedure Button4Click(Sender: TObject);
   procedure Button5Click(Sender: TObject);
 private
   procedure  WM_KeyPress  (var Message: TMessage);
message WM_HOTKEY;

   { Private declarations }
 public
   { Public declarations }
 end;

var
  Form1: TForm1;
   keyid:integer;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 SendKeys1.GetWindowHandle("Безымянный - Блокнот");
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
SendKeys1.SendKeys(Chr($39));

end;

procedure TForm1.Button4Click(Sender: TObject);
begin
close;
end;

procedure TForm1.WM_KeyPress (var Message: TMessage);
 var
   idHotKey: integer;
   fuModifiers: word;
   uVirtKey: word;
begin

SendKeys1.SendKeys(Chr($39));

 if (fuModifiers = MOD_SHIFT) AND (uVirtKey = VK_F9) then
   caption:="Shift-F9 Проверка";
 inherited;
end;

procedure TForm1.Button5Click(Sender: TObject);

begin
keyid:=GlobalAddAtom("VK_9");
RegisterHotKey(handle, keyid, MOD_SHIFT, VK_F9);
end;

end.

Вот полный исходик, допустим это будет 2 блокнота перый блокнот должен быть активным, второй не активный и при нажатие горячих клавиш во второй блокнот должна нажиматся клавиша, для примера взял клавишу 9 - $39 так вот всё нажимается, но только все окна каторые находятся в данные момент открытие и активные становятся сразу не активные при нажатие гор клавиш.


 
Leonid Troyanovsky ©   (2007-05-05 19:20) [6]


> porting ©   (05.05.07 16:59) [5]

Объясни словами, что конкретно требуется.
Какой программе и что нужно посылать.

--
Regards, LVT.


 
porting ©   (2007-05-05 20:57) [7]

ок. Значит так! На рабочем столе вызванно 2 notepad.exe один активный нотепад, второй нет. Надо что бы в неактивном нотепаде нажималася кнопка 9 - $39, а активный был всегда активным даже когда нажимается горячия кнопка. так понятней ? в этом исходник что выложил выше всё нажимается и передаётся как надо, но! при нажатие горячий клавиш все окна становятся не активными...
мб есть другой способ как написать hotkey на неактивное приложения что бы принажатие горячий клавиш в неактивном окне которое будет распознано, нажималася определённая клавиша например это будет клавиша 9 (в щеснадцатеричном числе это будет $39).


 
Leonid Troyanovsky ©   (2007-05-06 09:30) [8]


> porting ©   (05.05.07 20:57) [7]

> мб есть другой способ как написать hotkey на неактивное
> приложения что бы принажатие горячий клавиш в неактивном
> окне которое будет распознано, нажималася определённая клавиша
> например это будет клавиша 9 (в щеснадцатеричном числе это
> будет $39).

PostMessage(FindWindowEx(FindWindow("Notepad", nil), 0, "EDIT", nil), WM_CHAR, Ord("9"), 0);

--
Regards, LVT.


 
porting ©   (2007-05-07 03:09) [9]

а как зделать нажатие кнопок, а не при нажатие горячих клавиш вставлять текст ?
PostMessage(FindWindow(nil, "testwindow"), WM_KEYDOWN, VK_CONTROL, $00000039); так или как точно ? и вобще где можно почитать подробно о PostMessage.


 
Германн ©   (2007-05-07 03:26) [10]

Я страдаю ерундой! Помогите мне получить от этого удовольствие.



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

Текущий архив: 2007.05.27;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.029 c
15-1177685246
oldman
2007-04-27 18:47
2007.05.27
Эх, жалко "Орешник" загнулся.


2-1178759137
Просто_новичок
2007-05-10 05:05
2007.05.27
запись в файл


10-1123905651
kblc
2005-08-13 08:00
2007.05.27
Как создать SingletonComServer?


15-1177679014
SergeyLTD
2007-04-27 17:03
2007.05.27
Помогите, пожалуйста, с лабораторными работами


1-1175146706
Medusa__
2007-03-29 09:38
2007.05.27
Распечатка TPanel.