Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 5.00
DrMcSheen
60 / 60 / 3
Регистрация: 25.05.2009
Сообщений: 521
#1

Как программно послать двойной щелчок мыши иконке в трее? - Visual C++

07.10.2009, 07:01. Просмотров 2045. Ответов 5
Метки нет (Все метки)

Собснно вопрос в том, как определить хэндл окна, которому нужно передать WM_LBUTTONDBLCLK.
Spy++ показывает только весь трэй, а мне надо щёлкнуть по определённой иконке.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.10.2009, 07:01
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как программно послать двойной щелчок мыши иконке в трее? (Visual C++):

Двойной щелчёк мыши
Как отследить дабл клик по списку?

Как послать сообщение WM_Какое-то иконке в трее ?
ну там где часы, аська и прочие иконки - послать одной из них ? иконку я...

Как имитировать двойной щелчок правой кнопкой мыши?
Реализовать собственное событие (имитация) нажатие клавиш мыши или клавиатуры....

Угадать программу по иконке в трее
Доброго времени суток! От пользователя получили скриншот, в трее видна иконка...

Проблема, меню на иконке в трее и клавиатура.
проблема состоит в следующем: размещая иконку в трею, по правому клику...

Отреагировать на нажатие по иконке в трее и выполнить действия
Иконку вроде в трей посадил... Проблема: как можно отреагировать на нажатие...

5
Patch
2336 / 492 / 22
Регистрация: 01.04.2009
Сообщений: 2,181
07.10.2009, 11:08 #2
Вопрос не понятен.
Spy++ - это Spy++. А при чем здесь трей?
Читайте правила оформления вопросов.
0
DrMcSheen
60 / 60 / 3
Регистрация: 25.05.2009
Сообщений: 521
07.10.2009, 11:21  [ТС] #3
Цитата Сообщение от Patch Посмотреть сообщение
Вопрос не понятен.
Да, согласен, извините.

Есть чужая программа, запускается из автозагрузки и потом висит в трее и для её активизации надо её даббл-клик, блин.
Я хочу, чтобы она автозагружалась да ещё и активировалась без моего участия. Напишу небольшой код, который сам загрузится, найдёт нужное окно, передаст ему дблклк и самоубьётся.

Теперь мой вопрос: как определить хэндл окна ЧУЖОЙ программы, которому нужно передать WM_LBUTTONDBLCLK. Spy++ показывает только весь трэй, а мне надо щёлкнуть по определённой иконке.
0
Patch
2336 / 492 / 22
Регистрация: 01.04.2009
Сообщений: 2,181
07.10.2009, 12:25 #4
иконка в трее не является окном.
и собственного хэндла не имеет.
обратится к иконке, сделанной другой программой нельзя.

единственный вариант, который приходит в голову - сделать программу, ЗАПУСКАЮЩУЮ ту, которую вам надо, и, в качестве родительского процесса, ПЕРЕХВАТЫВАЮЩУЮ запросы функции Shell_NotifyIcon()
или-же сделать внедряемый DLL с теми-же функциями.
а уже потом, через Shell_NotifyIcon() можно послать команду на разворачивание.
0
DrMcSheen
60 / 60 / 3
Регистрация: 25.05.2009
Сообщений: 521
08.10.2009, 06:27  [ТС] #5
Цитата Сообщение от Patch Посмотреть сообщение
обратиться к иконке, сделанной другой программой нельзя.
В таком случае, мне интересно, какие события происходят и как винда работает с иконками в трее? Она ведь двойной щелчок как-то обрабатывает?
0
Patch
2336 / 492 / 22
Регистрация: 01.04.2009
Сообщений: 2,181
08.10.2009, 10:51 #6
елки...
MSDN открой!
Shell_NotifyIcon Function

Sends a message to the taskbar's status area.

Syntax

BOOL Shell_NotifyIcon(
DWORD dwMessage,
PNOTIFYICONDATA lpdata
);

Parameters

dwMessage
[in] A value that specifies the action to be taken by this function. It can have one of the following values:

NIM_ADD
0x00000000. Adds an icon to the status area. The icon is given an identifier in the NOTIFYICONDATA structure pointed to by lpdata—either through its uID or guidItem member. This identifier is used in subsequent calls to Shell_NotifyIcon to perform later actions on the icon.
NIM_MODIFY
0x00000001. Modifies an icon in the status area. NOTIFYICONDATA structure pointed to by lpdata uses the ID originally assigned to the icon when it was added to the notification area (NIM_ADD) to identify the icon to be modified.
NIM_DELETE
0x00000002. Deletes an icon from the status area. NOTIFYICONDATA structure pointed to by lpdata uses the ID originally assigned to the icon when it was added to the notification area (NIM_ADD) to identify the icon to be deleted.
NIM_SETFOCUS
0x00000003. Shell32.dll version 5.0 and later only. Returns focus to the taskbar notification area. Notification area icons should use this message when they have completed their user interface (UI) operation. For example, if the icon displays a shortcut menu, but the user presses ESC to cancel it, use NIM_SETFOCUS to return focus to the notification area.
NIM_SETVERSION
0x00000004. Shell32.dll version 5.0 and later only. Instructs the notification area to behave according to the version number specified in the uVersion member of the structure pointed to by lpdata. The version number specifies which members are recognized.

NIM_SETVERSION must be called every time a notification area icon is added (NIM_ADD)>. It does not need to be called with NIM_MOFIDY. The version setting is not persisted once a user logs off.

For details, see the Remarks section.

lpdata
[in] A pointer to a NOTIFYICONDATA structure. The content of the structure depends on the value of dwMessage. It can define an icon to add to the notification area, cause that icon to display a notification, or identify an icon to modify or delete.

Return Value

Returns TRUE if successful, or FALSE otherwise. If dwMessage is set to NIM_SETVERSION, the function returns TRUE if the version was successfully changed, or FALSE if the requested version is not supported.

You can call GetLastError for more specific information about a failure case. The most common cause of failure is that the taskbar window doesn't exist or is unresponsive. GetLastError in that case returns E_FILE_NOT_FOUND.

Remarks

As of Microsoft Windows 2000 (Shell32.dll version 5.0), Shell_NotifyIcon mouse and keyboard events are handled differently than in earlier Shell versions found on Microsoft Windows NT 4.0, Windows 95, and Windows 98. The differences include the following:

* If a user selects a notify icon's shortcut menu with the keyboard, the Shell now sends the associated application a WM_CONTEXTMENU message. Earlier versions send WM_RBUTTONDOWN and WM_RBUTTONUP messages.
* If a user selects a notify icon with the keyboard and activates it with the SPACEBAR or ENTER key, the version 5.0 Shell sends the associated application an NIN_KEYSELECT notification. Earlier versions send WM_RBUTTONDOWN and WM_RBUTTONUP messages.
* If a user selects a notify icon with the mouse and activates it with the ENTER key, the Shell now sends the associated application an NIN_SELECT notification. Earlier versions send WM_RBUTTONDOWN and WM_RBUTTONUP messages.

As of Windows XP (Shell32.dll version 6.0), if a user passes the mouse pointer over an icon with which a balloon notification is associated, the Shell sends the following messages:

* NIN_BALLOONSHOW. Sent when the balloon is shown (balloons are queued).
*

NIN_BALLOONHIDE. Sent when the balloon disappears. For example, when the icon is deleted. This message is not sent if the balloon is dismissed because of a timeout or if the user clicks the mouse.

As of Windows 7, NIN_BALLOONHIDE is also sent when a notification with the NIIF_RESPECT_QUIET_TIME flag set attempts to display during quiet time (a user's first hour on a new computer). In that case, the balloon is never displayed at all.
* NIN_BALLOONTIMEOUT. Sent when the balloon is dismissed because of a timeout.
* NIN_BALLOONUSERCLICK. Sent when the balloon is dismissed because the user clicked the mouse.

In addition to those messages, as of Windows Vista (Shell32.dll version 6.0.6), if a user passes the mouse pointer over an icon with which a balloon notification is associated, the Windows Vista Shell also adds the following messages:

* NIN_POPUPOPEN. Sent when the user hovers the cursor over an icon to indicate that the richer pop-up UI should be used in place of a standard textual tooltip.
* NIN_POPUPCLOSE. Sent when a cursor no longer hovers over an icon to indicate that the rich pop-up UI should be closed.

Regardless of the operating system version, you can select which way the Shell should behave by calling Shell_NotifyIcon with dwMessage set to NIM_SETVERSION. Set the uVersion member of the NOTIFYICONDATA structure pointed to by lpdata to indicate whether you want Windows 2000, Windows Vista, or pre-version 5.0 (Windows 95) behavior.
Note The messages discussed above are not conventional Windows messages. They are sent as the lParam value of the application-defined message that is specified in the uCallbackMessage member of the NOTIFYICONDATA structure pointed to by lpdata, when Shell_NotifyIcon is called with the NIM_ADD flag set in dwMessage.

As of Windows XP Service Pack 2 (SP2), a custom icon can be displayed in the notification balloon. This allows the calling process to customize the notification beyond the previously available options of info, warning, and error, and distinguish it from other types of notification for the user.

Function Information

Minimum DLL Version shell32.dll version 4.0 or later
Custom Implementation No
Header shellapi.h
Import library shell32.lib
Minimum operating systems Windows NT 4.0, Windows 95
Unicode Implemented as ANSI and Unicode versions.
0
08.10.2009, 10:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.10.2009, 10:51
Привет! Вот еще темы с решениями:

Двойной щелчок мышью: два WM_LBUTTONUP при одном WM_LBUTTONDOWN - как так?
Делая двойной щелчок в клиентской зоне я проверял какие приходят Message.Msg и...

Двойной щелчок мышью: два WM_LBUTTONUP при одном WM_LBUTTONDOWN - как так?
Делая двойной щелчок в клиентской зоне я проверял какие приходят Message.Msg и...

Как отправить щелчок мыши в координаты?
как отправить щелчек мыши в координаты? То есть в коде указываем координаты...

Как отловить щелчок мыши вне формы?
Как сделать что бы проверялось, если нажата левая кнопка мыши вне формы то...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru