![]() |
eXeL@B —› Программирование —› Click on tray icon |
Посл.ответ | Сообщение |
|
Создано: 07 мая 2009 10:00 · Личное сообщение · #1 |
|
Создано: 07 мая 2009 10:13 · Поправил: Jupiter · Личное сообщение · #2 сначала находишь хэндл окна через FindWindow, а потом: Code:
P.S. нашёл баг в тэге кода: если в коде есть два переноса строки подряд - то номер пустой строки выводится поверх номера предыдущей ----- EnJoy! ![]() |
|
Создано: 07 мая 2009 10:23 · Личное сообщение · #3 |
|
Создано: 07 мая 2009 15:29 · Личное сообщение · #4 |
|
Создано: 08 мая 2009 08:22 · Поправил: ewgeny1987 · Личное сообщение · #5 |
|
Создано: 08 мая 2009 17:37 · Поправил: Stack · Личное сообщение · #6 |
|
Создано: 08 мая 2009 18:04 · Личное сообщение · #7 я подразумеваю, что ты хочешь кликать на иконке конкретного приложения приложение заполняет структуру NOTIFYICONDATA тебе нужно узнать значение uID этой структуры подсмотреть его можно перед вызовом Shell_NotifyIcon с параметром NIM_ADD в моём предыдущем примере IDN_TRAY - это uID, который может быть любым (даже 0) и задаётся программистом приложения ----- EnJoy! ![]() |
|
Создано: 08 мая 2009 18:16 · Личное сообщение · #8 Stack пишет: так Сказать WM_USER + X uID может быть любым и совсем не обязательно больше WM_USER WM_USER+5 - это WM_SHELLNOTIFY (с этим у ТС проблем не возникло) Stack пишет: Смотри то что нужно в хелпе по мастаевскому тулбару при чём тут тулбар? инфа про трэй: WASM СТАТЬИ > Уроки Iczelion'а Win32 API. Урок 23. ----- EnJoy! ![]() |
|
Создано: 08 мая 2009 18:29 · Личное сообщение · #9 ![]() ![]() ----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube ![]() |
|
Создано: 09 мая 2009 12:15 · Личное сообщение · #10 Jupiter пишет: WM_USER+5 - это WM_SHELLNOTIFY (с этим у ТС проблем не возникло) C таким же успехом можно и WM_USER + 10 поставить - проще отладить и найти нужные параметры в самой проге. Jupiter пишет: при чём тут тулбар? Spy++ говорит что класс области икон в трее - ToolbarWindow32. Соответственно можно и эмулировать клик даже по иконке незнакомой проги. ----- Md5 fcbb6c9c9a5029b24d70f2d67c7cca74 ![]() |
|
Создано: 10 мая 2009 10:53 · Поправил: ewgeny1987 · Личное сообщение · #11 |
|
Создано: 10 мая 2009 11:55 · Личное сообщение · #12 |
|
Создано: 11 мая 2009 00:07 · Личное сообщение · #13 |
|
Создано: 13 мая 2009 07:15 · Личное сообщение · #14 |
|
Создано: 13 мая 2009 10:41 · Личное сообщение · #15 ewgeny1987 пишет: tihiy_grom а если иконка окажится в другом месте чем в прошлый раз то как быть? похоже, что ты избрал ректальный метод повторю ещё раз простейший алго: 1. Открываешь прогу в дизассемблере 2. Находишь ссылку на Shell_NotifyIcon 3. Определяешь uID структуры NOTIFYICONDATA, это и будет IDN_TRAY 4. С помощью FindWindow находишь хэндл окна проги (hWnd) 5. При помощи SendMessage посылаешь сообщение окну: Code:
если нужно вызвать меню: Code:
всё. никаких запар по поводу "в трее все меняется от раза к разу" P.S. всё это я уже говорил в предыдущих сообщениях, просто пробуй хоть что-то - если бы ты попытался реализовать - давно бы уже сделал ----- EnJoy! ![]() |
|
Создано: 14 мая 2009 04:30 · Личное сообщение · #16 |
|
Создано: 14 мая 2009 07:16 · Личное сообщение · #17 ewgeny1987 пишет: Вроде все понял нихрена ты не понял ты ленив и бестолков толковый человек, задав вопрос и получив ответ, приступает к решению задачи, но это не про тебя. ты ждёшь, пока за тебя сделают всё другие у тебя есть всё для решения поставленной задачи: описание алгоритма действий, пример работы с треем, описание констант, но ты ничего не сделал сам! я погорячился, сказав, что у тя не возникло проблем с WM_SHELLNOTIFY в посте #8: Jupiter пишет: WM_USER+5 - это WM_SHELLNOTIFY (с этим у ТС проблем не возникло) твои слова "все понял кроме точного значения WM_SHELLNOTIFY" означают, что ты даже не разбирался итог: WM_SHELLNOTIFY = WM_USER+5 просьба к модераторам: закройте топик, вся необходимая инфа у ТС есть ----- EnJoy! ![]() |
|
Создано: 14 мая 2009 07:51 · Личное сообщение · #18 |
|
Создано: 14 мая 2009 08:42 · Личное сообщение · #19 если бы ты не поленился и осилил мой пост #15, то уже давно бы увидел в дизассемблере, с какими параметрами вызывается Shell_NotifyIcon Code:
dwMessage будет NIM_ADD (константа) второй параметр - указатель на структуру NOTIFYICONDATA, в которой тебя интересуют uID и uCallbackMessage: Code:
----- EnJoy! ![]() |
|
Создано: 14 мая 2009 09:30 · Поправил: ewgeny1987 · Личное сообщение · #20 Спасибо всем за ответы и участье особенно тебе Jupiter , наконец то я разобрался. Вот мой рабочий код код для клика на трей иконке: invoke FindWindow,addr tClass,addr tText mov whandle,eax mov sn,24581; Значение для WM_SHELLNOTIFY естественно для другой программы не пойдет invoke SendMessage,whandle,sn,0,WM_LBUTTONDOWN invoke SendMessage,whandle,sn,0,WM_LBUTTONUP ![]() |
|
Создано: 14 мая 2009 09:53 · Личное сообщение · #21 |
![]() |
eXeL@B —› Программирование —› Click on tray icon |