ADR - Ну зачем надо было задавать все вопросы в одной теме
? Тем более не в вашей.. вот если вы получите ответ, вы не сможете написать в название темы [Решено]… ладно уже поздно.
ADR писал(а):как
1) воспроизвести аудио
Тут было про то как воспроизвести видео (для линукс) про аудио я думаю тоже самое..
так же можно вот это для кучи:
Путеводитель по джунглям звуковых API в LinuxДля Windows, можно воспользоваться Win API и модулем mmsystem или как он там называется.. но там полная Х.. .. но решать вам. Так же можно использовать
Bass, ну или писать свой движок.
ADR писал(а):как
2)узнать содержание буфера иксов (в линуксе при выделении текста...)
Не могу помочь.
ADR писал(а):как
3)зарегистрировать хоткей
С линухом.. не знаком.. так что там ХЗ как делать, скорее всего через Ядро или Систему Х или еще какую нибудь Весчь
для Win можно поставить глобальный отлов клавиши (комбинации)…
Ниже код: формы для загрузки библиотеки dll в которой и идет отлов глобальной клавиши в данном случае клавиши
A. (и записываем число нажатий этой клавиши в файл) Ну типа маленький KeyLogger… удачи.
Ну а в форме идет подключение данной библиотеки.. почему именно ДЛЛ – это ограничение самой Винды на сколько я помню…
Форма:- Код: Выделить всё
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, ExtCtrls,Windows;
type
{ TForm1 }
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
//экспортируем 3 функции из библиотеки с НООК'ами
procedure Start; external 'Hook.dll' name 'Start';
procedure Remove; external 'Hook.dll' name 'Remove';
Function Count1:Integer; external 'Hook.dll' name 'GetCount';
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
Start; //Старт ловушки
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
Remove; //Ой убивают Хэлп ми
end;
end.
DLL:- Код: Выделить всё
library Hook;
{$mode objfpc}{$H+}
uses
windows, messages, IniFiles
{ you can add units after this };
//модуль Classes удален для экономии размера ДЛЛ
var
Count:Integer=0; //Изначально число нажатий = 0
theHook: THandle; //хэндл ловушки для дальнейшего удаления
function MouseHook(nCode, wParam, lParam: integer): Lresult; stdcall;
var Ini:TIniFile;
X:Integer;
begin
if nCode < 0 then
begin //фигня какая то, передаем дальше
result := CallNextHookEx(theHook, nCode, wParam, lParam);
exit;
end;
//(lParam >$8000) - считаем только нажатие клавиш and (GetKeyState(VK_SHIFT)<>0)
if (wParam = VK_A) and (lParam >$8000) then
begin
Ini:=TIniFile.Create('C:\Count.Ini');
X:=Ini.ReadInteger('Count','Value',0);
Ini.WriteInteger('Count','Value',X+1); //тупо подсчет числа нажатий данной клавиши
Ini.Free;
beep(100,100); //Ну для красоты чтоб слышать что идет отлов
end;
result := CallNextHookEx(theHook, nCode, wParam, lParam); //дальше по цепочке
end;
//-------------------------------------------------------------------------
procedure Start;
begin
theHook := SetWindowsHookEx(WH_KEYBOARD, @MouseHook, hInstance, 0); //установка ловушки
if theHook = 0 then
messageBox(0, 'Error!', 'Error!', mb_ok);
end;
//-------------------------------------------------------------------------
procedure Remove;
begin
UnhookWindowsHookEx(theHook); //удаление ловушки
end;
//-------------------------------------------------------------------------
{$R *.res}
Exports
Start index 1 name 'Start',
Remove index 2 name 'Remove';
begin
end.