Форум: "Прочее";
Текущий архив: 2007.04.01;
Скачать: [xml.tar.bz2];
ВнизПомогите разобраться с проблемой Найти похожие ветки
← →
dreamse (2007-03-04 16:14) [0]В общем есть большой проект. Писался не мной но дали дорабатывать, коду много. Проект представляет из себя шел, т.е замену рабочему столу Windows.
Работает софт отлично. но есть 2 проблемы :( где копать не знаю
при загруженом шеле
1) Не реагирует на смену языка пр CTRL + Shift или Alt + shift ( если зайти в панель управления и сменить раскладку то всё нормально до первой перезагрузки. Кстати дополнительные комбинации типа : Ctrl + Shift + 1 работают всегда !!! )
2) Открываем проводник и пытаемся что то скопировать. При копировании не показываеться форма копирования :( соответствено после копирования не видно что скопированно, нужно нажимать f5
Проверял никаких dll с перехватом (hook) в шеле нет.
В какую сторону копать ?
p.s код к сожалению выложить не могу ( это коммерческий проект )
← →
DVM © (2007-03-04 17:04) [1]Ошибка в 17 строке. Какая именно - сказать не могу - это коммерческая тайна.
← →
dreamse (2007-03-04 17:15) [2]> DVM © (04.03.07 17:04) [1]
Я не просил давать тупые советы.
Я спрашивал людей которые возможно сталкивались с подобными ошибками при разработке софта. Если есть мысли как проверить что именно приводит к ошибке то прошу подсказать
← →
@!!ex © (2007-03-04 17:17) [3]1) Есть вероятность, что где то прописаны соответствующие горячие клавиши, и их дальнейшая обработка блокируется.
2) Вроде диалог копирования и многие подобные фичи - часть стандартного шелла. Нет шелла, нет диалога. Пиши свой.
← →
dreamse (2007-03-04 17:24) [4]> @!!ex © (04.03.07 17:17) [3]
1) Я тоже так думаю , правда незнаю где копать так как перерыл код на наличие перехвата клавиши Shift ничего не нашёл, попробую поотключать поодиночке различные модули
2) К сожалению это не так, все диалоги храняться в dll и от текущего шелла не зависят, я думал что возможно диалог как то перехватываеться и скрываеться но хуков вроде нет... хотя нужно посмотреть что пшеться в модуле трея. так как там каике то сообщения системные идут
← →
@!!ex © (2007-03-04 17:26) [5]
> 1) Я тоже так думаю , правда незнаю где копать так как перерыл
> код на наличие перехвата клавиши Shift ничего не нашёл,
> попробую поотключать поодиночке различные модули
Как искал, если не секрет? :)
> 2) К сожалению это не так, все диалоги храняться в dll и
> от текущего шелла не зависят, я думал что возможно диалог
> как то перехватываеться и скрываеться но хуков вроде нет.
> .. хотя нужно посмотреть что пшеться в модуле трея. так
> как там каике то сообщения системные идут
А я почему то думаю, что диалог копирования зависит от шелла. ;)
← →
Olivetti (2007-03-04 17:56) [6]Я спрашивал людей которые возможно сталкивались с подобными ошибками при разработке софта
Это не ошибки. Это нереализованная функциональность. Клавиатуру тебе в руки.
← →
DVM © (2007-03-04 18:35) [7]
> Я не просил давать тупые советы.
Я пару лет занимался написанием шеллов. За это время изучил почти все имеющиеся в свободном доступе исходники шеллов и работу стандартного проводника. Поэтому советы давать могу, но на нормально сформулированнные вопросы.
По первому вопросу я подозреваю, что данный глюк наблюдается скорее всего только в XP. В win2000 его быть не должно. Все дело в том, что переключатель раскладки в XP имеет тесное сотрудничество с плагином панели задач и загружается скорее всего им или апплетом панели управления (это предположение). В 2000 переключатель стоит в автозагрузке и загружается самим шеллом. Советую взять переключатель раскладки от 2000 и просто запускать его своим шеллом. Работать будет гарантированно.
> Проверял никаких dll с перехватом (hook) в шеле нет.
У него хоть панель задач то есть? Без ловушек проблематично организовать ее подобие.
По поводу второго вопроса. Есть такой глюк. Не лечится. Если проводник запущен не в режиме рабочего стола - то он не отслеживает изменения в файловой системе.
← →
dreamse (2007-03-04 19:00) [8]> DVM © (04.03.07 18:35) [7]
> По первому вопросу подозреваю, что данный глюк наблюдается скорее всего только в XP
Так и есть.
На счёт второго вопроса не согласен так как только что посмотрел другие шеллы Aston - Runpad ( runpad-shell.com ) там отлично всё копируеться
← →
@!!ex © (2007-03-04 19:04) [9]
> dreamse (04.03.07 19:00) [8]
Так у них скорее всего свой диалог, вот и все.
← →
dreamse (2007-03-04 19:06) [10]> Советую взять переключатель раскладки от 2000 и просто запускать его своим шеллом. Работать будет гарантированно.
Не работает :( В смысле работает но не реагирует на переключение. Думаю тут дело не в переключатле так как он просто реагирует на переключение и выводит меню языков. Ведь даже если снять переключатель языки всё равно будут переключаться в системе.
В 2000 таких проблем нет ! блин
← →
DVM © (2007-03-04 19:06) [11]
> На счёт второго вопроса не согласен так как только что посмотрел
> другие шеллы Aston - Runpad ( runpad-shell.com ) там отлично
> всё копируеться
Эксплореру требуется возможно какая-то иннициализация. Я данный момент изучал мало, т.к. окна эксплорера - это часть стандартной оболочки и использовать их в своей оболочке не очень хорошо идеологически.
> На счёт второго вопроса не согласен так как только что посмотрел
> другие шеллы Aston
Можешь написать авторам астона. Скорее всего помогут. Более того, мне кажется, что сам Астон на Делфи написан.
← →
DVM © (2007-03-04 19:09) [12]
> Не работает :( В смысле работает но не реагирует на переключение.
> Думаю тут дело не в переключатле так как он просто реагирует
> на переключение и выводит меню языков. Ведь даже если снять
> переключатель языки всё равно будут переключаться в системе.
>
Странно, у меня работало. Надо будет посмотреть. Там не один файл надо из 2000 брать.
Слушай, а сам язык переключать не хочешь? Это несложно.
← →
dreamse (2007-03-04 19:19) [13]Я вот тоже думал уже над этим, просто перехватывать CTRL + SHIFT или ALT + SHIFT и менять раскладку.
Минус в том что можно менять rus - en а если несколько языков на компьютере ? китайский там ... :)
нужно как то получить список установленых языков и менять их по очереди
← →
DVM © (2007-03-04 19:24) [14]
> Минус в том что можно менять rus - en а если несколько языков
> на компьютере ? китайский там ... :)
Этот список есть в реестре. Это не проблема.
Если нужен пример - могу кинуть (есть готовый).
Есть еще вариант использовать один из готовых переключателей, коих масса. Тот же пунто свитчер, например.
← →
dreamse (2007-03-04 19:58) [15]> пунто свитчер и так пользую :) но встраивать один комерческий продукт в другой не есть хорошо.
Пример если не трудно скинь на whiteraven_@mail.ru
Жду
← →
dreamse (2007-03-04 20:26) [16]> DVM © (04.03.07 19:24) [14]
списибо гляну.
Вторая проблама так и осталась .. :(
← →
dreamse (2007-03-04 23:25) [17]Разобрался с языками в XP. Если кому то нужно будет то :
Заходим в панель управления - языки и службы текстового ввода. Ставим галочку на паремтре : Выключать дополнительные текстовые службы. Всё переключатель работает !
Значение признака в реестре : HKEY_CURRENT_USER\Software\Microsoft\CTF\Disable Thread Input Manager
Буду разбираться со второй проблемой
← →
dreamse (2007-03-05 00:44) [18]Нашёл что являеться причиной блокировки обновления после копирования :
UserLibHandle := LoadLibrary("USER32.DLL");
@SetShellWindow := GetProcAddress(UserLibHandle, "SetShellWindow");
if (@SetShellWindow <> nil) then
begin
SetShellWindow(m_hMainWindow);
end;
m_hMainWindow = Application.Handle
Я в хуках не спец. Подскажите что происходит и как от этого избавиться ?
Если закоментировать установку хука то при запуске из под загруженого шела explorer.exe грузиться не просто проводник а так же пуск с панелью задач :( что совершенно не нужно. Зато копирование файлов проходит нормально после этого
что делать ?
← →
dreamse (2007-03-05 00:52) [19]Продвинулся ещё дальше, определил что виной всему вот этот код :
UserLibHandle := LoadLibrary("USER32.DLL");
@SetShellWindow := GetProcAddress(UserLibHandle, "SetShellWindow");
именно при загрузке его происходит блокирование запуска explorer"a и отключение обновления при копировании
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2007.04.01;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.038 c