Как запустить вирт. клавиатуру в Win7, 8 и 10?
Модератор: Модераторы
Как запустить вирт. клавиатуру в Win7, 8 и 10?
Хочу запустить вирт. клавиатуру в Win7, 8 и 10 с помощью буттона. Как это сделать не подскажите?
Пасиб!
Пасиб!
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
Запустите на выполнение файл osk.exe
Где он находится не скажу, но скорее всего, в папке Windows\system32\ (по крайней мере, для ХР это применимо)
Как запускать смотрите здесь: http://wiki.freepascal.org/Executing_Ex ... rograms/ru
Где он находится не скажу, но скорее всего, в папке Windows\system32\ (по крайней мере, для ХР это применимо)
Как запускать смотрите здесь: http://wiki.freepascal.org/Executing_Ex ... rograms/ru
Лекс Айрин писал(а):Запустите на выполнение файл osk.exe
osk.exe? Что это за файл и где его взять?
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
McLion, он идет в поставке с виндовс. Это как раз и есть вирт. клава.
В ХР от находится, как я уже говорил, в папке Windowssystem32
Чуть позже я попробую написать код.
Добавлено спустя 54 минуты 25 секунд:
у меня вот такой код сработал:
так как в других операционных системах вирт. клава будет вызываться иначе, то нет смысла именно здесь использовать что-то более универсальное.
В ХР от находится, как я уже говорил, в папке Windowssystem32
Чуть позже я попробую написать код.
Добавлено спустя 54 минуты 25 секунд:
у меня вот такой код сработал:
Код: Выделить всё
procedure TMainForm.Button1Click(Sender: TObject);
begin
ShellExecute(0, nil, PChar('osk.exe'),nil,nil,SW_SHOWNORMAL);
end; так как в других операционных системах вирт. клава будет вызываться иначе, то нет смысла именно здесь использовать что-то более универсальное.
Я вот как сделал. Не пойму только, у меня 64 бит, но Lazarus видит ее как 32бит. Поэтому пришлось "$IFDEF WIN64" на "$IFDEF WIN32" поменять и наоборот. osk.exe плоха тем, что там раскладку не переключишь.
Код: Выделить всё
procedure TForm1.Button1Click(Sender: TObject);
begin
{$IFDEF WINDOWS}
{$IFDEF WIN64}
SysUtils.ExecuteProcess('C:\Program Files (x86)\Common Files\microsoft shared\ink\TabTip32.exe', '', []);
{$ENDIF}
{$IFDEF WIN32}
SysUtils.ExecuteProcess('C:\Program Files\Common Files\Microsoft Shared\ink\TabTip.exe', '', []);
{$ENDIF}
{$ENDIF}
end;
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
McLion писал(а):osk.exe плоха тем, что там раскладку не переключишь.
У меня все переключается. Так как у меня ХР, то у меня нет TabTip. И таких как я еще полно.
McLion писал(а): Не пойму только, у меня 64 бит, но Lazarus видит ее как 32бит.
Это уже мелочи.
Лекс Айрин писал(а):McLion писал(а): Не пойму только, у меня 64 бит, но Lazarus видит ее как 32бит.
Это уже мелочи.
Как бы эту мелочь устранить?
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
McLion писал(а):Как бы эту мелочь устранить?
Боюсь, только самым тупым методом -- переименовав файлы соответственно платформе(разрядности). Либо подобное сделать в реестре.
Ok... короче я выбрал этот метод, только есть одна проблемка, не могу закрыть клавиатуру.
Код: Выделить всё
SysUtils.ExecuteProcess('C:\Program Files\Common Files\Microsoft Shared\ink\TabTip.exe', '', []);- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
McLion,
Я не занимался этим вопросом специально, но тут посложнее будет. Необходимо нейти Handle окна с заголовком TabTip и послать ему сообщение WM_Close.
Я не занимался этим вопросом специально, но тут посложнее будет. Необходимо нейти Handle окна с заголовком TabTip и послать ему сообщение WM_Close.
Лекс Айрин писал(а):McLion,
Я не занимался этим вопросом специально, но тут посложнее будет. Необходимо нейти Handle окна с заголовком TabTip и послать ему сообщение WM_Close.
Мда... приехали...
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
McLion, увы(((
Лекс Айрин писал(а):McLion, увы(((
Но все же спасибо за помощь! Я все-равно продвинулся...
Можно узнать почему ты еще на XP юзишь?
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
McLion, потому что это рабочий комп. Обновление оси для него, в силу ряда причин, вредно и трудоемко.
Дома то я пользуюсь Линуксом.
Дома то я пользуюсь Линуксом.
Ааа... понятно...
