Вопрос который все задают и никто не может ответить, во всяком случае не нашел ни на одной конфе(в смысле ответа не нашел, вопросов то много)..
Задача:
1. отследить что активен explorer.exe
Это еще кое-как хотя тоже проблемы.
2. на комбинацию клавиш( типа там CTRL+D ) повесить создание директории так как это делает меню->New->Folder. Т.е. создать директорию, и сразу поставить в режим редактирования. поймать СТРЛ не удалось потому как при компиляции PKBDLLHOOKSTRUCT не дефайнится.
т.е в МСДН это есть, а компилятор говорит что нет.
Что уже предпринималось:
1. Была попытка отследить какое сообщение получает окно содержащее этти все папки и файлы. Ничего не вышло, потому что посылается ему куча ругани -> перебрал все, ни одно из них не делает того что нужно.
Вопрос: что делать? и как делать правильно? может вообще без мессаджей обойтись?
2. Определяется что запущен explorer.exe след образом: находится самый последний хендл у окна и выполнятся GetModuleFileName
Вопрос: Это правильно вообще? есть другие более правильные методв определения того актвен ли стандартный шелл системы MS Windows?
3. Как этот проклятый PKBDLLHOOKSTRUCT заставить определятся?
Get Shell process through previous function and GetShellWindow.
JH>2. на комбинацию клавиш( типа там CTRL+D ) повесить создание директории так как это делает меню->New->Folder. Т.е. создать
Здравствуйте, Akzhan, Вы писали:
A>Здравствуйте, JuffinHally, Вы писали:
JH>>Задача:
A>Прочитать MSDN не судьба???
JH>>1. отследить что активен explorer.exe JH>> Это еще кое-как хотя тоже проблемы.
A>GetForegroundWindow and GetWindowThreadProcessId.
A>Get Shell process through previous function and GetShellWindow.
JH>>2. на комбинацию клавиш( типа там CTRL+D ) повесить создание директории так как это делает меню->New->Folder. Т.е. создать
A>RegisterHotKey.
RegisterHotkey Не катит. В своей пеерключалке десктопов я даже Win+E успешно перехватываю а секрет в хуке WH_KEYBOARD_LL.
Елсли использовать хук, то нужно учесть, что процедура LowLevelKeyboardProc работает только в NT, во всем остальном нужно использовать KeyboardProc. И еще, если нужно чтобы хук ловил глобальные сообщения, то придется его в отдельной DLL писать. В MSDN это все очень хорошо описанно!!!
Здравствуйте, Akzhan, Вы писали:
A>Здравствуйте, JuffinHally, Вы писали:
JH>Задача:
A>Прочитать MSDN не судьба???
Просьба: дочитайте мое сообщение до конца.
JH>1. отследить что активен explorer.exe JH> Это еще кое-как хотя тоже проблемы.
A>GetForegroundWindow and GetWindowThreadProcessId.
A>Get Shell process through previous function and GetShellWindow.
JH>2. на комбинацию клавиш( типа там CTRL+D ) повесить создание директории так как это делает меню->New->Folder. Т.е. создать
A>RegisterHotKey.
A>...ооо моя оборона, солнечный зайчик незрячего глаза...
Здравствуйте, MasterSID, Вы писали:
MSI>Елсли использовать хук, то нужно учесть, что процедура LowLevelKeyboardProc работает только в NT, во всем остальном нужно использовать KeyboardProc. И еще, если нужно чтобы хук ловил глобальные сообщения, то придется его в отдельной DLL писать. В MSDN это все очень хорошо описанно!!!
Повторюсь: Задача: комбинация клавиш должна ловится только в окне explorer.exe.
платфорома действительно w2k, wXP , корочек НТёвая...
Проблема: куча вариантов как ловить: хуками, RegisterHotKey , еще както байдой...
Непонятно как ПРАВИЛЬНЕЙ для задачи, как ЛУЧШЕ?
Здравствуйте, Akzhan, Вы писали:
A>Здравствуйте, JuffinHally, Вы писали:
JH>Задача:
A>Прочитать MSDN не судьба???
JH>1. отследить что активен explorer.exe JH> Это еще кое-как хотя тоже проблемы.
A>GetForegroundWindow and GetWindowThreadProcessId.
A>Get Shell process through previous function and GetShellWindow.
JH>2. на комбинацию клавиш( типа там CTRL+D ) повесить создание директории так как это делает меню->New->Folder. Т.е. создать
A>RegisterHotKey.
A>...ооо моя оборона, солнечный зайчик незрячего глаза...
Да , вот еще что , некто Акжан тут написал как определить что работа ведется в explorer.exe. Но имелся ввиду не получение хендла шелла. А именно определение что работа ведется именно в explorer.exe а не где либо еще. То тчо запушен он как шелл меня совершенно не интересует. Может Вы чтонить знаете по этому поводу?
И наконец конечно же — как орпеделить в какой директории сейчас explorer.exe ..вот еще вопрос.