Linux. Команды.

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Linux. Команды.

Сообщение Swel » 26.11.2012 19:45:09

Как на Linux будут выглядеть следующий код:
procedure TForm1.Button1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState
);
begin
If key=VK_RETURN then
SetCursorPos(Form1.Left+Button2.Left+1,Form1.Top+Button2.Top+1);
check:=true;
end;


Добавлено спустя 16 минут 47 секунд:
В место VK_RETURN надо использовать $0D, а Чем заменить SetCursorPos не знаю, подскажите пожалуйста!
Swel
незнакомец
 
Сообщения: 7
Зарегистрирован: 26.11.2012 18:43:15

Re: Linux. Команды.

Сообщение evb87ar » 26.11.2012 21:13:26

Swel, вместо $0D надо использовать VK_RETURN, эти коды определены в модуле LCLType.

По поводу SetCursorPos ничего сказать не могу :(

Нашёл только немного переделанный mouse.inc
http://lazarus.sourcearchive.com/docume ... ource.html
По-идее можно его использовать.
Аватара пользователя
evb87ar
новенький
 
Сообщения: 52
Зарегистрирован: 18.01.2012 21:08:02
Откуда: г. Архангельск

Re: Linux. Команды.

Сообщение Swel » 26.11.2012 21:27:41

Благодаря модулю LCLType заработал и SetCursorPos
Swel
незнакомец
 
Сообщения: 7
Зарегистрирован: 26.11.2012 18:43:15

Linux. Команды.2

Сообщение Swel » 26.11.2012 21:29:28

У нас есть команда воспроизведения звука: FpSystem('aplay /home/swel/Загрузки/sirena_1_5/1.wav');
Вопрос: Как сделать чтобы этот звук воспроизводился постоянно?
Swel
незнакомец
 
Сообщения: 7
Зарегистрирован: 26.11.2012 18:43:15

Re: Linux. Команды.

Сообщение evb87ar » 26.11.2012 22:03:59

А вот у меня SetCursorPos так и не появился :(
Swel, какие ещё модули у вас использованы?
Аватара пользователя
evb87ar
новенький
 
Сообщения: 52
Зарегистрирован: 18.01.2012 21:08:02
Откуда: г. Архангельск

Re: Linux. Команды.

Сообщение Swel » 26.11.2012 22:06:41

Вот код всей программы:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, Unix, LCLIntf;

type

{ TForm1 }

TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
private
{ private declarations }
public
{ public declarations }
end;

var
Form1: TForm1;
check:boolean;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState
);
begin
If key=$0D then
SetCursorPos (Form1.Left+Button2.Left+1,Form1.Top+Button2.Top+1);
check:=true;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
If check=true then
FpSystem('aplay /home/swel/Загрузки/sirena_1_5/1.wav');
end;

end.


Но меня не устраивает воспроизведение звука, можно как-нибудь сделать что бы он воспроизводился постоянно и не прерывно?
Swel
незнакомец
 
Сообщения: 7
Зарегистрирован: 26.11.2012 18:43:15

Re: Linux. Команды.2

Сообщение evb87ar » 26.11.2012 22:08:39

Наверное для этого надо использовать TProcess. Но я не знаю как это работает в-точности. Будет ли после команды aplay процесс ждать завершение команды, или же посчитает, что команда передана и можно завершаться.
По крайней мере с командой ping всё проходит нормально.

Сама суть:
Создаёте процесс, кидаете команду, кидаете параметры, запускаете, после завершения процесса повторяете снова.

Оф.инфа:
http://wiki.freepascal.org/Executing_Ex ... rograms/ru
Аватара пользователя
evb87ar
новенький
 
Сообщения: 52
Зарегистрирован: 18.01.2012 21:08:02
Откуда: г. Архангельск

Re: Linux. Команды.2

Сообщение Swel » 26.11.2012 22:16:19

evb87ar, напиши код, если не трудно)
Swel
незнакомец
 
Сообщения: 7
Зарегистрирован: 26.11.2012 18:43:15

Re: Linux. Команды.2

Сообщение evb87ar » 26.11.2012 22:29:49

Код: Выделить всё
   AProcess := TProcess.Create(nil);

   while not flag_Cancel do begin
      // Сообщим AProcess сомандную строку для запуска
      AProcess.CommandLine := 'aplay /home/swel/Загрузки/sirena_1_5/1.wav';

      // Необходимо описать опции программы для запуска
      // Эта опция не позволит нашей программе выполнятся до тех пор, пока
      // запущенная программа не закончится
      AProcess.Options := AProcess.Options + [poWaitOnExit];

      // Теперь AProcess знает командную строку
      // и мы ее запускаем
      AProcess.Execute;
   end;
   // Пока ppc386 не прекратит работу, мы досюда не дойдем
   AProcess.Free;


Наверное так. С консолью я работал постольку-поскольку. Больше разовые операции писал, нежели заставлял что-то там делать извращённое. :)
Аватара пользователя
evb87ar
новенький
 
Сообщения: 52
Зарегистрирован: 18.01.2012 21:08:02
Откуда: г. Архангельск

Re: Linux. Команды.

Сообщение evb87ar » 26.11.2012 22:32:49

Swel, спасибо. Нашёл, SetCursorPos прячется в LCLIntf. :) +10 к опыту.
Аватара пользователя
evb87ar
новенький
 
Сообщения: 52
Зарегистрирован: 18.01.2012 21:08:02
Откуда: г. Архангельск

Re: Linux. Команды.

Сообщение ev » 26.11.2012 23:33:15

Swel
может стоит начать писать более корректные названия тем ;)
ev
долгожитель
 
Сообщения: 1775
Зарегистрирован: 27.04.2005 23:19:06
Откуда: Москва

Re: Linux. Команды.

Сообщение SSerge » 27.11.2012 05:07:47

Swel писал(а):Но меня не устраивает воспроизведение звука, можно как-нибудь сделать что бы он воспроизводился постоянно и не прерывно?


Дорогой мой, то что вы проделываете, к воспроизведению звука как такового, не имеет ни малейшего отношения. :D Хоть сто раз заморочьтесь средсвами библиотеки для контроля процесса. Суть использованного метода (дебильного метода, надо сказать!) - вы вызываете некую внешнюю программу и передаете ей какие-то аргументы (имя файла) в командной строке. Поведение программы зависит от того, как ее написали. Так что, идем в мануал на ваш aplay и смотрим, есть ли опции командной строки, позволяющие зациклить воспроизведение. Если есть, дописываем к вызову и пользуемся. Если нет - ищем другой плеер или наконец то озадачиваемся прямым взаимодействием с alsa или pulseaudio. :twisted: Мне не удалось доселе найти адекватную технологию замены функций воспроизведения звука из windows directX, все просмотренные реализации были близки к категории "почти полное говно".
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 240

Рейтинг@Mail.ru
cron