من با یکم ابتکار تغییر زبان رو یکجور دیگه درست کردم البته باید حرفه ای درستش میکردم که نکردم میتونستم لیست تمامی زبانها رو بگیرم و بر اساس اون حلقه دور بزنه و عمل تغییر زبان با شبیه سازی ALT + SHIFT انجام بشه که این کد تنها برای ویندوزهایی که دو زبان نصبه کار میکنه و دیگه تو ویندوز 7 مکثی در کار نیست.
procedure TForm1.Button1Click(Sender: TObject);
var
Change : String;
Select : String;
GKLN: array [0..8] of Char;
i : Integer;
begin
Change := 'FA';
GetKeyboardLayoutName(GKLN);
if GKLN='00000409' then Select:='EN';
if GKLN='00000429' then Select:='FA';
if Select <> Change then
for i := 1 to 1 do
GetKeyboardLayoutName(GKLN);
if GKLN='00000409' then
keybd_event(VK_Menu,0,0,0);
keybd_event(VK_SHIFT,0,0,0);
keybd_event(VK_Menu,0,KEYEVENTF_KEYUP,0);
keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);
end;
ضمنا ممنون میشم یکی از دوستان سورس نمونه کدی رو که جناب علی کشاورز دادن رو برام پیوست کنن آخه من خواستم از این کد استفاده کنم که نشد چون مدام خطا میداد. یک دنیا ممنونتون میشم اگه اینکار رو بکنید.