On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение



Пост N: 1
Зарегистрирован: 16.12.07
ссылка на сообщение  Отправлено: 16.12.07 15:46. Заголовок: Нужна помощь - вывести на консольиндикатор расскладки калавиатуры


Есть ли возможность (пример программы) вывести индикатор какая течущая расскладка клавиатуры.
Роботаю в Harbour

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 44 , стр: 1 2 3 All [только новые]


постоянный участник


Пост N: 326
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 16.12.07 17:58. Заголовок: Просто Вася пишет: ..


Просто Вася пишет:

 цитата:
Есть ли возможность (пример программы) вывести индикатор какая течущая расскладка клавиатуры.


Есть возможность используя Win API узнать какая раскладка клавиатуры активна, а как вывести индикатор - это дело техники и вкуса
Можно использовать, как образец, пример Григория Филатова LangIndicator из поставки MiniGUI Ex.

Фрагменты кода взяти именно оттуда:

Local nNewMode := GetKeyboardMode()

if nNewMode != nOldMode

nOldMode := nNewMode

DO CASE
CASE nNewMode == 1049 // Russian

CASE nNewMode == 1033 // English

CASE nNewMode == 1058 // Ukrainian

CASE nNewMode == 1031 // German

CASE nNewMode == 1034 // Spanish

CASE nNewMode == 1036 // French

CASE nNewMode == 1045 // Polish

OTHERWISE

ENDCASE


Т.е. с помощью GetKeyboardMode() получаем текущий режим клавиатуры для foreground окна ( окна с которым работает пользователь) и решаем что с этим делать.
А вот и реализация функции GetKeyboardMode()

#pragma BEGINDUMP

#include <windows.h>
#include "hbapi.h"
#include "hbapiitm.h"


HB_FUNC( GETKEYBOARDMODE )
{
HKL kbl;
HWND CurApp;
DWORD idthd;
int newmode;

CurApp=GetForegroundWindow();
idthd=GetWindowThreadProcessId(CurApp,NULL);
kbl=GetKeyboardLayout(idthd);
newmode=(int)LOWORD(kbl);
hb_retnl(newmode);
}

#pragma ENDDUMP



Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2
Зарегистрирован: 16.12.07
ссылка на сообщение  Отправлено: 17.12.07 21:29. Заголовок: Пётр, большое спасиб..


Пётр, большое спасибо за подсказку, но я только начал переход с Сlipper на Harbour
Все свои программы (наработки) котрые накопились с 1990 года ставлю на win платформу.
Большое спасибо (даже огромное) кто поддерживает этот проект. Я только разобрался как исходные тексты сlippera (Sum87) откампелировать под Harbour + Borland C.
Уже разобрался с печатью. Только у меня дальше досовское консольное окно. То что ты написал выше для меня сложно понять. Куда и как всё это лепить. Я не пользуюсь MiniGUI. У меня Harbour beta build 0.99-3 intl
версия. Прошу не смеятся, на clipper пишу довольно давно 17 лет, до этого времени написано много задач по управлению базами даных. Если тебя не затруднит мучится с таким нюбом по Harbour как я,(тяжёлое досовское наследие) расскажи поледовательно как и куда чё впихивать. Заранее благодарен. С наступающими тебя праздниками.
С уважение Игорь.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 378
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.12.07 22:02. Заголовок: Просто Вася пишет: ..


Просто Вася пишет:

 цитата:
Все свои программы (наработки) котрые накопились с 1990 года ставлю на win платформу.



Советую переходить на xHarbour, т.к. он более совместим с Clipper'om

Как перенести проект под xXarbour смотри
http://www.clipper.fastbb.ru/?1-4-165-00000089-000-0-0-1160258031

И вообще прочитай что тут написано и сразу легче станет

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 327
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 18.12.07 03:40. Заголовок: Просто Вася пишет: ..


Просто Вася пишет:

 цитата:
Куда и как всё это лепить.


Всё это надо просто запихнуть в один файл, например keyblayout.prg и откомпилировать

/* keyblayout.prg */
PROCEDURE main()
LOCAL nMode := GetKeyboardMode()
LOCAL cLang

SWITCH nMode
CASE 1049
cLang := "RU"
EXIT

CASE 1033
cLang := "EN"
EXIT

CASE 1058
cLang := "UA"
EXIT

OTHERWISE
cLang := "??"
END SWITCH

? "Текущая раскладка: ", cLang

RETURN

#pragma BEGINDUMP

#include <windows.h>
#include "hbapi.h"
#include "hbapiitm.h"

HB_FUNC( GETKEYBOARDMODE )
{
HKL kbl;
HWND CurApp;
DWORD idthd;
int newmode;

CurApp=GetForegroundWindow();
idthd=GetWindowThreadProcessId(CurApp,NULL);
kbl=GetKeyboardLayout(idthd);
newmode=(int)LOWORD(kbl);
hb_retnl(newmode);
}

#pragma ENDDUMP

/* end-of-file */

Чуть позже появится понимание, как это работает
Если коротко и без деталей - то Harbour транслирует свой код в соответствующий C код и записывает его в *.с файл (keyblayout.с), который потом обрабатывается (компилируется, линкуется) используемым С-компилятором ( в данном случае bcc32 ).
Код, который находится в prg файле между директивами
#pragma BEGINDUMP
..
#pragma ENDDUMP
функция написанная на языке С - не транслируется, а просто переносится без изменений в результирующий С файл.



 цитата:
Я не пользуюсь MiniGUI


В данном случае не имеет значения используется GUI или консоль.
Но я рекомендую скачать MiniGUI Ex. (ссылку для скачивания можно найти на этом форуме), во-первых в составе Minigui можно найти Harbour Devel build 1.1-1, во-вторых много интересных и полезных примеров, исходников с использованием Win API, которые можно использовать и для GUI или для консоли.

Что касается выбора Harbour или xHarbour, то лично я остановился на Harbour и ничуть не жалею.
Для меня совместимость с Clipper'om стоит не на первом месте, но единственное преимущество xHb в совместимости - это чуть лучшая реализация TBrowse, а если взять к примеру поддержку оконной системы из CT - xHarbour отдыхает.

Просто Вася пишет:

 цитата:
С наступающими тебя праздниками.


Спасибо ! Взаимно !



Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 3
Зарегистрирован: 16.12.07
ссылка на сообщение  Отправлено: 19.12.07 20:57. Заголовок: Впихнул значит я энт..


Впихнул значит я энтот код, что ты написал, в свою програму. Вызов этого модуля прописал в модуль опроса клавиатуры. Показал где на экране высвечивать cLang. Откампилирова, пролинковал, загрузил свою прогу. Увидел на екране "EN" но никакой реакции на смену расскладок. В виндовзе расскладка меняется на консоле стоит "EN".
Не знаю что делать, а как мало для счастья человека, чтоб значок расскладки на экране менялся. Видать что-то не работает в функции GETKEYBOARDMODE.
Пётр - помоги если можешь, проверь правильность работы модуля.
Если верхняя часть мне понятна то то, что между
#pragma BEGINDUMP
..
#pragma ENDDUMP
тёмный лес.
ПАМАГИТЕ Л Ю Д И................

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 328
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 19.12.07 23:03. Заголовок: Не хочу повторяться,..


Не хочу повторяться, но я писал:
"Есть возможность используя Win API узнать какая раскладка клавиатуры активна, а как вывести индикатор - это дело техники и вкуса".

Как ты себе представляешь мою помощь?
GETKEYBOARDMODE работает правильно, но она всего лишь узнает какая раскладка клавиатуры активна в момент вызова функции.
Как отслеживать состояние клавиатуры с помощью этой функции - использовать цикл, таймер, background task или MT в xHarbour - это дело техники. Как и куда выводить - дело вкуса.
Мой совет - делай то, что умеешь и так, как умеешь.
И скачай таки MiniGUI. Там найдешь функции (клас) для работы с таймером.


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 1
Зарегистрирован: 20.12.07
ссылка на сообщение  Отправлено: 20.12.07 09:43. Заголовок: Для проверки я сдела..


Для проверки я сделал маленький модуль по циклу. Может я чегото не понимаю, но индикатор расскладки не меняется.

PROCEDURE MAIN()
i=0
DO WHILE .T.
DO keyblayout
IF i=27 && Выход из цикла
EXIT
ENDIF
i=INKEY()
ENDDO
RETURN

PROCEDURE keyblayout()
LOCAL nMode := GETKEYBOARDMODE()
LOCAL cLang

SWITCH nMode
CASE 1049
cLang := "RU"
EXIT

CASE 1033
cLang := "EN"
EXIT

CASE 1058
cLang := "UA"
EXIT

OTHERWISE
cLang := "??"
END SWITCH

? "Текущая раскладка: ", cLang

RETURN
#pragma BEGINDUMP

#include <windows.h>
#include "hbapi.h"
#include "hbapiitm.h"

HB_FUNC( GETKEYBOARDMODE )
{
HKL kbl;
HWND CurApp;
DWORD idthd;
int newmode;

CurApp=GetForegroundWindow();
idthd=GetWindowThreadProcessId(CurApp,NULL);
kbl=GetKeyboardLayout(idthd);
newmode=(int)LOWORD(kbl);
hb_retnl(newmode);
}

#pragma ENDDUMP

*...............................

может я чего-то не дописал, функция работает постоянно в цикле, но реакции на смену расскладки нет. Ещё интересно что я заметил, иногда на старте высвечивается расскладка "EN" иногда "RU".

Пробовал функцию HB_FUNC( GETKEYBOARDLAYOUTNAME )
{
char sBuff[KL_NAMELENGTH];
GetKeyboardLayoutName( (LPTSTR)sBuff );
hb_retc(sBuff);
}


тоже не покатило..



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 331
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 20.12.07 23:18. Заголовок: Да все правильно - т..


Да все правильно - т.е. ничего не правильно

К сожалению с консолью этот код не работает, хотя в GUI все Ок.
Если для тебя так важно вывести этот индикатор в консоли то надо поступать по другому.

К примеру так


#define KL_PREV 0
#define KL_NEXT 1

PROCEDURE main()
LOCAL i := 0
LOCAL sVar := space(20)
CLEAR SCREEN

DO WHILE .T.
keyblayout( i := INKEY() )

IF i == 27 && Выход из цикла
EXIT
ENDIF

ENDDO

RETURN

PROCEDURE keyblayout( key )
STATIC nLayout := 0
LOCAL cLang

IF key == -1 //F2
nLayout := ActivateKeyboardLayout(KL_NEXT)
ELSEIF key == -2 //F3
nLayout := ActivateKeyboardLayout(KL_PREV)
ENDIF

nLayout := ActivateKeyboardLayout(KL_NEXT)
ActivateKeyboardLayout(KL_PREV)

SWITCH nLayout
CASE 1049
cLang := "RU"
EXIT

CASE 1033
cLang := "EN"
EXIT

CASE 1058
cLang := "UA"
EXIT

OTHERWISE
cLang := "??"
END SWITCH

? "Текущая раскладка: ", cLang

RETURN

#pragma BEGINDUMP

#include <windows.h>
#include "hbapi.h"
#include "hbapiitm.h"

HB_FUNC( ACTIVATEKEYBOARDLAYOUT )
{
HKL kbl;

kbl = ActivateKeyboardLayout( (HKL) hb_parni(1), 0 );

hb_retni(LOWORD(kbl));
}

#pragma ENDDUMP

Сразу предупреждаю, что код не совсем рабочий - просто для примера и ActivateKeyboardLayout() надо переписать по другому, это я так, на скорую руку набросал.
Сегодня уже думать не хочется




Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 42
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 11.02.08 20:53. Заголовок: Да, в консоли GETKEY..


Да, в консоли GETKEYBOARDMODE выдает только 1033. Нет какого-нибудь способа в консоли посмотреть раскладку?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 47
Зарегистрирован: 27.04.06
ссылка на сообщение  Отправлено: 11.02.08 22:37. Заголовок: Proc Main() ? "..


Proc Main()
? "GetConsoleCP = ", GetConsoleCP()
? "GetConsoleOutputCP = ", GetConsoleOutputCP()
Return


#pragma BEGINDUMP

#include <windows.h>


HB_FUNC( GETCONSOLECP )
{
hb_retnl( GetConsoleCP() );
}


HB_FUNC( GETCONSOLEOUTPUTCP )
{
hb_retnl( GetConsoleOutputCP() );
}

#pragma ENDDUMP


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 10
Зарегистрирован: 10.02.08
ссылка на сообщение  Отправлено: 11.02.08 23:07. Заголовок: Andrey пишет: Совет..


Andrey пишет:

 цитата:
Советую переходить на xHarbour, т.к. он более совместим с Clipper'om

Как перенести проект под xXarbour смотри
http://www.clipper.fastbb.ru/?1-4-165-00000089-000-0-0-1160258031

И вообще прочитай что тут написано и сразу легче станет



Andrey, ссылка нерабочая. А очень хочется почитать, что там было написано, чтобы сразу стало легче.
Я ведь тоже, как Игорь, только-только перехожу на xHarbour.
Можно ли восстановить эту ссылку?
Спасибо!

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 43
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 12.02.08 00:06. Заголовок: saulius пишет: ? &#..


saulius пишет:

 цитата:
? "GetConsoleCP = ", GetConsoleCP()
? "GetConsoleOutputCP = ", GetConsoleOutputCP()



Всегда выдается:
866
866

Могу предположить, что это кодовая страница.
Мне нужно знать какой язык у меня включен в настоящее время: русский или английский.

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 12.02.08 00:53. Заголовок: Getlangstate(). Если..


Getlangstate(). Если возвращает 0 - русский

Спасибо: 0 
Цитата Ответить
постоянный участник




Пост N: 478
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.02.08 04:27. Заголовок: TakOj пишет: Andrey..


TakOj пишет:

 цитата:
Andrey, ссылка нерабочая. А очень хочется почитать, что там было написано, чтобы сразу стало легче.
Я ведь тоже, как Игорь, только-только перехожу на xHarbour.
Можно ли восстановить эту ссылку?



Я в осадке ..... Это что форум урезали, и давно это происходит ?????
Я даже не знаю как восстановить ссылку, это к модераторам.
Но я тоже надеялся, что с форума ничего не пропадает, а зря....

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 44
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 12.02.08 05:54. Заголовок: fil пишет: Getlangs..


fil пишет:

 цитата:
Getlangstate(). Если возвращает 0 - русский



А где эту функцию взять? Не нашел такую.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 832
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 12.02.08 12:21. Заголовок: Andrey пишет: Я в о..


Andrey пишет:

 цитата:
Я в осадке ..... Это что форум урезали


я ни чего не трогал и не удалял , возможно перенес , но не тёр 100 пудово.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 13
Зарегистрирован: 10.02.08
ссылка на сообщение  Отправлено: 12.02.08 12:45. Заголовок: Dima Dima! А это в..


Dima

Dima! А это ваш сайт "http://spravki.net.ru/clipper/"? Если да, то вопрос по ссылке на
"Программа просмотра NG под Windows". Там что то совсем другое.

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 12.02.08 14:43. Заголовок: rvu А где эту функц..


rvu

 цитата:
А где эту функцию взять? Не нашел такую.



давай адрес



Спасибо: 0 
Цитата Ответить
постоянный участник


Пост N: 68
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 12.02.08 14:49. Заголовок: fil пишет: давай ад..


fil пишет:

 цитата:
давай адрес



Если не трудно: mail.trash(AT)mail.ru

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 45
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 12.02.08 14:55. Заголовок: rvu@ru.ru Только в ..


rvu@ru.ru

Только в теме письма что-нибудь напиши, а то на эту почту столько спама валится

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 12.02.08 15:08. Заголовок: rvu и PSP к ночи и..


rvu и PSP
к ночи из дома перешлю на работе инет подох

Спасибо: 0 
Цитата Ответить
постоянный участник


Пост N: 69
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 12.02.08 15:11. Заголовок: Ok. Пасиб...


Ok. Пасиб.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 46
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 12.02.08 15:21. Заголовок: Спасибо!..


Спасибо!

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 47
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 13.02.08 15:07. Заголовок: Не могу разобраться...


Не могу разобраться. Насколько я понял, нужно это прописать в программе:

DLL32 FUNCTION GetLangState() AS _INT ;
PASCAL LIB "SUPP\Langenru.DLL"

Компилятор выдает "syntax error at 'FUNCTION'".

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 13.02.08 15:11. Заголовок: rvu В любом .prg Ва..


rvu
В любом .prg Вашего проекта вне всяких процедур. Тока SUPP\ убрать(это путь где лежит DLL)

Спасибо: 0 
Цитата Ответить





Пост N: 48
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 13.02.08 15:25. Заголовок: fil пишет: В любом ..


fil пишет:

 цитата:
В любом .prg Вашего проекта вне всяких процедур. Тока SUPP\ убрать(это путь где лежит DLL)



Так и делал. Не пойму почему не работает.

При компиляции пишет:
Error E0030 Syntax error: "syntax error at 'FUNCTION'"


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 425
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 13.02.08 15:42. Заголовок: Вызов функции из dll..


Вызов функции из dll в стиле FWH

#include "hbdll.ch" делали?


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 49
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 13.02.08 16:06. Заголовок: Петр, спасибо! Я дог..


Петр, спасибо! Я догадывался что чего-то не хватает, только не знал чего.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 50
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 13.02.08 16:25. Заголовок: fil пишет: Getlangs..


fil пишет:

 цитата:
Getlangstate(). Если возвращает 0 - русский



Возвращает и при английском и при русском 1. Может она тоже в консоли не работает?

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 13.02.08 16:31. Заголовок: rvu Не знаю, в кон..


rvu
Не знаю, в консоли не работал

Спасибо: 0 
Цитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 13.02.08 16:40. Заголовок: rvu Смотри регисстр..


rvu
Смотри регисстр HKEY_CURRENT_USER
PowerCfg
sLanguage
RUS/ENG

Спасибо: 0 
Цитата Ответить
администратор




Пост N: 932
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 02.10.08 16:05. Заголовок: Петр пишет: #pragma..


Петр пишет:

 цитата:
#pragma BEGINDUMP

#include <windows.h>
#include "hbapi.h"
#include "hbapiitm.h"

HB_FUNC( ACTIVATEKEYBOARDLAYOUT )
{
HKL kbl;

kbl = ActivateKeyboardLayout( (HKL) hb_parni(1), 0 );

hb_retni(LOWORD(kbl));
}

#pragma ENDDUMP



Действительно что то не то ;)
Можешь нормально эту функцию написать ?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 3
Зарегистрирован: 02.10.08
ссылка на сообщение  Отправлено: 03.10.08 12:52. Заголовок: Изините, а мона свои..


Изините, а мона своих 2 копейки?
У мну вот так работает:
HB_FUNC( SMENKL )
{
TCHAR m_PreviousLayout[KL_NAMELENGTH] ;
LPSTR szMsg = "";

GetKeyboardLayoutName(m_PreviousLayout);

if( PCOUNT() )
{
szMsg = _parc( 1 );
if ( ( *(szMsg) == 'R' )
{
LoadKeyboardLayout( "00000419", KLF_ACTIVATE ) ;
}
else if ( ( *(szMsg) == 'E' )
{
LoadKeyboardLayout( "00000409", KLF_ACTIVATE ) ;
}
}
_retc(m_PreviousLayout);
}

Правда переключаю только RUS-ENG, но мну больше и не надо...

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 935
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 03.10.08 17:22. Заголовок: Loach пишет: У мну ..


Loach пишет:

 цитата:
У мну вот так работает


у мну это собрать не получилось.....

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 4
Зарегистрирован: 02.10.08
ссылка на сообщение  Отправлено: 05.10.08 13:40. Заголовок: Dima пишет: у мну э..


Dima пишет:

 цитата:
у мну это собрать не получилось..



Ооойй... посыпаю голову пеплом... Как-то скушался кусок кода... Вот так должно собраться:
#PRAGMA BEGINDUMP
#include "Windows.h"
#include "ClipApi.h"

HB_FUNC( SMENKL )
{
TCHAR m_PreviousLayout[KL_NAMELENGTH] ;
LPSTR szMsg = "";

GetKeyboardLayoutName(m_PreviousLayout);

if( PCOUNT() )
{
szMsg = _parc( 1 );
if ( ( *(szMsg) == 'R' ) && ( *(m_PreviousLayout+7)!='1' ) )
{
LoadKeyboardLayout( "00000419", KLF_ACTIVATE ) ;
}
else if ( ( *(szMsg) == 'E' ) && ( *(m_PreviousLayout+7)!='0' ) )
{
LoadKeyboardLayout( "00000409", KLF_ACTIVATE ) ;
}
}

_retc(m_PreviousLayout);
}
#PRAGMA ENDDUMP

А вызываю функцию примерно так:
if !(smenkl()=='00000419')
smenkl("RUS")
endif


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 938
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.10.08 14:12. Заголовок: Loach Собралось. Пр..


Loach
Собралось.
Применение ей пока не вижу.
У меня в фоне крутится функция , откуда я и думал вызывать SMENKL
Хотелось бы находясь в любом месте задачи при смене раскладки клавы отображать ее статус (rus/eng) ,
с помощью SMENKL я не вижу пока способа реализации.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 5
Зарегистрирован: 02.10.08
ссылка на сообщение  Отправлено: 06.10.08 08:40. Заголовок: Знасицца так. По пов..


Знасицца так. По поводу применения, так я применяю ету штуку несколько для другого: У меня бровзится база, в которой например 2 поля, если конкретно, то код болезни (латиница) и наименование заболевания (рус). Я пользую эту функцию, чтобы при смене сортировки для пользователя сразу менялась раскладка клавиатуры (для последующего seekа). Все для народа...
По поводу Вашей задачи, то вызывая Smenkl() без параметров, обратно получаете текущую раскладку: если '00000419', то русская, если '00000409', - более английская. Ну и соответственно, вызываете из фоновой функции периодически Smenkl и отображаете полученное.... Или я чего-то не понял в постановке задачи...

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 947
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 06.10.08 09:14. Заголовок: Loach пишет: По пов..


Loach пишет:

 цитата:
По поводу Вашей задачи, то вызывая Smenkl() без параметров


Так и сделал , все время кажет 00000409

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 996
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 06.10.08 10:37. Заголовок: Dima пишет: Хотелос..


Dima пишет:

 цитата:
Хотелось бы находясь в любом месте задачи при смене раскладки клавы отображать ее статус (rus/eng) ,



Дима, а зачем дублировать функции windows ? Пусть она сама и показывает раскладку. А программу запускать не в полноэкранном, а в оконном режиме, чтобы была видна нижняя строка taskbar

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 948
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 06.10.08 11:05. Заголовок: Pasha Дело в том чт..


Pasha
Дело в том что программа консольная и запускается на мини ноуте , экран там очень маленький (ноты фирмы ASUS)
Если еще и в окне сделать то будет мелковато ;)
Да и не каждому объяснишь как настроить окно как надо.
Впрочем подумаю , спасибо !!!

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 6
Зарегистрирован: 02.10.08
ссылка на сообщение  Отправлено: 06.10.08 16:45. Заголовок: Dima пишет: Так и с..


Dima пишет:

 цитата:
Так и сделал , все время кажет 00000409


Ну не знаю, у меня все работает и на W98, и на W2k и есесенно на XP...
Пы.Сы. У меня xHarbour 0.99.51+FWH 2.5 Может в этом дело? Хотя это же Сишная функция...

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 951
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 06.10.08 16:53. Заголовок: Loach Вот попробуй...


Loach
Вот попробуй.
Proc main()
HB_IdleAdd({ @Test(), 100} )
SET BACKGROUND TASKS ON
wait

return
***********
Func Test()
LOCAL nOldRow := Row()
LOCAL nOldCol := Col()
@ 24,0 SAY smenkl()
SetPos( nOldRow, nOldCol )
RETURN

PS
Возможно я что то делаю не так........

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 7
Зарегистрирован: 02.10.08
ссылка на сообщение  Отправлено: 07.10.08 09:14. Заголовок: Dima пишет: Вот поп..


Dima пишет:

 цитата:
Вот попробуй.


Попробовал... Действительно нэ работает... Очевидно, все дело в консоли... Даже и не знаю что предложить...

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 62
Зарегистрирован: 05.11.05
ссылка на сообщение  Отправлено: 13.11.09 14:24. Заголовок: Новых идей по теме н..


Новых идей по теме не появилось?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 44 , стр: 1 2 3 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 6
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет