Kod: Tümünü seç
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Menus, cxLookAndFeelPainters, cxButtons;
type
TForm1 = class(TForm)
Timer1: TTimer;
BtnKare: TcxButton;
Btn1: TcxButton;
Btn2: TcxButton;
Btn3: TcxButton;
Btn4: TcxButton;
Btn5: TcxButton;
Btn6: TcxButton;
Btn7: TcxButton;
Btn8: TcxButton;
Btn9: TcxButton;
BTn0: TcxButton;
BtnBeta: TcxButton;
BtnUtire: TcxButton;
BtnBack: TcxButton;
BtnTab: TcxButton;
BtnQ: TcxButton;
BtnW: TcxButton;
BtnE: TcxButton;
BtnR: TcxButton;
BtnT: TcxButton;
BTnZ: TcxButton;
BtnU: TcxButton;
Btni: TcxButton;
BtnO: TcxButton;
BtnP: TcxButton;
Btnuu: TcxButton;
BtnPlus: TcxButton;
cxButton41: TcxButton;
BtnA: TcxButton;
BtnS: TcxButton;
BtnD: TcxButton;
BtnF: TcxButton;
BtnG: TcxButton;
BtnH: TcxButton;
BtnJ: TcxButton;
BtnK: TcxButton;
BtnL: TcxButton;
Btnoo: TcxButton;
Btnaa: TcxButton;
BtnEnter: TcxButton;
cxButton54: TcxButton;
BtnShiftL: TcxButton;
BTnY: TcxButton;
BtnX: TcxButton;
BtnC: TcxButton;
BtnV: TcxButton;
BtnB: TcxButton;
BtnN: TcxButton;
BtnM: TcxButton;
BtnNokta: TcxButton;
BtnVirgul: TcxButton;
Btntire1: TcxButton;
BTnShiftR: TcxButton;
BtnCtrlL: TcxButton;
BtnAra: TcxButton;
BtnCtrlR: TcxButton;
BtnAlt: TcxButton;
BtnAltGr: TcxButton;
BtnWinR: TcxButton;
BtnWinL: TcxButton;
BTnMs: TcxButton;
BtnEsc: TcxButton;
BtnF1: TcxButton;
BtnF2: TcxButton;
BtnF3: TcxButton;
BtnF4: TcxButton;
BtnF5: TcxButton;
BtnF6: TcxButton;
BtnF7: TcxButton;
BtnF8: TcxButton;
BtnF9: TcxButton;
BtnF10: TcxButton;
BtnF11: TcxButton;
BtnF12: TcxButton;
procedure Timer1Timer(Sender: TObject);
procedure BtnTuslarClick(Sender: TObject);
procedure BtnCapslockClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var
a:PChar;
function SendKeys(ClassOrCaption:PChar;Keys:array of Integer):Boolean;
var
hW:HWND;
Ix:Integer;
begin
hW:=FindWindow(ClassOrCaption,nil);
if hW<=0 then hW:=FindWindow(nil,ClassOrCaption);
Result:=hW>0;
if Result then
begin
Result:=SetForeGroundWindow(hW);
if not Result then Exit;
for Ix:=0 to High(Keys) do KeyBd_Event(Keys[Ix], 0, 0, 0);
for Ix:=High(Keys) downto 0 do Keybd_Event(Keys[Ix], 0, KEYEVENTF_KEYUP, 0);
end;
end;
function ActiveClass: string;
var
Handle: THandle;
Title: string;
begin
Result := '';
Handle := GetForegroundWindow;
if Handle <> 0 then
begin
SetLength(Title, 300);
GetClassName(Handle, PChar(Title), 300);
Result := TrimRight(Title);
end;
end;
function StringToCaseSelect(Selector : string;CaseList: array of string): Integer;
var cnt: integer;
begin
Result:=-1;
for cnt:=0 to Length(CaseList)-1 do
begin
if CompareText(Selector, CaseList[cnt]) = 0 then
begin
Result:=cnt;
Break;
end;
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if not Application.Active then
a:=pchar(ActiveClass); //uygulama aktif değil iken diğer uygulamanın adını alıyorum.
end;
procedure TForm1.BtnTuslarClick(Sender: TObject);//tüm tuşların onclick olayı buraya bağlı
var deger:String;
tus_kodu:Integer;
begin
deger:=AnsiUpperCase((sender as TcxButton).Caption); //butondaki karakteri alıyorum ve büyük harfe dönüştürüyorum. A,B,C,Ü,Ş gibi
tus_kodu:=ord(deger[1]);
case StringToCaseSelect(deger,['ENTER','','TAB','BCKSPC','Ü']) of //case komutunun geliştirilmiş hali butonların isimleri farklı olanları alıp o tuşun acsii kodunu gönderiyorum
0 : SendKeys(a,[13]);
1 : SendKeys(a,[32]);
2 : SendKeys(a,[9]);
3 : SendKeys(a,[8]);
4 : SendKeys(a,[154]);
else
SendKeys(a,[ord(deger[1])]);
end;
end;
end;
end.