Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.09.17;
Скачать: [xml.tar.bz2];

Вниз

узнать keyboard layout консоли другого процесса.   Найти похожие ветки 

 
Ketmar ©   (2006-08-23 00:49) [0]

да-да, именно для написания замены стандартному переключателю раскладок.
как это сделать из процесса, владеющего консолью, я знаю.
хуки не предлагать -- весь переключатель должен жить в одном .EXE и не мусорить догружаемыми DLL.
в принципе, у меня есть идеи, но озвучивать не буду, чтобы не засорять мозги отвечающим. %-)

tnx.


 
Ketmar ©   (2006-08-23 11:45) [1]

up?


 
PSPF2003 ©   (2006-08-23 11:54) [2]

Ревич Нестандартные приемы программирования на Delphi Смотри там авось подойдет.


 
Ketmar ©   (2006-08-23 11:58) [3]

э... а можно это где-то скачать? гугль меня накормил кучей ссылок на "купить". я бы, может, и купил, если б знал, что оно именно то, а так... %-)


 
PSPF2003 ©   (2006-08-23 12:05) [4]

Секунду


 
Ketmar ©   (2006-08-23 12:06) [5]

> [4] PSPF2003 ©   (23.08.06 12:05)
всё, нашёл. 30-40 метров -- это перебор. %-)


 
Calm ©   (2006-08-23 13:55) [6]


> угль меня накормил кучей ссылок на "купить". я бы, может,
>  и купил, если б знал, что оно именно то, а так...

Книга-то хорошая, еще пригодится. Не пожалей 30-40 метров. Или 400(?) рублей.


 
Ketmar ©   (2006-08-23 14:08) [7]

> [6] Calm ©   (23.08.06 13:55)
да я сильно подозреваю, что там pdf в виде тупого скана (в картинках), а не текста. это не дело. %-)

а купить... так я в Украине живу. пока довезут, пока геморрой %-)


 
Ketmar ©   (2006-08-23 14:10) [8]

> [7] Ketmar ©   (23.08.06 14:08)
да и не привык котов в мешках покупать.


 
PSPF2003 ©   (2006-08-23 14:13) [9]


> Calm ©


> Книга-то хорошая

Тут уже озвучивали несколько комментариев в адрес этой книги, далеко не лестных…


 
Calm ©   (2006-08-23 14:15) [10]


> да я сильно подозреваю, что там pdf в виде тупого скана
> (в картинках)

Я вас уверяю, ценность книги от этого никак не падает. разве что на КПК неудобно читать.
А насчет котов - пошарьте по инету, мнения о книге сходятся сильно.


 
Calm ©   (2006-08-23 14:20) [11]


> Тут уже озвучивали несколько комментариев в адрес этой книги,
>  далеко не лестных…

Что-то не припоминаю.
Напомните. Я, как читавший эту книгу, для себя сравню со своим мнением.


 
Rouse_ ©   (2006-08-23 14:21) [12]


> Ketmar ©   (23.08.06 00:49)  

Вот тут погляди: http://rouse.front.ru/windowtree.zip


 
Rouse_ ©   (2006-08-23 14:22) [13]

Хотя нафиг тебе все то?

   AttachThreadInput(GetCurrentThreadId, TID, True);
   VerLanguageName(GetKeyboardLayout(TID) and $FFFF, szLayoutName, MAX);
   AttachThreadInput(GetCurrentThreadId, TID, False);


 
PSPF2003 ©   (2006-08-23 14:32) [14]


> http://rouse.front.ru/windowtree.zip

Пасибо пригодится.


 
Джо ©   (2006-08-23 15:54) [15]

> [7] Ketmar ©   (23.08.06 14:08)
> так я в Украине живу. пока довезут, пока геморрой
> %-)

Не верю! (c) ;)


 
Lamer@fools.ua ©   (2006-08-23 15:54) [16]

>>Calm ©   (23.08.06 14:15) [10]

> > да я сильно подозреваю, что там pdf в виде тупого скана
>
> > (в картинках)
>
> Я вас уверяю, ценность книги от этого никак не падает.


Да? И поиск по тексту работает?


 
Lamer@fools.ua ©   (2006-08-23 15:55) [17]

>>Джо ©   (23.08.06 15:54) [15]

Чему? Тому, что в Украине живёт?  ;o)


 
Ketmar ©   (2006-08-23 15:57) [18]

> [13] Rouse_ ©   (23.08.06 14:22)
если бы это работало с консолями -- было бы очень здорово. но консоль -- это очень уж странный предмет. раскладку в консоли можно узнать только при помощи недокументированного (ранее, сейчас не смотрел %-) GetConsoleKeyboardLayoutName(). иначе -- фигу. и никакие переключения потоков ввода GetConsoleKeyboardLayoutName() не волнуют.


 
Джо ©   (2006-08-23 15:59) [19]

> [17] Lamer@fools.ua ©   (23.08.06 15:55)
> Чему? Тому, что в Украине живёт?  ;o)

Угу, выдает желаемое за действительное :)


 
Ketmar ©   (2006-08-23 16:02) [20]

> [18] Ketmar ©   (23.08.06 15:57)
да, GetConsoleKeyboardLayoutName() функционирует только в самом консольном процессе. как это делать нормально, без внедрения кода -- я так и не нашёл.


 
Zeqfreed ©   (2006-08-23 16:08) [21]

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/attachconsole.asp

AttachConsole не поможет? Написано вроде, что The calling application can call any of the console functions. Не знаю как насчет недокументированных ф-ций.


 
Ketmar ©   (2006-08-23 16:30) [22]

> [21] Zeqfreed ©   (23.08.06 16:08)
не поможет. во-первых, в 2k этого нет. во-вторых, нет DetachConsole(), что для переключателя нериемлемо. консоль не закроется, пока не свалят все, кто её использует. следовательно, любая открытая консольная программа, порождающая консольное окно, оставит за собой это окно, висящее до закрытия переключателя. думал уже над этим. %-)


 
BiN ©   (2006-08-23 16:40) [23]

Вариант "оно тебе надо?":
Если найдешь описание структуры win32thread (условно), кот. находится в нутре win32.sys, можно будет попробовать. Но только под админом.


 
Zeqfreed ©   (2006-08-23 16:41) [24]

> [22] Ketmar ©   (23.08.06 16:30)

Понятно :) Тогда не знаю, можно AttachConsole, потом ввести символ проанализировать его на предмет раскладки и стереть ;) Опять только скажешь, что нет DetachConsole…


 
Ketmar ©   (2006-08-23 16:53) [25]

> [23] BiN ©   (23.08.06 16:40)
угу. надо. потому что переключатель давно написан, но без этого работает криво. %-)

да видел я куски описаний. смотрел. в том же реакторе, кстати. %-)
но -- "под админом". и вообще, не дело это -- лазить в кишки за такой простой вещью. до сих пор не могу поверить, что микрософт не дал нормального способа. или хотя бы более нормального, нежели перетряска ливера.

> [24] Zeqfreed ©   (23.08.06 16:41)
да. все мои аргументы остаются в силе.

единственный вариант, который я пока нашёл, -- внедряемый код, который будет по просьбе переключателя вызывать GetConsoleLayoutName() и отдавать результат. %-(
но дело в том, что хук у меня сейчас делается низкоуровневый. и разбивать переключатель на .exe и .dll я не хочу. равно как не хочу гадить этой DLL во все процессы.
вариант ещё -- CreateRemoteThread(), но оно тоже требует привилегий. да и опять кривовато, как не крути. %-((


 
Ketmar ©   (2006-08-23 16:54) [26]

> [24] Zeqfreed ©   (23.08.06 16:41)
опять же, AttachConsole() отсутствует в Win2K. по крайней мере в Win2K SP2.


 
Ketmar ©   (2006-08-23 17:04) [27]

зыж internat.exe ведь делает это как-то...


 
Leonid Troyanovsky ©   (2006-08-23 18:23) [28]


> Ketmar ©   (23.08.06 17:04) [27]

> зыж internat.exe ведь делает это как-то...


Установкой хука WH_SHELL.
С парой WM_USER+x сообщений: одно на foreground window,
другое - на раскладку. Длл как зовут - не помню.

--
Regards, LVT.


 
Ketmar ©   (2006-08-23 18:30) [29]

> [28] Leonid Troyanovsky ©   (23.08.06 18:23)
сейчас попробую проверить. но, кстати, для shell-хука, афаир, DLL и не нужны.


 
Leonid Troyanovsky ©   (2006-08-23 18:41) [30]


> Ketmar ©   (23.08.06 18:30) [29]

> сейчас попробую проверить. но, кстати, для shell-хука, афаир,
>  DLL и не нужны.


Проверь, конечно. Только, конечно, нужны, бо системного уровня.
indicdll.dll, кажись. В \system32.

--
Regards, LVT.


 
Ketmar ©   (2006-08-23 18:47) [31]

как выяснилось, от консоли HSHELL_LANGUAGE ни разу не приходит. что не мешает интернату узнавать раскладку.


 
Ketmar ©   (2006-08-23 18:48) [32]

блин, щаз полезу дизассамблировать этот ангелов интернат! %-)


 
Leonid Troyanovsky ©   (2006-08-23 18:52) [33]


> Ketmar ©   (23.08.06 18:47) [31]

> как выяснилось, от консоли HSHELL_LANGUAGE ни разу не приходит.


Методику в студию, плиз.

--
Regards, LVT.


 
Ketmar ©   (2006-08-23 19:15) [34]

обычный хук с DLL, обычный хук без DLL. разницы нет.


 
Leonid Troyanovsky ©   (2006-08-23 19:23) [35]


> Ketmar ©   (23.08.06 19:15) [34]

> обычный хук с DLL, обычный хук без DLL. разницы нет.


Не научно.
Бо, должны быть описаны условия, достаточные
для воспроизведения эффекта.

Ну, хотя бы, для w2k ;)

--
Regards, LVT.


 
Ketmar ©   (2006-08-23 19:27) [36]

да понятно, что ненаучно. %-) условия забыл забэкапить. %-) в общих словах -- совершенно стандартно ставим хук (с DLL и MMF, или просто на процесс). приходит много интересного, кроме смены языка в консоли.
но это не столь важно, так как интернат без indicdll.dll таки не функционирует. не катит -- с хуком в DLL и я могу. %-)

зыж интересно, зачем интернат вешает CBT-хук? лениво по коду лазить... %-)


 
Leonid Troyanovsky ©   (2006-08-23 19:40) [37]


> Ketmar ©   (23.08.06 19:27) [36]

> но это не столь важно, так как интернат без indicdll.dll
> таки не функционирует. не катит -- с хуком в DLL и я могу.


Взгляни еще на http://rsdn.ru/Forum/?mid=666363

--
Regards, LVT.


 
Ketmar ©   (2006-08-23 19:50) [38]

> [37] Leonid Troyanovsky ©   (23.08.06 19:40)
благодарю за ссылку. однако это всё мне известно. %-) воспользоваться же внутренней структурой интерната невозможно в силу отсутствия оного (инча зачем тогда свой переключатель? %-).

итого -- остаётся только попробовать внедрять свой код во все консоли? ужос... жизнь опять повернулась задом.


 
Vendict ©   (2006-08-23 23:25) [39]

2Ketmar
А такой извращенный вариант. Не пинай только, если что. Попробывать буквы перехватывать набраные и смотреть в какой они раскладке.


 
Ketmar ©   (2006-08-23 23:31) [40]

> [40] Vendict ©   (23.08.06 23:25)
хм. задача-то -- написать замену интернату. так что ждать, пока юзер тыцнет в кнопочку -- это не выход. раз.
два: для перехвата всё равно надо или хук вешать, или код внедрять. так тогда проще уже сделать нормально -- через GetConsoleLayoutName(). %-)

зыж а не для того ли internat вкшает cbt хук, чтобы гарантированно захучить консоль? %-)



Страницы: 1 2 вся ветка

Форум: "Прочее";
Текущий архив: 2006.09.17;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.062 c
15-1156709569
Дураг
2006-08-28 00:12
2006.09.17
Встретишь феминистку – убей ее или лекарство от феминизма.


2-1156333098
rr
2006-08-23 15:38
2006.09.17
Как построчно прочитать файл


3-1152534624
Avgust
2006-07-10 16:30
2006.09.17
хм.. неустойчивый коннект..


15-1156855197
rusPHP
2006-08-29 16:39
2006.09.17
url


15-1156251570
vain
2006-08-22 16:59
2006.09.17
Математика. Слабо?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский