Тема: OFF: Продолжение AHK: Как отловить переключение раскладки клавиатуры
Сюда переношу продолжение дискуссии из AHK v2: Как отловить переключение раскладки клавиатуры
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Серый форум → Общение → Script-Coding.com community → OFF: Продолжение AHK: Как отловить переключение раскладки клавиатуры
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Сюда переношу продолжение дискуссии из AHK v2: Как отловить переключение раскладки клавиатуры
teadrinker
Есть идея.
И опять же возможно что ОНА из разряда
"Если бы молодость знала,
Если бы старость могла." (R)
т.е. уже была, где либо озвучена, а я не знал..
Короче. Делаем своё виртуальное окно для ввод с клавы. Например текстовое окно.
Посылаем туда кодом код клавиши. Это наше вирт окно нам отвечает какой символ она там впечатала. И выдаёт его нам. По этому символу можно определить, какая раскладка в данный момент времени установлена в трее.
Такая "тема" где либо звучала в предложениях по отлову?
ремарка...
так типа случайно пришло на ум пока зевал...
пока зевал...
Знаете, я слышал, когда человек зевает, это говорит о недостатке кислорода. Подумайте сами, может ли в таком состоянии прийти на ум что-то стоящее?
Какая связь между раскладкой в вашем конкретном окне и в любом другом?
Какая связь между раскладкой в вашем конкретном окне и в любом другом?
хммм..
Странно, я был уверен, что в моём примере всё понятно "... что поймёт не только дворник, но даже карапуз.." (R)...
Короче. Открываете блокнот. Пишите там букву "А"/"F" в зависимости какая у вас в этот момент времени установлена раскладка в трее, у вас там появиться символ "А" или "F".
По коду символа сразу становиться понятно какая раскладка.
Правда программно, нужно посылать код клавиши...
А получать от вирт проги букву-кодировку. Кодировка буквы, и будет нам указывать автоматом на раскладку в трее.
Я так и не понял, какой алгоритм целиком вы предлагаете. Ну, даже если вы узнаете раскладку в каком-то определённом окне, как вы узнаете, какая раскладка в любом другом? Вы знаете, что раскладка может быть индивидуальной для каждого окна? И как это должно перехватывать событие смены раскладки в любом окне? Перед ответом подойдите к окну, подышите. ![]()
Все у себя в своей голове накрутили чёрте что..
А всего то надо было прочесть внимательно хотелку автора.
Как это сделать без использования таймера, на событиях windows?
Скажем, я хочу сделать свой простой индикатор текущего языка в виде флагов в трее.
1- Програмным методом, без таймера, только пробным вводом текста в вирт окно текста. Этим вы узнаете текущее значение в трее.
2- вместо системного "окна" с буквами в трее, туда графику - никак.
3- можно своё окно в трее с флагом.
Вы знаете, что раскладка может быть индивидуальной для каждого окна? И как это должно перехватывать событие смены раскладки в любом окне?
Знаю. Автору не ЭТО надо было. Ему именно в трее системное.
1- Програмным методом, без таймера, только пробным вводом текста в вирт окно текста. Этим вы узнаете текущее значение в трее.
А полностью алгоритм можете описать? В какой момент посылать пробный ввод текста в вирт окно? Какая связь между раскладкой в вашем тестовом окне, и в окне, в котором пользователь собирается печатать?
Ему именно в трее системное.
Сами-то поняли, что написали? Что в трее системное?
AlexPORT
https://stackoverflow.com/questions/177 … ystem-tray
-------------
В Windows, если вы установите Visual Studio, среди инструментов Visual Studio Tools будет полезный инструмент под названием Spy++. По сути, это инструмент, который показывает все окна и позволяет видеть, какие сообщения получает конкретное окно.
введите описание изображения здесь
С помощью этого инструмента вы можете увидеть, что вся панель, на которой расположены кнопка «Пуск», ярлыки, панель задач, часы и т. д., называется «Shell_TrayWnd». Вы можете воспользоваться меню «Найти», чтобы найти нужное окно, просто наведя курсор на любое из них.
Само окно в трее называется SysPager 000100D2
-------
и вдогонку
https://www.manhunter.ru/assembler/1639 … _tree.html
Гений, однозначно.
Осталось реверснуть современный explorer.exe - и дело в шляпе! ![]()
Вообще странно.
Написал в VB6 через API виев окон.
Часы там -->

вижу,
SysPager есть. А внутри нифига. Где переключалка языка?
Есть нетворк, настройки его... Всё есть. Даже мой оповещатель пространства и размер RAM диска тоже есть. А языковой панельки нет.
Где копать?
UPD
Мне что то подсказывает что
TrayInputIndicatorWClass и есть этот индикатор языка.
НЕ SysPager а именно TrayInputIndicatorWClass стоящий ниже SysPager
А уже после него идёт часы.
Как по логике, я и вижу в трее.
Написал в VB6 через API виев окон.
Прям вот так взяли и, подавляя зевоту, написали? Тогда вам не составит никакого труда написать такое, чтобы выстраивало дерево вверх от элемента под мышью.
написать такое, чтобы выстраивало дерево вверх от элемента под мышью.
Нифига не понял, про ЭТО ВАШЕ задание, но понял, что ОНО принадлежит к заданию "нахаляву"..
Кстати где-то видел точно такое же как у меня, но на вашем на не понятном для меня языке.
Прям вот так взяли и, подавляя зевоту, написали?
Да там просто. Нашёл где то API с этими примерами.
А в VB вставил ocx дерево. Пиши в цикле себе "add"... да и всё. Мароки-то...
Да и exe не надо было делать. У меня есть для таких вещей спец ветка (закладка) с установленным туда VB6. Причём на RAM диске ОС (защищённом).
...
По ходу темы. Думается мне что можно попробовать вытащить этот индикатор с помощью обращения к классу TrayInputIndicatorWClass а у него IMEMode.... Этот класс должен принадлежать к "Exploarer"
Потому что в старом IE11 был как раз такой класс IMEMode... для введения текстов с языками.
upd.
И ещё.. через WMI не прокатить следилка полюбасу. Написал асинхронную следилку. Она подвесила все работающие сервисы в вине. При вызове любого винда ругалась. А перевожу с помощью клавы язык ввода , всё чики-пики. Вывод. Сервис не пашет для ввода индикатора. Нет такого сервиса. Поэтому надо "... идти другим путём"(R)-В.И.Ленин.
WMI можно убрать от этой темы.
Написал асинхронную следилку
Ну вы прямо монстр! Написали то, написали сё! Сколько всего уже понаписали. А главное — выхлоп-то какой мощный! Все задачи решены!
ОНО принадлежит к заданию "нахаляву"
В смысле, нахаляву? А вы разве не знаете, что всем, кто пишет код на форуме, выплачиваются премии из специального фонда? Жаль, что вам ничего не перепадёт, вы столько уже понаписали, но тут ни строчки не показываете.
Ну, что ж, вы сами себе враг, от таких денег добровольно отказаться.
Ну вы прямо монстр! Написали то, написали сё! Сколько всего уже понаписали. А главное — выхлоп-то какой мощный! Все задачи решены!
монстр не монстр, я умею работать с инфой.
скрипт взят от сюда с этого форума, линк давал ранее (см выше).
--> https://script-coding.com/WMI.html
в самом низу.
Обработка событий может производиться и в асинхронном режиме:
Правда я код исправил. Там в оригинале ошибка.
'время выполнения скрипта в секундах, после чего скрипт будет остановлен
WScript.Timeout = 60
'подключение к пространству имён
Set objService = GetObject("winmgmts:\\.\Root\CIMV2")
'создание объекта SWbemSink
Set objSink = WScript.CreateObject("WbemScripting.SWbemSink", "Sink_")
'подписка на событие изменения состояния службы
Call objService.ExecNotificationQueryasync( objSink, "SELECT * FROM __InstanceModificationEvent WITHIN 5 WHERE TargetInstance ISA 'Win32_Service'")
'приостанавливаем выполнение сценария
While 1=1
WScript.Sleep 1000
Wend
'**************************************************************************************************
Sub Sink_OnObjectReady(objEvent, objContext)
WScript.Echo "AA"
If objEvent.TargetInstance.State <> objEvent.PreviousInstance.State Then
WScript.Echo Date & " " & Time & vbCrLf & _
objEvent.TargetInstance.DisplayName & vbCrLf & _
"Текущее состояние: " & objEvent.TargetInstance.State & vbCrLf & _
"Предыдущее состояние: " & objEvent.PreviousInstance.State
End If
End Sub
+ в скрипте изменил время , выставил вместо 3600 , выставил 60.
Запустите. И будет вам счастье, пока не перезгрузитесь ничего не будет исполняться в сервисах. Попробуйте на
панели задач вызвать пркнпмыши диспетчер задач.
И так со всеми сервисами (службами). А клава спокойно меняет язык в трее.
Учись, студент! (R)
я умею работать с инфой
Это заметно по результатам.
AlexPORT
Есть мысля, как сделать эвент на событие.
1- Известно, что ctfmon.exe бурно влияет на загрузку CPU при изменении языка в индикаторе трея. И это надо учитывать при анализе (см далее) по этому параметру на разных CPU.
2- Есть команда в Powershell
Get-Process ctfmon
Которая выводит результат загрузки CPU.
3- есть WMI в котором можно заделать такую следилку по конкретной проги по загрузке ею CPU.
4- заделать там фильтр который будет реагировать на изменния загрузки. Т.е. скрипт-фильтр запоминает меньшее значение которое было. если это значение становиться выше, то эвент срабатывает и происходит оповещение об изменении. Когда этот параметр снижается то опять происходит запоминание нижнего параметра. И так по кругу.
==============
Этот вариант я думаю заделать, потому что он в дальнейшем пригодиться для домашних следилок мне.
Upd.
https://nhutils.ru/blog/skript-zagruzki … -windows/
Этот код взять за основу в котором прописать ctfmon.exe
var computer_name = ".";
var wmi = GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\"+
computer_name+"\\root\\cimv2");
var cs = new Enumerator(wmi.ExecQuery("select * from Win32_ComputerSystem"));
var n = cs.item().NumberOfLogicalProcessors;
var q = "select * from Win32_PerfFormattedData_PerfProc_Process where IDProcess<>0";
if (WScript.Arguments.Named.Item("above")!= undefined )
q += " and PercentProcessorTime>" + parseInt(WScript.Arguments.Named.Item("above"))*n;
var pe = new Enumerator(wmi.ExecQuery(q));
WScript.Echo("CPU Thrd PID Name");
for (; !pe.atEnd(); pe.moveNext()) {
WScript.Echo( stringwithstart((pe.item().PercentProcessorTime/n).toFixed(0),2," ") + "%" +
stringwithstart(pe.item().ThreadCount.toString(),5," ") +
stringwithstart(pe.item().IDProcess.toString(),6," ") + " " + pe.item().Name );
}
function stringwithstart(s,n,start){
while ( s.length < n )
s = start + s;
return s;
}
///
Отследить то вы конкретно сможете. И этой следилкой можете запускать API по определению буквы языка, отвязявшись от таймера. НО поменять буквы на графику, не сможете.
AlexPORT
Лови скрипт. Можно отвязываться от таймера.
https://forum.script-coding.com/viewtop … 35#p163235
teadrinker
Лови.
Я там в этой https://forum.script-coding.com/viewtop … 35#p163235
теме спец, скрипт не выложил весь.
Буду обеспечивать тебе посещаемость при помощи "регистрации" юзеров.
3wedsmncjklvjvd73734
Ваш скрипт бессмысленен примерно так же, как и ваш ник.
Можно отвязываться от таймера
WITHIN 0.1
А это что, голова садовая? ![]()
А это что, голова садовая?
Да. Она самая.
Либо её отсутствие.
Либо её отсутствие.
Что ещё может сказать АДМИН, многоуважаемого всеми данного форума, после того
как простой 12-летний школьник, щёлкнул его по носу, своими знаниями?
Кстати те самые "0.1" это счёт в мою пользу.
Как ВЫ сами будите относиться к человеку, который без аргументов вам будет на все ваши доводы, говорить "сам дурак"?
И ещё... Мне говорили в школе, что -->
"В уважающих заведениях, НЕ принято переходить на личности
А, если собеседник хочет плодотворной беседы с оппонентом, то он всегда предоставляет аргументы, вместо того что бы говорить "сам дурак".
...
Мне кажется что МЫ с ВАМИ поменялись уже местами по возрастным рассуждениям по жизненным вопросам.
Т.е. как мне кажется по вашим постам-реакции, что вы скатились до детсадовца.
Если обидел, прошу прощения. Мои замечания касались только качества кода, но не самого кодера.
как простой 12-летний школьник, щёлкнул его по носу, своими знаниями?
Не поверю, что 12-летний. Максимум 8-летний. Вы очень забавно демонстрируете эффект Даннинга - Крюгера, почитайте, что это такое. ![]()
Не поверю
Не верите? Это потому что поверили в выводы прочитанной вами про эффект "Даннинга - Крюгера".
..
"Не сотвори себе кумира" (R).
Вы знаете, что после опубликования в 1962 году статьи простого учителя в США, который поставил в своей школе эксперимент "ВОЛНА", хотели запретить психологию?
И после прочтения этих выводов учителя учёный психолог Розенхан тоже поставил свой эксперимент. И после этого на мировой конференции психологов хотели вообще запретить психологию как науку вообще. Т.е.признать лженаукой.
...
Знаете как обучают нейросеть? На уже полученных данных человеком. Т.е. на истории.
Поэтому вывод. Что бы ВАМ тоже не отставать от знаний ИИ, вам нужно изучать историю, а не читать Даннинга - Крюгера.
В интервью, Бехтерева говорила ->
"Меня часто спрашивают, как я стала учёной? Я отвечала, потомоу что сомневалась в выводах других, и постоянно проверяла их"
А зачем вы всё время используете (R), что это значит?
А зачем вы всё время используете (R), что это значит?
По тв, в повторах в матчах хоккея, всегда в повторах применялась этот логотип, чтобы юзер понял что это повтор. Я тоже его применяю как "повтор".
teadrinker
Кстати про "ВОЛНУ". Я про ЭТО узнал из книги- перевод учёного женщины про нейрофизиолога. Прочёл когда занялся тоже ИИ.
Она в своей книги в ведении книги про это написала. Мол, узнала как амеры в войне с вьетнамом пленные переходили на сторону вьетнама.
И в США стали учёные интересоваться этим процессом - почему? И вот тут она там и ляпнула... Что мол посмотрев фильм "волна", она не могла понять, смогла ли она выдержать этого или нет.
Посмотрите фильм волна. На ютубе был. В руннете не знаю. По этому эксперименту учителя в школе сняли х.ф. с переводом
Я прочёл и срочно нашёл и посмотрел этот фильм. Советую. Историю надо знать, лучше чем ии.
--> фильм волна
https://ok.ru/video/83562727949
Там на ютубе я находил ещё док фильмы, с интервью самих участников того эксперимента учителя. Т.е. школьников. Интервью уже брали у взрослых людей (1980 тые года). Они там рассказывали как они себя чувствовали тогда.
Конечно этот эксперимент это что-то. После просмотра у вас уже не будет никаких вопросов про ... пропаганду и т.д. Вы уже на ЭТО будите смотреть как знающий человек.
teadrinker
А зачем удалили ветку про "OFF Не убиваемая win10..." ?
Если причина в том что это мол не скрипты там, то тогда получается чистой воды субъективное не справедливое отношение лично ВАС как админа форума к моей персоне. Потому что рядом там же ветка тоже не про скрипты
OFF: Установка Windows 2000 на "современный ПК" https://forum.script-coding.com/viewtopic.php?id=18554
живёт и не кашляет. Вроде везде там и тут OFF фигурирует.
...
Возможно - "это технический сбой, связанный с блокировкой"... там? чего-то... Как любят говорить в таких случаях. Так?
...
"Народ хочет знать" (R)
..
upd
предчувствую ответ.
"Вы не понимаете.. Это другое!" (R)
А зачем удалили ветку про "OFF Не убиваемая win10..." ?
Я решил, что на форуме не нужна тема, где большая часть постов состоит из фразы "Удалено по причине рекламы Microsoft".
Я решил, что на форуме не нужна тема, где большая часть постов состоит из фразы "Удалено по причине рекламы Microsoft".
По поводу темы. На западных поисковиках эта тема с картинками вся уже в архиве записана. Я проверял.
По поводу
фразы "Удалено по причине рекламы Microsoft".
Так не автор начал. Первый, как мне помниться (поисковик в интернете подтвердит), начал админ этого форума. Он решил что какой то отдельный пост принадлежит рекламе. Тогда автор той темы, тоже перепроверил свои посты и тоже усмотрел в них такую же рекламу. Так что автор не виновен в этих фразах. Открыл ящик Пандоры, тот кто не думал о последствиях.
...
От автора той темы, скажу. Мне жаль, что данный форум стал очень не актуален для юзеров, по вине админа, за свои не справедливые действия. Этот форум постепенно умрёт как умирает биологический человек. Постепенно по мере скорости деградации отношений к юзерам. И справедливости.
...
Как сказал один персонаж мультика «Я построю свой лунный модуль, с блэкджеком и шлюхами! И вообще, к черту лунный модуль и блэкджек! Ай, к чёрту всё!»
https://vkvideo.ru/video8627181_110849381?t=6s
...
Что бы быть "хорошим" руководителем (страны, семьи,форума), нельзя быть самовлюблённым тираном, и верить в свою непогрешимость.
...
upd
"Ну что морщишься? Сам испёк- сам и кушай!" (R) слова печки из мультика "Вовка в тридевятом царстве"
Прежде чем баллотироваться, на руководящие посты, в начале надо попробывать себя на должности руководителя/админа форума.
...
Но некоторые могут и сказать - "Не какой ты не командир" (R) /Джентльмены удачи/
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться