Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> XP, Tray Baloon Hint... не работает! у кого работает? 
:(
    Опции темы
h2o
Дата 21.10.2005, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 19.8.2005

Репутация: нет
Всего: 1



разными способами добавлял иконку в трей - как описано в "Delphi: WinAPI и системное программирование" и через компонент!

BaloonHint не отображается в XP SP2! ТОЛЬКО... издаётся звук шлепка... и (если стоит галка "автоматически скрывать панель задач"), панель появляется на указанное время...
Я не пробовал это делать в Xp или Xp SP1, но в Longhorn (Vista beta 1) всё работает!!!!!!!!!!!!!

балун вызываю так.... через компонент FWTRAYICON
FWTrayIcon1.ShowBalloonHint('Hello World', 'Уведомление', TFWBalloonHintStyle(bhsInfo), 10);
всё стандартно!

пробовал не черезкомпонент. создал иконку как описанно в "Delphi: WinAPI и системное программирование". Нашёл где-то описание структуры, или класса или функции... или всё вместе, и влепил в прогу...
вызов был ShowBalloonHint('Hello World', 'Уведомление', TFWBalloonHintStyle(bhsInfo), 10);
где ShowBalloonHint кажись была функция!

ситуация та же - BaloonHint не отображается в XP SP2! ТОЛЬКО... издаётся звук шлепка... и (если стоит галка "автоматически скрывать панель задач"), панель появляется на указанное время...
Я не пробовал это делать в Xp или Xp SP1, но в Longhorn (Vista beta 1) всё работает!!!!!!!!!!!!!

я разозлился и всё потер.... но! это мне нужно! может знает кто как написать этот долбаный балун хинт иконки в трее, чтобы он показывался как надо в системах класса NT, тоесть...
windows: 2000(sp1,sp2,sp2,sp4), xp (sp1,sp2), windows 200 server (all sp), windows 2003 server (all sp), windows Vista!

может у кого уже готовый пример есть?


Добавлено @ 13:16
у меня Д7, не в этом ли дело?
--------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7!
PM MAIL   Вверх
Greblin
Дата 21.10.2005, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 30.5.2005
Где: Москва

Репутация: нет
Всего: нет



Попробуй компонент из RxLib. У меня подсказка нормально всплывает
PM MAIL WWW ICQ   Вверх
Stolzen
Дата 22.10.2005, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: 1
Всего: 48



Я пользуюсь компонентом CoolTrayIcon. Там все для этого есть. Если не найдешь, пиши - пришлю


--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
Poseidon
Дата 22.10.2005, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 10
Всего: 133



Попробуй через WinApi создавать иконку и показывать от нее сообщение. Подробнее можешь прочитать тут: http://vingrad.ru/DELPHI-SYSTEM-002915

Вот, прикрепил тебе unit с основными функциями что бы было легче разбираться.

Это сообщение отредактировал(а) Poseidon - 22.10.2005, 14:26

Присоединённый файл ( Кол-во скачиваний: 41 )
Присоединённый файл  TrayIcon.pas 7,01 Kb


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Albinos_x
Дата 23.10.2005, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 3
Всего: 108



компанентом не пользуюсь, делаю ручками...работает нормально... здесь даже где-то пример был...воспользуйся поиском....


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Poseidon
Дата 23.10.2005, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 10
Всего: 133



Цитата(Albinos_x @ 23.10.2005, 16:29)
здесь даже где-то пример был...воспользуйся поиском....
Ничем не нужно пользоватся. Ты видать имеешь ввиде вот эту мою статью. Я уже давал выше на нее ссылку. Так вот почитать её конечно стоит, для понимания. А вот воспользоваться ИМХО лучше тем юнитом, каторый я прикрепил выше. Там все сделано на основе той статьи. С русским описанием. Что не понятно, в РМ.


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Alex
Дата 24.10.2005, 01:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 6
Всего: 162



М
 
Albinos_x, спасибо за ответы, но немножко по четче давайте их пожалуйста. Если говорите, что пишите сами, то примерчик совсем не лишним был бы как вы это делаете



--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Albinos_x
Дата 24.10.2005, 06:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 3
Всего: 108



Цитата
Albinos_x, спасибо за ответы, но немножко по четче давайте их пожалуйста. Если говорите, что пишите сами, то примерчик совсем не лишним был бы как вы это делаете


Код

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, Menus, ShellAPI;

const MyTrayIcon = WM_USER+1;
type
 TForm1 = class(TForm)
   PopupMenu1: TPopupMenu;
   ...
 private
   { Private declarations }
   procedure MTIcon(var a: TMessage); message MyTrayIcon;
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

 type
TTimeoutOrVersion = record
case Integer of
0: (uTimeout: UINT);
1: (uVersion: UINT);
end;
TNotifyIconDataEx = record
cbSize: DWORD;
hWnd: HWND;
uID: UINT;
uFlags: UINT;
uCallbackMessage: UINT;
hIcon: HICON;
szTip: array[0..127] of AnsiChar; 
dwState: DWORD;
dwStateMask: DWORD;
szInfo: array[0..255] of AnsiChar;
TimeoutOrVersion: UINT; 
szInfoTitle: array[0..63] of AnsiChar;
dwInfoFlags: DWORD;
guidItem: TGUID;
end;

       TBalloonTimeout = 10..30{seconds};
       TBalloonIconType = (bitNone,    // нет иконки 
                     bitInfo,    // информационная иконка (синяя) 
                     bitWarning, // иконка восклицания (жёлтая) 
                     bitError);  // иконка ошибки (краснаа) 



const
   NIIF_NONE = $00000000;
   NIIF_INFO = $00000001;
   NIIF_WARNING = $00000002;
   NIIF_ERROR = $00000003;
   NIF_STATE = $00000008;
   NIF_INFO = $00000010;
   NIF_GUID = $00000020;

...


var NID: TNotifyIconData;

// обработка щелчков мыши
procedure TForm1.MTIcon(var a: TMessage);
var P:TPoint;
begin
case a.LParam of
  WM_LBUTTONDBLCLK :  begin
                      Show;
                      end;
  WM_RBUTTONDOWN   :  begin
                      GetCursorPos(P);
                      PopupMenu1.Popup(P.X,P.Y);
                      end;
    end;
end;

// процесс создания формы
procedure TForm1.FormCreate(Sender: TObject);
begin
// невидимая форма
Application.ShowMainForm:=false;
// параметры иконки
with NID do
 begin
 cbSize:= SizeOf(TNotifyIconData);
 Wnd:=Handle;
 uID:=1;
 uFlags:=NIF_ICON or NIF_MESSAGE or NIF_TIP;
 uCallbackMessage:=MyTrayIcon;
 hIcon:=Application.Icon.Handle;
 szTip:='Это я!!!';
 end;
// добавляем иконку  
Shell_NotifyIcon(NIM_ADD,@NID);
end;

procedure TForm1.N1Click(Sender: TObject);
begin
Show;
end;

// событие завершение работы приложения
procedure TForm1.FormDestroy(Sender: TObject);
begin
// уничтожаем иконку
Shell_NotifyIcon(NIM_Delete,@NID);
end;

// функция создания сообщения из трея
function MessWin(const Window: HWND; const IconID: Byte; const Timeout: TBalloonTimeout; const BalloonText, BalloonTitle: String; const BalloonIconType: TBalloonIconType): Boolean;
const
 aBalloonIconTypes : array[TBalloonIconType] of Byte = (NIIF_NONE, NIIF_INFO, NIIF_WARNING, NIIF_ERROR);
var
 NID_50 : TNotifyIconDataEx;
begin
 FillChar(NID_50, SizeOf(TNotifyIconDataEx), 0);
 with NID_50 do begin
   cbSize := SizeOf(TNotifyIconDataEx);
   hWnd := Window;
   uID := IconID;
   uFlags := NIF_INFO;
   StrPCopy(szInfo, BalloonText); 
   TimeoutOrVersion := Timeout * 1000;
   StrPCopy(szInfoTitle, BalloonTitle);
   dwInfoFlags := aBalloonIconTypes[BalloonIconType]; 
 end{with};
 Result := Shell_NotifyIcon(NIM_MODIFY, @NID_50); 
end;

// по какому-то событию показываем сообщение
// например клику по форме
procedure TForm1.FormClick(Sender: TObject);
begin
MessWin(Form1.Handle, 1, 10, 'Здесь мой текст', 'заголовок', bitWarning);
end;




--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
ilya198293
Дата 19.6.2007, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 17.3.2007
Где: Сириус, созвездие Большого Пса

Репутация: нет
Всего: нет



Что-то вообще тяжко с сообщением в трее...
По инету всего много, но что-то у меня не получается...
Использую CoolTrayIcon1...
Пишу
Код

CoolTrayIcon1.ShowBalloonHint('Заколовок','Сообщение',bitInfo,10);

но выходит ошибка - ругается на тип bitInfo, что типа несоответствие типов TBalloonHintIcon и TBalloonIconType...
--------------------
Недавно пытался объяснить сыну, кто такой модератор. Сошлись на Мойдодыре.
PM MAIL   Вверх
Rouse_
Дата 19.6.2007, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 469
Регистрация: 23.4.2005

Репутация: 18
Всего: 29



В FWTrayIcon оберни вызов Shell_NotifyIcon в Win32Check т.е. должно получиться:

Код

//  Показываем BalloonHint для нашей иконки в трее
// =============================================================================
function TFWTrayIcon.ShowBalloonHint(const Hint, Title: String;
  Style: TFWBalloonHintStyle; TimeOut: TFWBalloonTimeout): Boolean;
const
  BalloonStyle: array[TFWBalloonHintStyle] of Byte =
    (NIIF_NONE, NIIF_INFO, NIIF_WARNING, NIIF_ERROR);
var
  BalonNID: _NOTIFYICONDATAA_V2;
begin
  // Выполняем данную процедуру только если версия Shell32.dll больше четвертой
  Result := GetShellVersion >= NEED_SHELL_VER;
  if not Result then Exit;
  // Для отображения BalloonHint используем немного расширенную структуру
  ZeroMemory(@BalonNID, NOTIFYICONDATA_V2_SIZE);
  BalonNID.cbSize := NOTIFYICONDATA_V2_SIZE;
  // Копируем необходимые св-ва со старой структуры
  BalonNID.Wnd := FTrayIcon.Wnd;
  BalonNID.uID := FTrayIcon.uID;
  // Добавляем свои данные
  StrPCopy(BalonNID.szInfo, Hint);
  StrPCopy(BalonNID.szInfoTitle, Title);
  BalonNID.UNIONNAME.uTimeout := TimeOut * 1000;
  BalonNID.dwInfoFlags := BalloonStyle[Style];
  // Выставляем флаг !!!
  BalonNID.uFlags := NIF_INFO;
  // Вуаля ;)
  Win32Check(Shell_NotifyIcon(NIM_MODIFY, @BalonNID));
end;

Если что-то не так - то ты сразу увидишь причину ошибки.


--------------------
 Vae Victis
(Горе побежденным (лат.))
Демо с открытым кодом: http://rouse.drkb.ru 
PM MAIL WWW ICQ   Вверх
ilya198293
Дата 20.6.2007, 06:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 17.3.2007
Где: Сириус, созвездие Большого Пса

Репутация: нет
Всего: нет



Вот здесь
http://www.delphisources.ru/pages/sources/...t_trayicon.html
написано что ограничения у текста в трее у компонента FWTrayIcon 255 символов...мне нужно больше - около 700 символов не считая пробелов

Добавлено через 2 минуты и 59 секунд
и пытался его просто для эксперемента установить...сказал что нет фала ресурса
--------------------
Недавно пытался объяснить сыну, кто такой модератор. Сошлись на Мойдодыре.
PM MAIL   Вверх
Rouse_
Дата 20.6.2007, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 469
Регистрация: 23.4.2005

Репутация: 18
Всего: 29



Цитата(ilya198293 @  20.6.2007,  07:41 Найти цитируемый пост)
написано что ограничения у текста в трее у компонента FWTrayIcon 255 символов...мне нужно больше - около 700 символов не считая пробелов

Это не ограничение компонента, это ограничение системы smile
Цитата(ilya198293 @  20.6.2007,  07:41 Найти цитируемый пост)
и пытался его просто для эксперемента установить...сказал что нет фала ресурса 

А ты качай его с родного сайта smile
http://rouse.drkb.ru/components.php#fwtray


--------------------
 Vae Victis
(Горе побежденным (лат.))
Демо с открытым кодом: http://rouse.drkb.ru 
PM MAIL WWW ICQ   Вверх
ilya198293
Дата 20.6.2007, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 17.3.2007
Где: Сириус, созвездие Большого Пса

Репутация: нет
Всего: нет



Эту ссылку я первым делом прошарил когда читал сообщение от 19.6.2007, 15:46.
В BDS открываю файл FWExtTrayOnce.dpk как проект.
Не находит ресурс файл FWExtTrayOnce.res. Типа пытается его пересоздать.
Потом начинаю компилировать и вот тут он не компилируется.

Ну если это ограничение системы тогда нужно подумать нужно ли мне это вообще...хотя чисто для практики стоит покопаться...

--------------------
Недавно пытался объяснить сыну, кто такой модератор. Сошлись на Мойдодыре.
PM MAIL   Вверх
Rouse_
Дата 20.6.2007, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 469
Регистрация: 23.4.2005

Репутация: 18
Всего: 29



Цитата(ilya198293 @  20.6.2007,  12:03 Найти цитируемый пост)
Не находит ресурс файл FWExtTrayOnce.res. Типа пытается его пересоздать.

Перед тем как компилировать - нужно его собрать. Нажми Build первым делом.
Цитата(ilya198293 @  20.6.2007,  12:03 Найти цитируемый пост)
Ну если это ограничение системы тогда нужно подумать нужно ли мне это вообще

Да это системное ограничение. Посмотреть можешь тут http://msdn2.microsoft.com/en-us/library/ms538121.aspx
Обрати внимание на размеры поллей в структуре.
Код

typedef struct _NOTIFYICONDATA {
    DWORD cbSize;
    HWND hWnd;
    UINT uID;
    UINT uFlags;
    UINT uCallbackMessage;
    HICON hIcon;
    TCHAR szTip[64];
    DWORD dwState;
    DWORD dwStateMask;
    TCHAR szInfo[256];
    union {
        UINT uTimeout;
        UINT uVersion;
    };
    TCHAR szInfoTitle[64];
    DWORD dwInfoFlags;
    GUID guidItem;
    HICON hBalloonIcon;
} NOTIFYICONDATA, *PNOTIFYICONDATA;



--------------------
 Vae Victis
(Горе побежденным (лат.))
Демо с открытым кодом: http://rouse.drkb.ru 
PM MAIL WWW ICQ   Вверх
ilya198293
Дата 20.6.2007, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 17.3.2007
Где: Сириус, созвездие Большого Пса

Репутация: нет
Всего: нет



Попробовал всё в 7-ке - прошло и без сборки...просто выдал какое-то предупреждение...но скомпилировать скомпилировал...
А в 2006 продолжает выдавать ту же самую ошибку при Build.

Код

  public
    function GetAttributes: TPropertyAttributes; override;
    procedure SetValue(const Value: string); override;
    procedure GetValues(Proc: TGetStrProc); override;
{$IFDEF DFS_COMPILER_5_UP}
    procedure ListMeasureHeight(const Value: string; ACanvas: TCanvas;
      var AHeight: Integer);
    procedure ListMeasureWidth(const Value: string; ACanvas: TCanvas;
      var AWidth: Integer);
    procedure ListDrawValue(const Value: string; ACanvas: TCanvas;
      const ARect: TRect; ASelected: Boolean); 
{$ENDIF}
  end;


procedure Register;


причём перекидывается на последний end из приведённого текста

Добавлено через 2 минуты и 50 секунд
и ещё говорит при этом что неизвестен идентификатор ListMeasureHeight, ListMeasureWidth, ListDrawValue
--------------------
Недавно пытался объяснить сыну, кто такой модератор. Сошлись на Мойдодыре.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0621 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.