Picproje Elektronik Sitesi

PROGRAMLAMA DİLLERİ => Delphi => Konuyu başlatan: Zoroaster - 12 Mart 2017, 06:54:05

Başlık: Ingilizce klavye secmek
Gönderen: Zoroaster - 12 Mart 2017, 06:54:05
Yazacagim program, isletim sisteminde birden fazla klavye secenegi varsa klavyeyi ingilizce moda alsin istiyorum.

Nasil yapabilirim?
Başlık: Ynt: Ingilizce klavye secmek
Gönderen: malaga - 12 Mart 2017, 10:51:34
Denetim masasında klavye ve dil seçeceğinden varsayılan klavye ve dil seçeceğini İngilizce yapıyorsun sorun kalmıyor
Başlık: Ynt: Ingilizce klavye secmek
Gönderen: Zoroaster - 12 Mart 2017, 11:41:05
Bahsettiginiz ayari ben kurcalayabiliyorsam baskasi da kurcalar ve sorunum cozulmemis olur.
Başlık: Ynt: Ingilizce klavye secmek
Gönderen: sovalye - 12 Mart 2017, 17:47:08
https://social.msdn.microsoft.com/Forums/en-US/d121f068-3f39-4fe8-9801-9542fb5dbb53/any-idea-how-to-change-system-keyboard-language-with-vba?forum=isvvba (https://social.msdn.microsoft.com/Forums/en-US/d121f068-3f39-4fe8-9801-9542fb5dbb53/any-idea-how-to-change-system-keyboard-language-with-vba?forum=isvvba)

Başlık: Ynt: Ingilizce klavye secmek
Gönderen: malaga - 12 Mart 2017, 20:05:26
User mode kullanıcı açarsan hiçbir değişiklik yapamaz
Başlık: Ynt: Ingilizce klavye secmek
Gönderen: Zoroaster - 13 Mart 2017, 05:21:58
@malaga cozum onerilerin benim kafa yapima cok ters.

Benim programla isi biten kisi word kullanmak ve klavye degistirmek isterse ne olacak?
Başlık: Ynt: Ingilizce klavye secmek
Gönderen: malaga - 13 Mart 2017, 11:24:26
ozaman sunu yap win ini dosyasinda klavye ayarları ve secenekleri var program ile bu dosyaya ulaş orda degişitir programdan çıkarkende bu dosyayı eski haline getirebilirsen yazılımında ozaman problem ortadan kalkar. win.ini sytem.ini de olabilir tam hatırlamıyorum budosyaların birinde bu ayarlar var ordan deneme yanılma yöntemiyle denersin kolay gelsin
Başlık: Ynt: Ingilizce klavye secmek
Gönderen: ÜC - 13 Mart 2017, 13:16:21
Kayıt defterinde (Regedit) bir anahtar altındaki diziyi değiştirmeniz yeterli Bülent hocam

HKEY_CURRENT_USER\Keyboard Layout\Preload  anahtarında 1 nolu dize değerini

d000041f  yaparsasnız Tükçe F klavye olur
0000041f yaparsasnız Tükçe Q klavye olur
00000409 yaparsasnız ABD olurmuş (hiç değiştirmedim)

Hocam siz sanırım Delphi kullanıyordunuz , programla regedit ayarlarını değiştirerek yapabilirsiniz. .NET olsa kodları var ama Delphi maalesef.

Hocam ben XP üstüne çıkamadım bu bilgilerle XP üstü sistemler regedite yazmaya müsaade ediyormu bilmiyorum.
Klavyenin değişebilmesi için PC nin yeniden başlatılması yada kullanıcı değiştirilmesi lazım.
Başlık: Ynt: Ingilizce klavye secmek
Gönderen: engerex - 13 Mart 2017, 20:14:04

Merhaba,


Bunun bir kaç yöntemi var.


Örnek olması açısından;
Sisteme tanımlanmış klavye dillerini listeler ve istediğinizi seçmenizi sağlar. Seçim anlık uygulanır. Windows 10 pro 64bit ve Delphi 10.1 ile denendi, başarılı.



//Bir adet ComboBox ekleyin ve FormCreate oluşturun.
//Windows 10 pro 64bit ve Delphi 10.1 ile denendi, başarılı.
procedure GetKLList(List: TStrings);
var
AList : array [0..9] of Hkl;
AklName: array [0..255] of Char;
i: Longint;
begin
List.Clear;
for i := 0 to GetKeyboardLayoutList(SizeOf(AList), AList) - 1 do
begin
GetLocaleInfo(LoWord(AList), LOCALE_SLANGUAGE, AklName, SizeOf(AklName));
List.AddObject(AklName, Pointer(AList));
end;
end;


procedure TForm1.ComboBox1Change(Sender: TObject);
begin
with Sender as TComboBox do
begin
ActivateKeyboardLayout(Hkl(Items.Objects[ItemIndex]), 0);
end;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
GetKLList(ComboBox1.Items);
end;