Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с notifyIcon, Приложение вываливается при смене иконки 
V
    Опции темы
Torgovec
Дата 29.11.2007, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Есть программка, которая при опред. условиях сменяет значок в трее, значок берется из imageList'а.
Присваивание выполняется след. функцией:

Код

this.notifyIcon1.Icon = Icon.FromHandle(((Bitmap)imageList1.Images[0]).GetHicon());


Проблема состоит в том, что когда я прихожу по утрам на работу я вижу ошибку этого приложения, которая выглядит так:
Код

System.Runtime.InteropServices.ExternalException was unhandled
  Message="A generic error occurred in GDI+."
  Source="System.Drawing"
  ErrorCode=-2147467259
  StackTrace:
       at System.Drawing.Bitmap.GetHicon()
       at ChangingForms.Form1.timer1_Tick(Object sender, EventArgs e) in D:\temp\ConnectionChecker\ConnectionChecker\Form1.cs:line 35
       at System.Windows.Forms.Timer.OnTick(EventArgs e)
       at System.Windows.Forms.Timer.TimerNativeWindow.WndProc(Message& m)
       at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
       at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
       at System.Windows.Forms.Application.Run(Form mainForm)
       at ChangingForms.Program.Main() in D:\temp\ConnectionChecker\ConnectionChecker\Program.cs:line 17
       at System.AppDomain.nExecuteAssembly(Assembly assembly, String[] args)
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()


Самый прикол состоит в том, что во время рабочего дня, это ни разу! не проявлялось, у меня есть подозрение, что ошибка проявляется только когда комп "залочен"(сочетание клавиш Win+L), именно в таком состоянии я оставляю его уходя с работы.

Я пробовал менять иконку в трее вот таким способом:
Код

this.notifyIcon1.Icon = Icon.FromHandle(((Bitmap)imageList1.Images[imageList1.Images.IndexOfKey("OK.ico")]).GetHicon());


Но в итоге получаю ту же ошибку...
Буду рад любым советам, т.к. над проблемой бьюсь уже давно.
PM MAIL   Вверх
Retro
Дата 1.12.2007, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Диалектик
***


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

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



Что-то ничего в голову не приходит, может может проблема с доступом, может нужно версию GDI+ обновить ( по крайней мере так я прочитал на одном форуме ).

Прочитал интересную фразу:
Цитата

A "Generic error" is usually Microsofts way of saying "something is wrong, but we can't tell what, exactly."


Еще, с одного форума:
Цитата

Off the top of my head I would say, supply a full path for the file name and
also make sure that your application has write access that location.
Better yet Create a IO.FileStream object from the filename you want to save
and specify that you need write access, then save to the FileStream.




PM MAIL   Вверх
Torgovec
Дата 4.12.2007, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Retro @  1.12.2007,  12:55 Найти цитируемый пост)
Что-то ничего в голову не приходит, может может проблема с доступом, может нужно версию GDI+ обновить ( по крайней мере так я прочитал на одном форуме ).

И действительно, после полного сноса VS2005 и всех его хвостов и установки VS2008 ошибка исчезла сама собой, спасибо Вам за совет про обновление.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




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


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

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