Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Power Basic

Страница: 1 |

 

  Вопрос: Access violation [Delphi] Добавлено: 05.09.05 11:08  

Автор вопроса:  freeloader  | Web-сайт: freeloader.folder-pro.net | ICQ: 50804884 
procedure TForm1.FormCreate(Sender: TObject);
 var
 nidTemp :PNOTIFYICONDATAA;
begin
 nidTemp.cbSize:=sizeof(nidTemp);
 nidTemp.Wnd:=Form1.WindowHandle;
 nidTemp.uID:=0;
 nidTemp.uFlags:=NIF_ICON or NIF_TIP;
 nidTemp.uCallbackMessage:=0;
 nidTemp.hIcon:=Form1.Icon.Handle;
 nidTemp.szTip:='test'+chr(0);
 Shell_NotifyIconA(0,nidTemp);
end;

Не хочет работать, показывает:
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00000000. Read of address 00000000'. Process stopped. Use step or Run to continue.

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 freeloader



ICQ: 50804884 

Вопросов: 72
Ответов: 642
 Web-сайт: freeloader.folder-pro.net
 Профиль | | #1
Добавлено: 05.09.05 11:17
нетуда запостил, кто умеет перенесите в Офф-Топ пожалуйста.

Ответить

Номер ответа: 2
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #2 Добавлено: 05.09.05 11:48
PNOTIFYICONDATAA - указатель, а ты работаешь с ним как со структурой.

Ответить

Номер ответа: 3
Автор ответа:
 freeloader



ICQ: 50804884 

Вопросов: 72
Ответов: 642
 Web-сайт: freeloader.folder-pro.net
 Профиль | | #3
Добавлено: 05.09.05 16:00
Спасибо, это я уже в злости не знал что делать, вот и начал фигачить все подряд лишь бы работало :)

Короче это не ВБ, а Делфи, поэтому тут немного специфичный подход и структуры представляются в процедуру со знаком @.
Если у кого будет похожая проблема, вот рабочий.

procedure TForm1.SystemTray(MODifi :byte; mIcon :Word);
 var
 nidTemp :NOTIFYICONDATA;
begin
 nidTemp.cbSize:=sizeof(nidTemp);
 nidTemp.Wnd:=Form1.WindowHandle;
 nidTemp.uID:=0;
 nidTemp.uFlags:=NIF_ICON or NIF_TIP;
 nidTemp.uCallbackMessage:=0;
 nidTemp.hIcon:=mIcon;
 nidTemp.szTip:='Ìåíåäæåð ãîðÿ÷èõ êëàâèøü'+chr(0);
 Shell_NotifyIconA(MODifi,@nidTemp);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 SystemTray(0,LoadIcon(hInstance,'MAINICON'));
end;

Ответить

Номер ответа: 4
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #4
Добавлено: 05.09.05 23:27
это просто передаешь указатель...
мона еще так, кидал те в аську, ну да мало-ли другим пригодится, дабы был выбор :))

procedure TForm1.SystemTray(MODifi :byte; mIcon :Word);
var
 nidTemp :PNOTIFYICONDATA;

begin
 GetMem(nidTemp, SizeOf(NOTIFYICONDATA));

 nidTemp.cbSize:=sizeof(nidTemp);
 nidTemp.Wnd:=Form1.WindowHandle;
 nidTemp.uID:=0;
 nidTemp.uFlags:=NIF_ICON or NIF_TIP;
 nidTemp.uCallbackMessage:=0;
 nidTemp.hIcon:=Form1.Icon.Handle;
 nidTemp.szTip:='test' + #0;

 Shell_NotifyIcon(0, nidTemp);

 FreeMem(nidTemp);
end;

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам