Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 1
Регистрация: 23.05.2013
Сообщений: 98
1

При скрытии формы программа не работает

14.04.2015, 13:05. Показов 907. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
прога смотрит раскладку клавиатуры
если она русская - светодиод скрол лок не светится
если любая другая - светится


всё работает когда окно активно и видимо
а если с него переключиться, или скрыть - ничего не работает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
//Application->ShowMainForm = false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
char KBLayout[64];
GetKeyboardLayoutNameA(KBLayout);
if (strcmp(KBLayout,"00000419") == 0)
{       TKeyboardState KeyboardState;
        GetKeyboardState(KeyboardState);
        if (KeyboardState[VK_SCROLL])
        { keybd_event(VK_SCROLL, 0, 0 ,0);
          keybd_event(VK_SCROLL, 0, KEYEVENTF_KEYUP,0);  }
}
else
{
        TKeyboardState KeyboardState;
        GetKeyboardState(KeyboardState);
        if (KeyboardState[VK_SCROLL])
        {   }
        else
        {  keybd_event(VK_SCROLL, 0, 0 ,0);
           keybd_event(VK_SCROLL, 0, KEYEVENTF_KEYUP,0); }
}
}
//---------------------------------------------------------------------------
Добавлено через 12 минут
пишу сее для удобства, иногда при переключении между окнами, раскладка меняется сама, в зависимости от окна, а это раздражает
в угол экрана не всегда смотрю - а светодиод краем глаза увижу)

Добавлено через 7 часов 51 минуту
косяк именно в определении раскладки, светодиодом по таймеру мигать получилось

Добавлено через 5 часов 57 минут
*****************************************************************************
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
 
 
HHOOK hhoks=0;
LRESULT CALLBACK MyShellProc(
int code, // hook code
WPARAM wParam, // event-specific information
LPARAM lParam // event-specific information
)
{
LRESULT ret;
AnsiString S;
if(code < 0)
{
return CallNextHookEx(hhoks,code,wParam,lParam);
}
if(code==HSHELL_LANGUAGE)
Form1->Label4->Caption=" Lang="+IntToHex(LOWORD(lParam),4);
ShowMessage(LOWORD(lParam));
return CallNextHookEx(hhoks,code,wParam,lParam);
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
if(hhoks==0)
hhoks=SetWindowsHookEx(WH_SHELL,(HOOKPROC)MyShellProc,
0,GetWindowThreadProcessId(Form1->Handle, NULL));
 
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{
if(hhoks)UnhookWindowsHookEx(hhoks);
hhoks=0;
}
//---------------------------------------------------------------------------
хук, раскладку выводит, но опять же в активном окне
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.04.2015, 13:05
Ответы с готовыми решениями:

Прекращается цикл при скрытии формы
Всем привет. Такая проблема: когда скрываю первую форму и в ней выполняется цикл, он прекращается....

Пропадает иконка с трэя при скрытии главной формы
Всем доброго времени суток. Друзья, такая ситуация: Скрываю главную форму и показываю вторичную:...

Очистка checkedlistbox при скрытии формы и открытии формы
Здравствуйте! Подскажите, мне нужно чтоб при скрытии формы checkedlistbox очищался, а при открытии...

При скрытии второй формы показать первую
Запускается главная форма. При нажатии кнопки открывается дочернее окно, но при этом главное...

3
737 / 527 / 130
Регистрация: 31.05.2013
Сообщений: 2,975
Записей в блоге: 3
16.04.2015, 12:14 2
может стоит по другому пути пойти...
к примеру во время смены HWND активного окна получать системную раскладку и уже от полученных данных включать диод или нет, без всяких хуков
1
0 / 0 / 1
Регистрация: 23.05.2013
Сообщений: 98
17.04.2015, 06:07  [ТС] 3
Цитата Сообщение от Dinkin Посмотреть сообщение
может стоит по другому пути пойти...
к примеру во время смены HWND активного окна получать системную раскладку и уже от полученных данных включать диод или нет, без всяких хуков
а как это сделать?
я с хуками так и не смог совладать,написал скрипт на VBS записывающий раскладку в текстовый файл
прога вызывает скрипт, читает файл,дёргает светодиод

всё норм, но при её работе курсор постоянно показывал загруженность)
0
737 / 527 / 130
Регистрация: 31.05.2013
Сообщений: 2,975
Записей в блоге: 3
17.04.2015, 14:15 4
Вот пример, кидаете на форму таймер и в него такой код
C
1
2
3
4
5
6
7
8
9
int a,b;
b = (int)GetKeyboardLayout(GetWindowThreadProcessId(GetForegroundWindow(),0));
if(b== 68748313 && a!=b)
 {
   a= b;
   keybd_event(     VK_SCROLL   , 0x45, KEYEVENTF_EXTENDEDKEY | 0, 0 );
   keybd_event(     VK_SCROLL   , 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
 
 }
Если раскладка RU, значит скрол-лук будет мигать
0
17.04.2015, 14:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.04.2015, 14:15
Помогаю со студенческими работами здесь

Сохранение свойств при скрытии и открытии формы
Всем привет, имеется две формы form1 и form2. Проблема вот в чем: при запуске программы...

Пропадает значок с панели задач при скрытии главной формы
Вопрос такой. Есть главная форма авторизации...если все успешно то открывается другая форма. Если я...

При скрытии главной формы пропадает значок на панели задач
Если скрыть первую форму, а вторую открыть то на панели задач приложение пропадёт. Как сделать так...

При скрытии основной формы пропадает значок на панели задач
Всем привет! Делаю программу, в функционал которой входит тестирование и создание пользовательского...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru