Tray на Vb6

Тема в разделе "Другие", создана пользователем GreatLion, 25 ноя 2005.

Статус темы:
Закрыта.
  1. GreatLion

    GreatLion Гость

    :( Люди помогите. У меня возникла проблема с трэйбаром. Как ни пытался, где ни искал(в нете, в справочниках и т.д.) нигде не мог найти как написать трэй. Трэй должен выискивать окна, которые в нем сидят, отображать их иконки, а также самое важное - посылать им сообщения типа левый клик, правый нажата кнопка и т.д. Если кто знает ссылки, или есть примеры, плиз, помогите.

    И еще один вопрос? А как мне екстрактировать икону из exe'шника в IPictureDisp? Че не пробувал, не получилось. Пожалуйста, помогите, кто может, а то в воскресенье уже горит.
     
  2. Hetman

    Hetman Гость

    Вот небольшой FAQ, надеюсь тнайдёшь что-нибудь полезное.
    По некоторым вопросам без API не обойтись.(я лично не представляю как без API отправлять события другим программам).

    как подключить api функции можно найти в Microsoft Visual Basic 6.0->Microsoft Visual Basic 6.0 Tools->API Text Viewer (идёт в поставке с VB6).
    Загрузив базу WIN32API.TXT
    может чего найдёшь здесь
    www.vbnet.ru
     

    Вложения:

  3. GreatLion

    GreatLion Гость

    Огромное тебе спасибо. Я посмотрел те FAQ'и - там много очень полезного, хотя и не просмотрел пока полностью. Большое спасибо. Хочу заметить, что почти никто не знает что вообще сделать можно. Еще раз спасибо!!!!! :(
     
  4. Barmutik

    Barmutik Гость

    Я в своё время прорыл много материалов .. НО ничего так толком и не нашёл ..

    Потом выянислось что есть какой-то набор функций, но они не документированные.. в итоге я нашёл пак компонентов (без исходников B) ) и воспользовался для решения стоящей тогда задачи...

    Лично мне было бы тоже интересно узнать как это можно сделать...

    Если удастся что-то отрыть запостите сюда плиз ...
     
  5. Hetman

    Hetman Гость

    В файле WinAPI_guide_vb_.rar имеется неплохой faq по api
    так вот там есть описание функции SendMessage

    вот только сообщения когторые можно собирать по всем статьям, вот например то что относиться к вопросу:
    MK_CONTROL
    Нажата клавиша Ctrl.
    MK_LBUTTON
    Нажата левая кнопка мыши.
    MK_MBUTTON
    Нажата средняя кнопка мыши.
    MK_RBUTTON
    Нажата правая кнопка мыши.
    MK_SHIFT
    Нажата клавиша Shift.
    MK_XBUTTON1
    Windows 2000: Нажата первая кнопка X.
    MK_XBUTTON2
    Windows 2000: Нажата вторая кнопка X
     
  6. Hetman

    Hetman Гость

    А что касательно выковыривания иконок -
    необходимо подключить функцию

    Код (Text):
    Declare Function ExtractIcon Lib "shell32.dll" _     Alias "ExtractIconA" (byval hInst as Long, _     byval lpszExeFileName as string, _     byval nIconIndex as Long) as Long
    Пример
     
  7. GreatLion

    GreatLion Гость

    Проект в движении. Только я запоролся на одной штуке:

    мне нужно поймать информацию из сообщения, посланного форме с определенным hwnd. Пример: какая-то программа создает и описывает объект, хранящий информацию об иконке, и посылает его в оконном сообщении окну трея. Так вот, нужно поймать это оконное собщение и выловить из него этот объект. Тогда все получится. Кто знает, где можно достать эту функцию, или знает эту функцию и ее использование, пожалуйста, и еще раз пожалуйста, напишите мне. С большим нетерпением буду ждать ответа. Плиз, помогите! :)
     
  8. Hetman

    Hetman Гость

    во-первых, какое ты посылаешь сообщение?(код, SendMessage?) если да, то там же два дополнительных параметра.
    Условно говоря, если сообщение говорит программе о каком-то событии и передаём через параметры ниши данные, то в самой программе ловим это событие и затем обрабатываем параметры, через которые передаються данные :) во закрутил.
     
  9. Hetman

    Hetman Гость

    Если ты посылаешь клик, то его и обрабатывай. Или чёго у тебя там?
     
  10. GreatLion

    GreatLion Гость

    <!--QuoteBegin-Hetman+29:11:2005, 02:30 -->
    <span class="vbquote">(Hetman @ 29:11:2005, 02:30 )</span><!--QuoteEBegin-->Если ты посылаешь клик, то его и обрабатывай. Или чёго у тебя там?
    [snapback]27780" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    У меня другое:
    кто-то, неизвестно кто, отправляет сообщение, а я его должен получить, зная hwnd окна, которому послали сообщение.
     
  11. Barmutik

    Barmutik Гость

    Вешайте хук на систему и ловите сообщения .. потом фильтруйте по хэндлу окна и смотрите что Вам надо ...
     
  12. GreatLion

    GreatLion Гость

    А вот сообщения трэю не ловятся. Я вычислил его hwnd, а вот сообщения его - нет. Даже клики мышкой.

    Есть второй вариант: но у меня не получилось отправить сообщение окну с hwnd, который я знаю, который сидит в трэе. Обычному окну - отправляет, а в трэе - нет. Помогите, как отправить это сообщение?
     
  13. Barmutik

    Barmutik Гость

    Насколько мне известно в трэе не сидит никакое окно .. там другой механизм ..

    Просто приложения которые хотят иметь там иконку просто регистрируют его и казывают какому окну и какое сообщение посылать...

    Посмотрите ShellNotifyIcon...
     
  14. GreatLion

    GreatLion Гость

    Скажем, что я нашел те окна, которые сидят в трэе. У них особый обработчик событий. Но сообщения им не посылаются. Я так думаю, что это из-за того, что они скрыты(Visible=False). Но как тогда посылать сообщения?
     
  15. Hetman

    Hetman Гость

    На сайте Xakep.ru имеется статейка как изменить кнопку "пуск"
    так вод там есть такая фраза:
    " Кнопка "Пуск" имеет имя класса "Shell_TrayWnd". Точнее сказать, это класс всей панели задач."
    Т.е имхо нужно передавать сообщение иконке как элементу трея, а не как отдельному окну.

    Или может поискать исходники программы где это уже сделано?
     
  16. Guest

    Guest Гость

    Не потскажете ну ГДЕ найти ПОЛНЫЙ справочник по API - функциям к visualBasic - у(6.0)???????????????????????????????????????????????????
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей