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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2008, 23:58   #1
Vadik(R)
Пользователь
 
Регистрация: 10.03.2008
Сообщений: 68
Смущение Как послать Edit'у сообщение о нажатии клавиши

Люди, как послать Edit'у сообщение о нажатии клавиши? Знаю, что тема уже замусолена, но тем не менее сколько не пытался использовать чужые коды, все равно никак. Вот код:
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
	Timer1: TTimer;
	Edit1: TEdit;
	procedure FormCreate(Sender: TObject);
	procedure Timer1Timer(Sender: TObject);
  private
	{ Private declarations }
  public
	{ Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Timer1.Enabled:=True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  h: hWND;
begin
  Timer1.Enabled:=False;
  h:=FindWindow(nil, 'Form1');
  h:=FindWindowEx(h, 0, '', 'Edit1');
  PostMessage(h, WM_SETTEXT, VK_SPACE, 1)
end;

end.
Хочу послать пробел, но ничего не происходит. Edit1.Perform не предлагайте, так как мне надо послать сообщение чужому окну.
Vadik(R) вне форума Ответить с цитированием
Старый 27.12.2008, 13:09   #2
JamS007
Пользователь
 
Регистрация: 09.11.2008
Сообщений: 68
По умолчанию

С чего ты взял, что имя Edita'a в другом окне будет именно Edit1 ?
JamS007 вне форума Ответить с цитированием
Старый 27.12.2008, 13:37   #3
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Цитата:
Сообщение от JamS007 Посмотреть сообщение
С чего ты взял, что имя Edita'a в другом окне будет именно Edit1 ?
А с чего ты взял, что нет? Может другое окно тоже им создано...
Altera вне форума Ответить с цитированием
Старый 27.12.2008, 13:59   #4
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Вы не указали класc компонента. Сделайте так:
Код:
...
Procedure TForm1.Timer1Timer(Sender: TObject);
Var
h: hWND;
Begin
Timer1.Enabled:=False;
h:=FindWindow(nil, 'Form1');
h:=FindWindowEx(h,0,'TEdit','Edit1');
PostMessage(h,WM_KEYDOWN, VK_SPACE,1);
End;
Всегда рад помочь!

Последний раз редактировалось Terran; 27.12.2008 в 14:02.
Terran вне форума Ответить с цитированием
Старый 27.12.2008, 20:38   #5
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

И все равно вряд ли что получится, потому что:
procedure TForm1.Timer1Timer(Sender: TObject);
...
h:=FindWindow(nil, 'Form1');
Она всегда будет находить себя, а не чужую форму.
mihali4 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как послать в окно сообщение о нажатии буквенных клавишь? Yuran Win Api 3 23.06.2008 12:10
Обновление заданной области экрана при нажатии клавиши Jack Torrance Win Api 3 26.05.2008 10:57
Как послать команду AngelOfDeath Работа с сетью в Delphi 2 10.04.2008 08:23
послать сообщение кнопке Fireleo Win Api 7 06.08.2007 11:14
Событие при нажатии клавиши Enter Inbox Общие вопросы Delphi 4 12.06.2007 14:18