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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2008, 12:38   #1
Дикий
Пользователь
 
Аватар для Дикий
 
Регистрация: 10.05.2008
Сообщений: 89
Вопрос Таймер с "кликером"!

Подскажите, пожалуйста, если кто то может:
Нужно в Делфи сделать:
Запущена программа, в ней выставляется время (в секундах), и буква/цифра/знак, который по истечению данного времени нажмется в выделенном поле (т.е. если при работе программы я запущу к примеру МС Ворд, то буква/цифра/знак будет вводится в поле ввода Ворда)

Заранее благодарен!
...у зверя свобода её лишь ищи...

Дикий 21.08.2005
Дикий вне форума Ответить с цитированием
Старый 04.12.2008, 13:50   #2
knight
Дон Кихот
Форумчанин
 
Аватар для knight
 
Регистрация: 17.01.2008
Сообщений: 130
По умолчанию

Цитата:
Сообщение от Дикий Посмотреть сообщение
и буква/цифра/знак, который по истечению данного времени нажмется в выделенном поле
в каком поле, в текстовом TEdit?
Цитата:
Сообщение от Дикий Посмотреть сообщение
(т.е. если при работе программы я запущу к примеру МС Ворд, то буква/цифра/знак будет вводится в поле ввода Ворда)
опять же в каком поле, Word c листом пустым грузится вначале
knight вне форума Ответить с цитированием
Старый 04.12.2008, 13:57   #3
Дикий
Пользователь
 
Аватар для Дикий
 
Регистрация: 10.05.2008
Сообщений: 89
По умолчанию

MS Word был использован лишь в качестве примера =)

я хотел сказать что клавиша должна нажимать независимо от того, активна ли программа (т.е. если её свернуть и перейти на любой другой процесс, то клавиша будет нажиматься в данном процессе)
...у зверя свобода её лишь ищи...

Дикий 21.08.2005
Дикий вне форума Ответить с цитированием
Старый 04.12.2008, 14:16   #4
knight
Дон Кихот
Форумчанин
 
Аватар для knight
 
Регистрация: 17.01.2008
Сообщений: 130
По умолчанию

Нажатие клавиши посылается как SendMessage какому-то окну... Те нажимать надо в сасом приложении delphi или в другой программе?
knight вне форума Ответить с цитированием
Старый 04.12.2008, 14:18   #5
knight
Дон Кихот
Форумчанин
 
Аватар для knight
 
Регистрация: 17.01.2008
Сообщений: 130
По умолчанию

Исправил [ сасом ] каком
knight вне форума Ответить с цитированием
Старый 04.12.2008, 14:20   #6
Дикий
Пользователь
 
Аватар для Дикий
 
Регистрация: 10.05.2008
Сообщений: 89
По умолчанию

Трудно объясняю я =))) не умею этого делать =)

Нажимать надо в другой программе.
...у зверя свобода её лишь ищи...

Дикий 21.08.2005
Дикий вне форума Ответить с цитированием
Старый 04.12.2008, 14:37   #7
knight
Дон Кихот
Форумчанин
 
Аватар для knight
 
Регистрация: 17.01.2008
Сообщений: 130
По умолчанию

Вот что нашел у себя:
Код:
//Функция нахождения кода окна по части имени
function soaFindWindow(ATitle: string): THandle;
var hwnd : integer;
    Buffer : ^TBuffer;
    count  : integer;
begin

 New(Buffer);
 hwnd := GetTopWindow(0);
 count := 0;
 while hwnd <> 0 do
  begin
       hwnd := GetNextWindow(hwnd, GW_HWNDNEXT);
       GetWindowText(hwnd, Buffer^, 254);
       if (Buffer^ = ATitle)
         then begin
           Result := hwnd;
           Exit;
         end;
    if count >= 100 then Break;
  end;
  Dispose(Buffer);
  Result := 0;
end;
//Жмет ENTER на окно с именем  ATitle
function soaPressEnter(ATitle: string): integer;
var hwnd: THandle;
begin
  hwnd := soaFindWindow(ATitle);
  if hwnd > 0 then
    begin
       PostMessage(hwnd, WM_KEYDOWN, VK_RETURN, 0);
       PostMessage(hwnd, WM_KEYUP, VK_RETURN, 0);
       Result := 1;
    end
  else Result := 0;
end;
knight вне форума Ответить с цитированием
Старый 04.12.2008, 14:51   #8
Дикий
Пользователь
 
Аватар для Дикий
 
Регистрация: 10.05.2008
Сообщений: 89
По умолчанию

А так что бы не Enter а, допустим цифру с доп.клавиатуры???

ЗЫ. Подскажите, плиз, в каких единицах в Timer(вкладка "System") измеряется число (это же значение "Interval"???) ... или я ошибаюсь??? просто совсем зеленый новичек еще...

И как будет писаться строка: "По истечению таймера - действие"
...у зверя свобода её лишь ищи...

Дикий 21.08.2005

Последний раз редактировалось Дикий; 04.12.2008 в 15:13.
Дикий вне форума Ответить с цитированием
Старый 04.12.2008, 15:29   #9
knight
Дон Кихот
Форумчанин
 
Аватар для knight
 
Регистрация: 17.01.2008
Сообщений: 130
По умолчанию

PostMessage(hwnd, WM_KEYDOWN, VK_RETURN, 0);
PostMessage(hwnd, WM_KEYUP, VK_RETURN, 0);

VK_RETURN - замени на любую VK_* Delphi сам подскажет

Interval - в мс 1000 = 1 сек
knight вне форума Ответить с цитированием
Старый 04.12.2008, 15:41   #10
Дикий
Пользователь
 
Аватар для Дикий
 
Регистрация: 10.05.2008
Сообщений: 89
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Interval(Edit1.Text);
end;
в принципе знал я что это будет ошибкой...

как правильно будет??


и еще: когда клавишу назначаешь(надо с доп.клавы цифру... как это написать???)


Сорри за кучи глупых вопроссов
...у зверя свобода её лишь ищи...

Дикий 21.08.2005

Последний раз редактировалось Дикий; 04.12.2008 в 15:52.
Дикий вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Таймер в С# kommunist Общие вопросы .NET 3 02.06.2008 12:11
ТАЙМЕР ratibor32 Общие вопросы C/C++ 1 26.12.2007 19:02
таймер Романнн Общие вопросы Delphi 19 19.12.2007 15:33
таймер darkcoder Общие вопросы Delphi 5 06.12.2007 06:14
Таймер Stanislav Общие вопросы Delphi 3 26.11.2007 06:52