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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.02.2021, 05:52   #1
Rec0il
Пользователь
 
Регистрация: 16.03.2013
Сообщений: 69
По умолчанию PascalScript и функция SendMessage

Доброе время суток.
Пишу программу, что-то типа создания своих макросов для мышки..
Для этого использую Remobjects PascalScript.

Реализовал несколько функций, работа с курсором, эмуляция нажатия клавиш.. и тд..
Столкнулся с проблемой. Хочу сделать процедуру посыла нажатия клавиши в чужое окно.
Пробую так:

в приват секции:
Код:
  private
    { Private declarations }
procedure SendKey(window: PWideChar; Key: Word);
в евенте PSScript1Compile регистрирую свою процедуру
Код:
procedure TForm1.PSScript1Compile(Sender: TPSScript);
begin
  Sender.AddMethod(Self, @TForm1.SendKey, 'procedure SendKey(window: PWideChar; Key: Word);');
end;
сама процедура:
Код:
procedure TForm1.SendKey(window: PWideChar; Key: Word);
var
  H: HWND;
begin
  H := FindWindow(nil, window);
  if H <> 0 then
  begin
    SendMessage(H, WM_KEYDOWN,  Key, MakeLong(0, MapVirtualKey(Key, 0)));
    SendMessage(H, WM_KEYUP, Key, MakeLong(0, MapVirtualKey(Key, 0)));
  end;
end;

Программа компилится без ошибок.
В мемо пишу свою процедуру
Код:
SendKey('Counter-Strike', $20);  // пытаюсь в окно кс послать нажатие пробела
Пытаюсь запустить макрос - не запускает. PSScript1 не может скомпилить это.
В чем ошибка я не знаю, как отлавливать ошибку - тоже не знаю.

Запускаю таким образом
Код:
      if PSScript1.Compile then
      begin
      PSScript1.Execute;
      end
      else
      begin
      showmessage(что-то не так.);
      end;
Буду благодарен за любую помощь.
Весь день убил на эту проблему.
Rec0il вне форума Ответить с цитированием
Старый 02.02.2021, 02:39   #2
Rec0il
Пользователь
 
Регистрация: 16.03.2013
Сообщений: 69
По умолчанию

Тему можно закрывать, нашёл решение. Точнее на другом ресурсе ответили)
Дело было в том, что у PascalScript`a нету PWideChar.
По этому передал в качестве параметра string, а в самой процедуре перевёл string в PWideChar.
Rec0il вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
sendmessage и буквы ( Q E R T Y ) onefinal Win Api 5 07.08.2012 15:50
sendmessage glebast Помощь студентам 3 13.07.2012 17:06
SendMessage sashaxD Win Api 5 22.10.2011 20:02
SendMessage Damien4Damien Общие вопросы Delphi 3 29.09.2010 21:27
SendMessage ASЯ Помощь студентам 0 20.05.2010 10:38