АндрейБ писал(а):хочу что бы пользоватлеь видел при вводе какой язык установлен?
А кто мне запретит? Я тыцкнул и с вероятностью 90% попал в точку, т.к. ТС хоть и невнятно, но заметил:Почему те, кто тыцкают, берут на себя смелость угадывать один из вариантов?
хочу что бы пользоватлеь видел при вводе какой язык установлен
Twister писал(а):невнятно, но заметил:хочу что бы пользоватлеь видел при вводе какой язык установлен
АндрейБ писал(а):текущий язык в системе
Выражение "в системе" очень часто употребляется всеми категориями пользователей как аналог выражения "на данный момент". "У меня в системе наблюдаются зависоны", к примеру. Поэтому лично мне, так же как и ТС, всё было прекрасно понятно.Хакер писал(а):А ещё он заметил:АндрейБ писал(а):текущий язык в системе
Разобрались. Thread.(или process-specific, вы так и не разобрались)
Не факт. У меня на ноуте вообще нет лампочек-индикаторов.Регистр отображается лампочкой на клавиатуре.
Решение я дал.Хочу что бы в диалоговом окне было указано текущий язык накотором будет писаться в поле.
procedure TForm1.Button1Click(Sender: TObject);
var
KeyState: TKeyboardState;
begin
GetKeyboardState(KeyState);
if (KeyState[VK_CAPITAL] = 0) then
KeyState[VK_CAPITAL] := 1
else
KeyState[VK_CAPITAL] := 0;
SetKeyboardState(KeyState);
end;
Хакер писал(а):Twister, это моветон, писать здесь систематически код на паскале.
Twister писал(а):Тебя это напрягает?
Twister писал(а):Вообще-то, я привожу примеры использования WindowsAPI, понимание которого от языка не зависит.
И еще подскажите по регистру, верхний/нижний - как определить текущий и как установить по умолчанию нужный?
Это точно.Хакер писал(а):Эмоции не к месту.
Twister писал(а):Вообще-то, я привожу примеры использования WindowsAPI, понимание которого от языка не зависит.
Это точно.
я как и Хакер считаю, что в этом разделе примеры должны быть на VB
Читал я правила это во первых, во вторых я никому не поддакиваю, ибо всегда выражаю собственное мнение, а мнение мое таково, что хотя использование других языков и не запрещено, но все-таки странно в разделе посвященном VB, разбирать примеры на паскале. Хорошо, что хоть еще на паскале, а не на Си. Я например не являюсь профессионалом в программировании, я простой любитель и мне по душе примеры на "родном" для меня VB. Поэтому я согласился с мнением Хакера.Twister писал(а):Вот поддакивать только не надо. Правила почитай для начала, а потому уже соглашайся с кем-то там.
Ну вообще никто знания доносить не запрещает, наоборот спасибо. Но все таки хотелось бы, что-бы примеры были на VB, ну а там уж как получится.Twister писал(а): И если понты Хакера (именно понты, т.к. в правилах не запрещено использование не BASIC-языков в тематических разделах) не позволяют здесь доносить знания народу на других языках, то извините - мне здесь делать нечего.
Twister писал(а):Видите ли, я уже много-много лет не пишу на гуано-VB и писать не собираюсь.
Каким событием в форме поймать смену языка?
По регистру вопрос так и остался открытым?
Я же привёл выше код, который переключает CapsLock и узнаёт состояние. Не то?
Функция - одна. И если её правильно вызывать, то и работать она будет хоть из VB, хоть из Delphi. Поэтому Вам не "ждать сведущих", а учиться вызывать API из VB. Возможно, у Вас был косяк с передачей параметров (самая распространённая ошибка). Или в структуру что-то не то писали.Сколько я на бейсике не шаманил с GetKeyboardState , так ни к чему и не пришел
Возможно, у Вас был косяк с передачей параметров (самая распространённая ошибка). Или в структуру что-то не то писали.
Функция - одна. И если её правильно вызывать, то и работать она будет хоть из VB, хоть из Delphi. Поэтому Вам "не ждать сведущих
Option Explicit
Private Declare Function GetKeyboardState Lib "user32" (lppbKeyState As Byte) As Long
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Const KEYEVENTF_KEYDOWN = 0
Private Const KEYEVENTF_KEYUP = &H2
Private Sub CommandButton1_Click()
' Включен ли Caps?
Dim keystat(0 To 255) As Byte
Dim bCapsOn As Boolean
GetKeyboardState keystat(0)
bCapsOn = keystat(vbKeyCapital) = 1
MsgBox bCapsOn
End Sub
Private Sub CommandButton2_Click()
' Переключаем Caps
keybd_event vbKeyCapital, 0, KEYEVENTF_KEYDOWN, 0
keybd_event vbKeyCapital, 0, KEYEVENTF_KEYUP, 0
End Sub
Что за детский наив? "Не знаю как сделать", "не выкладываю публично"... Это Вам что 0day-код какой-то? Всё доступно на просторах сети, информации навалом. Нужно только не лениться.
Сейчас этот форум просматривают: SemrushBot и гости: 28