Конференция "KOL" » WM_KEYUP 255 каждую секунду в XP...Win7 [Windows]
 
  • Vladimir Kladov © (12.09.10 11:44) [0]
    Сегодня мне нечаянно удалось устранить багофичу в винде, которая появилась, по-видимому, в XP. Окну в фокусе ввода раз в секунду отправляется сообщение WM_KEYUP с виртуальным кодом 255. Все бы ничего, так как ничему не соответствует, и должно игнорироваться. Но вот не игнорируется полностью. Все всплывающие тултипы пропадают, не успев появиться, задерживаются на экране самую малость, и - их нет. Очень достает в Delphi, наведением курсора на переменную узнать ее значение не очень получается, наведением на точку остановки узнать текущее значение счетчика проходов - аналогично, и так - целый список. А еще в Delphi по отпусканию клавиши что-то пересчитывается, и когда загружен большой текстовой файл в редактор, курсор в окне неприятно мигает, раз в секунду превращаясь в часики. Не фатально, но раздражает.

    Багофичу я устранил, добавив в свои часики рабочего стола еще одну dll-ку с хуком на ввод с клавиатуры, который подавляет такую комбинацию. Проверил с помощью spy++ из MS Visual C++ - больше это сообщение нигде не лезет (до этого лезло везде, хоть в нотепаде, хоть в чем). Причем картина одинаковая что в XP, что в 7мерке.

    Остался вопрос. Нигде в интернете не нашел объяснения насчет того, кто (наверное, все-таки сама система или ее клавиатурный драйвер) и зачем посылает эту гадость текущему окну раз в секунду. Если кто-нибудь владеет информацией, поделитесь, пожалуйста. А то может, есть и более легальный способ отключать эту багофичу, например, через реестр.
  • QAZ (12.09.10 12:13) [1]
    тестовый проект в студию
    у мну все норм
    косяк видимо у вас с софтом
  • Vladimir Kladov © (12.09.10 13:21) [2]
    Софт не нужен. Достаточно натравить spy на любое окно (с его дочерними и родительскими) на отлов WM_KEYUP.

    На XP и Win7 (это разные машины) софт довольно таки разный. На XP даже Delphi еще никогда не было, в основном игрушки для ребенка, офис+браузер. А результат одинаковый.
  • Дмитрий К © (12.09.10 14:23) [3]
    Win 7 - не наблюдается. Единственное, что посылается каждую секунду - WM_SYSTIMER.
  • Vladimir Kladov © (12.09.10 15:04) [4]
    Ну, тогда у меня действительно софт специфический. Остается выяснить, что же такого специфического я ставлю на все машины, включая XP на работе. Ноутбук супруги проверил - то же самое. Неужто фотошоп версии 5.5 или офис 97 виноват. Не очень понятно как они (если они) влияют при незапущенном основном приложении на это дело. Но факт налицо. Как только это сообщение убил, жить сразу стало легче. Завтра проверю еще на паре машин.
  • Vladimir Kladov © (12.09.10 16:24) [5]
    Кстати. Начал распаковывать большой rar-архив, отвел мышь в сторону, и он перестал распаковываться. Навел - бодро продолжил. Повторябельно. Это на 7ке с убитым сообщением. Накануне такого не было, архиватор не останавливался. Возможно, отправка сообщений - реакция системы на наличие установленного устаревшего софта вроде winrar, который застревает, если не получает сообщений. Но не только в 7ке, а начиная с ХР. Я бы и не против такого фикса, но не всем окнам такие сообщения полезны.
  • QAZ (12.09.10 17:28) [6]
    проверяйте на девственной винде, прежде чем обвинять винду в чемто
    а темболее юзая такой древний шит , как фотошоп версии 5.5 или офис 97
  • Jon © (12.09.10 17:29) [7]
    Can you provide a simple compilable KOL example so that we can check if bug is present on our systems.
  • Vladimir Kladov © (12.09.10 19:47) [8]
    Я ее обвиняю? В чем? Разве только в том, что "фича" не документирована.
    И зачем мне девственная винда? Мне нужно, чтобы там стоял софт, к которому я привык. На всех моих машинах стоит винрар, фотошоп 5.5, офис 97. А это значит, что на любой машине с таким софтом будет то же самое. И что я должен отказываться от привычного софта и ставить другой? Я лучше винду "поправлю".

    This is not a bug. This is a feature. Though tooltips are too short to see smth.
  • Vladimir Kladov © (12.09.10 19:53) [9]
    Simple VCL project (to exclude any possible reasons like "this is a KOL bug" :) ):


    procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
     Shift: TShiftState);
    begin
       CASE Key OF
       255: Caption := Caption + '.';
       END;
    end;



    Run, focus and see if ...... are appearing in the form Caption. If yes, feature is present. If no - you have good system. But say me: if you unrar very large RAR archive (to take about a minute), if are there following bug. Start unpack, move mouse far from its window and stay it untouched. If it is continuing unpacking or stop until you move mouse to WinRAR window.
  • Jon © (12.09.10 21:30) [10]
    I cannot duplicate the issue - there must be something with your system.

    Let's have a look at what is going on, please run a HiJackThis (http://free.antivirus.com/hijackthis/) scan on your computer and post the results log here.
  • QAZ (12.09.10 21:41) [11]

    > Я лучше винду "поправлю".

    печально
    и при чем тут винда, опять же?

    > И зачем мне девственная винда?

    ну как минимум для тестов, для програмиста это должно быть нормой вродекак
    а словить косяк на загаженой винде и бить себя в грудь, типа "я нашел очередной баг MS" както не солидно
  • Vladimir Kladov © (13.09.10 04:46) [12]
    Почему косяк? Это способ исправить поведение отдельного устаревшего софта. К сожалению, влияющий на другой софт, частью тоже устаревший, а частью - новый. Я, собственно, на источник проблемы наткнулся, разбирясь, почему в моей программе затыкается автоповтор нажатия кнопок. Но сама проблема портила мне жизнь последние 2 года, сильно влияя на кучу используемых программ, не только на дельфи. А вот было бы это поведение документировано, и проблем было бы меньше.
  • QAZ (13.09.10 11:45) [13]

    > А вот было бы это поведение документировано, и проблем было
    > бы меньше

    а с какова MS должно документировать поведение устаревшего или "левого" софта?
    у любого софта есть определеные требования к используемой оси и библиотекам , все остальное проблема юзера

    опять же виста\семерка при установке старья сразу предупреждает что будет не коректно работать и если юзеру пофиг на это, то какой претенз?

    сдается мне что старье тут и не при чем,а дело в какой нибуть "ну очень полезной" программе
  • miek (14.09.10 21:54) [14]
    Если дело происходит на ноуте, то, скорее всего, дело в специфических дровах. Есть там у вас какой-нибудь джойпад, трекбол, тачпад? Судя по сообщению - оно. А винду действительно не в чем обвинять.
  • vastani (19.09.10 14:25) [15]
    Vladimir Kladov, а вы е исключаете того, что у вас "погулял" некий шпионец, троянец с кейлогерными свойствами. Вы его зачистили некогда...., но остался некий "рабочий хвост" и именно его и наблюдаете. У других его нет, т.к. именно этой твари и не попадалось. Работа, дом, жена, дети.. бешанный движняк флешек в народе сечас особенно у студенчества с тварями - просто мрак! НУ со стороны прочитав да посмотрев, скажем вот мною, сия ветка приводит вот к таким размышлизмам.
  • Vladimir Kladov © (19.09.10 21:48) [16]
    Некогда зачистил и хвосты - это вряд ли. Стоит семерка с мая, изначально с антивирусом. Автозапуски отключены сразу при установке. Провел полное сканирование - ноль зверей.

    К сожалению, ноут не грузится с инфра-сд, надо попробовать версию поновей (или наоборот постарей - раньше вроде грузился). Если получится загрузиться, смогу сказать, аппаратный это сбой или нет. По крайней мере, при загрузке в безопасном режиме эффект продолжает наблюдаться - отжатия 255 идут. Но этот эффект был, скорее всего, и до семерки, когда под ХР сидел - тултипы пропадали, альт-таб не работал и т.п. Остается только 2 варианта - или железо, или очень специфический софт, унаследованный в семерке от совсем другой операционной системы (возможно, ручками и установленный). Тачпада, кстати, в списке оборудования нет, отключить его я не вижу где можно, чтобы проверить без него. Точнее, видно 2 устройства - HID-совместимая, и PS/2 совместимая. Отключение любой - мышь и тачпад оба не работают (а эффект остается). Отключить клавиатуру не получается. rundll32 не работает для слова keyboard. Запретить использовать клавиатуру - такая опция отсутствует. Удаление устройства ничего не дает - 7ка хочет тут же перезагрузиться, после перезагрузки клава опять на месте.

    Я, кстати, неправильно проверял наличие эффекта на других компах - через радмин. Когда сходил ножками, то эффект не наблюдается. Эффект наблюдался, когда я смотрел на экран других компов через радмин по очевидным причинам.
  • Vladimir Kladov © (20.09.10 19:17) [17]
    Запуск с Hiren's Boot CD показал тот же эффект. Итого: аппаратный сбой. По крайней мере, не требуется вносить корректировку в KOL. (Я уже было решил добавить проверку WM_KEYUP 255 для игнорирования, иначе автоповтор работал на bitbtn-кнопке).
  • vastani (20.09.10 19:41) [18]
    диагноз "аппаратный сбой" обязательно должен подтверждаться и проявляться на различных операционках, например в ДОСяре! Посему очень смутно верится в части определения словом именно аппаратный. Рекомендовал бы, если нужна вся правда по поводу именно аппаратуры и касательно именно клавки, тест-прогу под досом, что мониторит и выплевывает на экран все скан-коды контроллера клавиатуры (где то давно встречал в сборниках еще времен расцвета фидонета). Прямее и "честнее" ДОСа при доступе к железу (аппаратной части) трудно сыскать и верить приходится. В даннм случае, считаю, что если никаких аналогов типа сыпанья "кода отжатия" нет, то виновна винда (пусть клавный драйвер, например) и именно по части генерации ложных сообщений. Если речь идет именно по ноуту, то можно предположить еще, что ввиду специфики ноутов у него в части PC совместимости железа могут, конечно быть отступления тоже, что зависит от производителя собственно и не факт, что даже если данный контроллер клавки ноута сыплет, предположим чушь, то это у всех ноутов так...
    Под фразой Hiren's Boot CD понимаю запуск некой WinPE сборки? Так?
  • vastani (20.09.10 20:24) [19]
    Только что реально проверил следующее.
    1. получаем доступ ring 0 интересует клавкин контроллер, а именно порт 0x64
    2. выключаем нА АППАРАТНОМ уровне работу KBC только в плане клавиатуры на 30 сек следующим образом:
    asm
        mov  al, $AD
        out   $64, al
        push  30000
        call   Sleep
        mov  al, $AE
        out   $64, al
    end;

    3. все работает строго в соответствии с командами (даташитом) на KBC.
    э-э-ээээ, например тут почитать: http://www.irmplc.com/downloads/whitepapers/Hardware_Keylogger_Detection.pdf
    см. PAGE 6.
    4. Таким образом, можно убедиться именно в АППАРАТНОСТИ проблемы при "текущей" ОСи!
  • Vladimir Kladov © (21.09.10 18:08) [20]
    Я что-то не пойму: win7 и winXP, запущенные с РАЗНЫХ носителей - этого не достаточно, чтобы сделать вывод об аппаратном источнике?

    Лично мне достаточно. После этого я просто применяю свой фикс и спокойно работаю дальше. Ноуту три года, и еще столько же он протянет и с программным фиксом, а дальше, как обычно, в музей.
 
Конференция "KOL" » WM_KEYUP 255 каждую секунду в XP...Win7 [Windows]
Есть новые Нет новых   [120351   +26][b:0][p:0.001]