Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2010, 15:10   #21
xRamzeSx
Форумчанин
 
Регистрация: 24.01.2010
Сообщений: 151
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Кинь его в Package и проинсталлируй - появится.
Прошу прощения за глупый вопрос, но я не понял, куда точно его кидать, и как инсталлировать
xRamzeSx вне форума Ответить с цитированием
Старый 21.09.2010, 15:15   #22
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

http://www.rsdn.ru/article/Delphi/makecomponents.xml
http://www.delphiplus.org/articles/d...B5%D0%BD%D1%82
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.09.2010, 16:16   #23
xRamzeSx
Форумчанин
 
Регистрация: 24.01.2010
Сообщений: 151
По умолчанию

Исходник примера:
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N11: TMenuItem;
    N21: TMenuItem;
    N31: TMenuItem;
    Button1: TButton;
    Memo1: TMemo;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    CheckBox3: TCheckBox;
    SendKey1: TSendKey;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure Prem;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  if Button1.Tag = 1 then begin
    Button1.Tag := 0;
  end
  else begin
    Button1.Tag := 1;
    Prem;
  end;
begin
  // Запускаем Notepad, и ему мы будем посылать нажатия клавиш
  WinExec('notepad.exe', SW_SHOW);
  // В параметре процедуры GetWindowHandle помещаем
  // текст заголовка окна Notepad'а.
  SendKey1.GetWindowHandle('Untiteled - NotePad');
  // Если хэндл окна получен успешно, то отправляем ему текст
  if SendKey1.WindowHandle <> 0 then
    SendKey1.SendKey('This is a test');
  // Так же можно отправить код любой кнопки типа
  // RETURN, используя следующий код:
  // SendKeys1.SendKeys(Chr(13));
end;
end;

procedure TForm1.Prem;
begin
  while Button1.Tag = 1 do begin
    if CheckBox1.Checked then begin
      Memo1.Lines.Add ('Alt+1 HotKey start');
      N11.Click;
      Application.ProcessMessages;
    end;
    Application.ProcessMessages;
  end;
end;

end.
При нажатии на кнопку, происходит так: Открывается два блокнота, пустые, и в них ничего не происходит.

Пробовал менять процессы, ничего не происходит.
Вопрос: Какам боком куда отсылается сочетание клавиш???
xRamzeSx вне форума Ответить с цитированием
Старый 21.09.2010, 16:28   #24
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

А с чего ты взял что окно, найденное методом GetWindowHandle способно принимать текст?
http://www.delphiworld.narod.ru/base...send_keys.html
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.09.2010, 16:52   #25
xRamzeSx
Форумчанин
 
Регистрация: 24.01.2010
Сообщений: 151
По умолчанию

Мне не нужно чтобы окно принимало текст.
Я хочу чтобы при нажатии на кнопку, запускалась процедура которая проверяла бы CheckBox'ы на их состояние (включен или нет - т.е, если выключен - значит процедура для этого бокса не выполняется, а идёт следующая), за тем в Memo1 появлялось бы значение типа 'Alt+1 Hot Key Start' и в окне выполнялось бы сочетание клавиш.
Потом, после выполнения команды в окне (клика мыши), активировалось 2 сочетание, а в Memo1 появлялось бы значение уже - 'Alt+2 Hot Key Start' и т.д

Последний раз редактировалось xRamzeSx; 21.09.2010 в 16:55.
xRamzeSx вне форума Ответить с цитированием
Старый 21.09.2010, 16:53   #26
Alexei91
Заблокирован
Форумчанин
 
Аватар для Alexei91
 
Регистрация: 30.12.2009
Сообщений: 544
По умолчанию

xRamzeSx если не нравится ActionManager,используйте ActionList.
Он попроще.
На OnClick чекбоксов назначьте Action-ны.
В св-вах Action укажите нужные Вам ShortCut-ты.
Темы для WordPress. Русские WordPress шаблоны
Alexei91 вне форума Ответить с цитированием
Старый 22.09.2010, 07:28   #27
xRamzeSx
Форумчанин
 
Регистрация: 24.01.2010
Сообщений: 151
По умолчанию

Я не использую ни ActionManager, ни ActionList.
xRamzeSx вне форума Ответить с цитированием
Старый 22.09.2010, 07:31   #28
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,281
По умолчанию

Тут наверное придется делать окно активным и эмитировать нажатие по keybd_event. При этом FormStyle у вашей формы можно установить равным fsStayOnTop.
Sibedir вне форума Ответить с цитированием
Старый 22.09.2010, 07:46   #29
xRamzeSx
Форумчанин
 
Регистрация: 24.01.2010
Сообщений: 151
По умолчанию

Цитата:
Сообщение от Sibedir Посмотреть сообщение
Тут наверное придется делать окно активным и эмитировать нажатие по keybd_event. При этом FormStyle у вашей формы можно установить равным fsStayOnTop.
Для чего это?
xRamzeSx вне форума Ответить с цитированием
Старый 22.09.2010, 08:08   #30
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,281
По умолчанию

keybd_event - для иминации нажатия клавишь, как будто их нажали вы.
fsStayOnTop - для того, чтобы при активации окна игры ваша форма на улетала на задний план.
Sibedir вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Горячие клавиши dmitriegorovih Общие вопросы Delphi 2 10.09.2010 14:58
Горячие клавиши. Lazio Помощь студентам 2 08.09.2010 02:20
Горячие клавиши в Delphi Maddy Помощь студентам 7 23.04.2010 17:43
Горячие клавиши Altera Общие вопросы Delphi 5 13.09.2008 21:27