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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2013, 17:35   #1
Host-2013
Пользователь
 
Регистрация: 02.02.2013
Сообщений: 63
По умолчанию эмуляция нажатий клавиш

вот скажем так тест:

Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then ShowMessage('Key pressed');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
SendMessage(FindWindow('Form1',0), WM_KEYDOWN, 13, 0);
SendMessage(FindWindow('Form1',0), WM_KEYUP, 13, 0);
end;

end.
не работает почему?
Host-2013 вне форума Ответить с цитированием
Старый 10.03.2013, 00:15   #2
Черчилль
 
Аватар для Черчилль
 
Регистрация: 01.03.2013
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Host-2013 Посмотреть сообщение
вот скажем так тест:

Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then ShowMessage('Key pressed');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
SendMessage(FindWindow('Form1',0), WM_KEYDOWN, 13, 0);
SendMessage(FindWindow('Form1',0), WM_KEYUP, 13, 0);
end;

end.
не работает почему?
Откуда такой кривой код?
Сокол высоко поднимается, когда летит против ветра, а не по ветру.
Черчилль вне форума Ответить с цитированием
Старый 10.03.2013, 00:52   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
почему?
Потому что FindWindow возвращает нулевой хендл.
Потому что FindWindow возвращает хендл окна, которая не обрабатывает сообщения.
SendMessage возвращает результат обработки сообщения - анализируй его с помошью оператора IF, этот результат может быть кодом ошибки.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обработка нажатий клавиш в Qt SiNoNoto Gamedev - cоздание игр: Unity, OpenGL, DirectX 9 28.06.2017 16:42
Эмуляция нажатий клавиш в играх Boris-Britva Общие вопросы Delphi 6 24.06.2011 15:20
Эмуляция нажатий клавиш BorisBritva Общие вопросы Delphi 1 01.11.2010 13:09
симуляция нажатий клавиш 4321 Общие вопросы Delphi 14 23.10.2008 23:18
отслеживание нажатий клавиш Артэс Win Api 6 14.06.2008 20:02