Хуки, Explorer.exe, PKBDLLHOOKSTRUCT
От: JuffinHally Россия  
Дата: 02.05.03 22:27
Оценка:
Вопрос который все задают и никто не может ответить, во всяком случае не нашел ни на одной конфе(в смысле ответа не нашел, вопросов то много)..

Задача:
1. отследить что активен explorer.exe
Это еще кое-как хотя тоже проблемы.

2. на комбинацию клавиш( типа там CTRL+D ) повесить создание директории так как это делает меню->New->Folder. Т.е. создать директорию, и сразу поставить в режим редактирования. поймать СТРЛ не удалось потому как при компиляции PKBDLLHOOKSTRUCT не дефайнится.
т.е в МСДН это есть, а компилятор говорит что нет.



Что уже предпринималось:

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

Вопрос: что делать? и как делать правильно? может вообще без мессаджей обойтись?

2. Определяется что запущен explorer.exe след образом: находится самый последний хендл у окна и выполнятся GetModuleFileName

Вопрос: Это правильно вообще? есть другие более правильные методв определения того актвен ли стандартный шелл системы MS Windows?

3. Как этот проклятый PKBDLLHOOKSTRUCT заставить определятся?

Помогите плз , ну уж очень нужно.
Re: Хуки, Explorer.exe, PKBDLLHOOKSTRUCT
От: Akzhan Россия http://www.akzhan.midi.ru/devcorner/
Дата: 03.05.03 06:47
Оценка:
Здравствуйте, JuffinHally, Вы писали:

JH>Задача:


Прочитать MSDN не судьба???

JH>1. отследить что активен explorer.exe

JH> Это еще кое-как хотя тоже проблемы.

GetForegroundWindow and GetWindowThreadProcessId.

Get Shell process through previous function and GetShellWindow.

JH>2. на комбинацию клавиш( типа там CTRL+D ) повесить создание директории так как это делает меню->New->Folder. Т.е. создать


RegisterHotKey.

...ооо моя оборона, солнечный зайчик незрячего глаза...
С уважением,
Акжан, http://www.akzhan.midi.ru/devcorner/ — мой уголок разработчика
Re[2]: Хуки, Explorer.exe, PKBDLLHOOKSTRUCT
От: Keeper_andrew Беларусь  
Дата: 03.05.03 11:04
Оценка:
Здравствуйте, 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.


A>...ооо моя оборона, солнечный зайчик незрячего глаза...
Измеряй высоту своего ума по тени, которую он отбрасывает...
Re: Хуки, Explorer.exe, PKBDLLHOOKSTRUCT
От: MasterSID Россия  
Дата: 03.05.03 11:48
Оценка:
Елсли использовать хук, то нужно учесть, что процедура LowLevelKeyboardProc работает только в NT, во всем остальном нужно использовать KeyboardProc. И еще, если нужно чтобы хук ловил глобальные сообщения, то придется его в отдельной DLL писать. В MSDN это все очень хорошо описанно!!!
Re[2]: Хуки, Explorer.exe, PKBDLLHOOKSTRUCT
От: JuffinHally Россия  
Дата: 03.05.03 14:06
Оценка:
Здравствуйте, 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>...ооо моя оборона, солнечный зайчик незрячего глаза...


до конца прочитайте плз МОЕ сообщение.
Re[2]: Хуки, Explorer.exe, PKBDLLHOOKSTRUCT
От: JuffinHally Россия  
Дата: 03.05.03 14:20
Оценка:
Здравствуйте, MasterSID, Вы писали:

MSI>Елсли использовать хук, то нужно учесть, что процедура LowLevelKeyboardProc работает только в NT, во всем остальном нужно использовать KeyboardProc. И еще, если нужно чтобы хук ловил глобальные сообщения, то придется его в отдельной DLL писать. В MSDN это все очень хорошо описанно!!!



Повторюсь: Задача: комбинация клавиш должна ловится только в окне explorer.exe.
платфорома действительно w2k, wXP , корочек НТёвая...
Проблема: куча вариантов как ловить: хуками, RegisterHotKey , еще както байдой...
Непонятно как ПРАВИЛЬНЕЙ для задачи, как ЛУЧШЕ?
Re[2]: Хуки, Explorer.exe, PKBDLLHOOKSTRUCT
От: JuffinHally Россия  
Дата: 09.05.03 02:39
Оценка:
Здравствуйте, Akzhan, Вы писали:

A>Здравствуйте, JuffinHally, Вы писали:


JH>Задача:


A>Прочитать MSDN не судьба???


JH>1. отследить что активен explorer.exe

JH> Это еще кое-как хотя тоже проблемы.

A>GetForegroundWindow and GetWindowThreadProcessId.


A>Get Shell process through previous function and GetShellWindow.


МСДН?? судьба?? извольте: error C2065: 'GetShellWindow' : undeclared identifier..


JH>2. на комбинацию клавиш( типа там CTRL+D ) повесить создание директории так как это делает меню->New->Folder. Т.е. создать


A>RegisterHotKey.


A>...ооо моя оборона, солнечный зайчик незрячего глаза...
Re: Хуки, Explorer.exe, PKBDLLHOOKSTRUCT
От: maniac  
Дата: 10.05.03 00:47
Оценка:
По другим пунктам вроде куча ответов, по 3ему:

JH>3. Как этот проклятый PKBDLLHOOKSTRUCT заставить определятся?


у меня эта структурка определена в winuser.h. А вообще в таких случаях обычный поиск по файлам помогает.
/*
 * Structure used by WH_KEYBOARD_LL
 */
typedef struct tagKBDLLHOOKSTRUCT {
    DWORD   vkCode;
    DWORD   scanCode;
    DWORD   flags;
    DWORD   time;
    DWORD   dwExtraInfo;
} KBDLLHOOKSTRUCT, FAR *LPKBDLLHOOKSTRUCT, *PKBDLLHOOKSTRUCT;
Re[2]: Хуки, Explorer.exe, PKBDLLHOOKSTRUCT
От: JuffinHally Россия  
Дата: 10.05.03 01:17
Оценка:
Здравствуйте, maniac, Вы писали:

[skipped]
Ну что Вы в самом деле — разумеется включил эту winuser.h.
Я бы не полез сюда, если бы это так просто было бы...
Re[2]: Хуки, Explorer.exe, PKBDLLHOOKSTRUCT
От: JuffinHally Россия  
Дата: 10.05.03 01:21
Оценка:
Да , вот еще что , некто Акжан тут написал как определить что работа ведется в explorer.exe. Но имелся ввиду не получение хендла шелла. А именно определение что работа ведется именно в explorer.exe а не где либо еще. То тчо запушен он как шелл меня совершенно не интересует. Может Вы чтонить знаете по этому поводу?

И наконец конечно же — как орпеделить в какой директории сейчас explorer.exe ..вот еще вопрос.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.