View Full Version : مشکل در کار با Shell_NotifyIcon
سه شنبه 23 تیر 1383, 12:38 عصر
سلام
این بلوک کد رو ببینین
یه آیکون به notify area تسک بار اضافه میکنه
برنامه رو تریس کردم همه خطوط درست کار میکنن ولی وقتی به ;end میرسه پیغام میده
access violation at address ..... on project1.exe
یعنی آیکون روی تسک بار میاد ولی با اجرا شدن ;end برنامه ارور میده!!!
میدونین مشکلش چیه؟؟؟
procedure TForm1.Button1Click(Sender: TObject);
var t:ticon;
a:pNotifyIconData;
begin
t:=ticon.Create;
a.uFlags:=NIF_MESSAGE or NIF_ICON or NIF_TIP;
t.LoadFromFile('C:\Projects\Icnos\blue.ico');
a.Wnd:=form1.Handle;
a.uID:=10;
a.hIcon:=t.Handle;
a.szTip:=itest';
a.cbSize:=sizeof(a);
Shell_NotifyIcon(NIM_ADD,a);
t.Free;
end;
Inprise
سه شنبه 23 تیر 1383, 13:55 عصر
من کدت رو اینطوری اصلاح کردم :
procedure TForm1.Button1Click(Sender: TObject);
var t:ticon;
a:TNotifyIconData;
begin
t:=ticon.Create;
a.uFlags:=NIF_MESSAGE or NIF_ICON or NIF_TIP;
t.LoadFromFile('C:\Projects\Icnos\blue.ico');
a.Wnd:=form1.Handle;
a.uID:=10;
a.hIcon:=t.Handle;
a.szTip:=itest';
a.cbSize:=sizeof(a);
Shell_NotifyIcon(NIM_ADD,@a);
t.Free;
end;
که حالا مشکل سابق رو نداری . البته این کد هم ناقصه و باید نوع پیام برگشتی رو توسط پارامتر uCallbackMessage پاس کنی که البته مقدارش بر عهده خودته .
موفق باشی
Inprise
سه شنبه 23 تیر 1383, 14:11 عصر
شرمنده ؛ اصل مطلب یادم رفت
میدونین مشکلش چیه؟؟؟
عزیز برادر ؛ pNotifyIconData یک اشاره گر هست به یک رکورد TNotifyIconData . ( یعنی : pNotifyIconData = ^TNotifyIconData ) اگر میخای بجای دادن آدرس یک نسخه از رکورد ، اشاره گر اون رکورد رو مقدار دهی کنی و/یا به تابعی پاس کنی باید ابتدا حافظهء مورد نیاز اشاره گر رو بهش تخصیص بدی ؛ توی دلفی روند New اینکار رو انجام میده .( اگر این حافظه رو خودت تخصیص ندی پردازندهء زبون بسته از کجا بفهمه که باید مقادیر منتسب شده رو کجا نگه داره ؟ ) بعد باید برای ارائه مقدار به "چیزی که اشاره گر به آن اشاره میکند " باید از ساختار صحیح استفاده کنی مثلا : p^.field:=something . حالا اگر بخای کد خودت رو تصحیح کنی :
procedure TForm1.Button1Click(Sender: TObject);
var t:ticon;
a:pNotifyIconData;
begin
(new(a;
t:=ticon.Create;
a^.uFlags:=NIF_MESSAGE or NIF_ICON or NIF_TIP;
t.LoadFromFile('C:\Projects\Icnos\blue.ico');
a^.Wnd:=form1.Handle;
a^.uID:=10;
a^.hIcon:=t.Handle;
a^.szTip:=itest';
a^.cbSize:=sizeof(a);
Shell_NotifyIcon(NIM_ADD,a);
t.Free;
end;
خوش باشی :)
چهارشنبه 24 تیر 1383, 01:18 صبح
راست میگی اینپرایز جون
دستت درد نکنه نکته کنکوری داشت :oops:
راستی چرا این خطا رو روی ;end میده؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟
چرا روی همون خط نمیده؟؟؟؟؟؟؟
Gladiator
چهارشنبه 24 تیر 1383, 10:07 صبح
آخه IQ نداری .
Inprise
چهارشنبه 24 تیر 1383, 10:07 صبح
اگر دقت کنی هنگام Build بهت اخطار میده که احتمالا" مقدمات تولید اشاره گر فوق الذکر فراهم نخواهد شد . وقتی داره از یه اشاره گر استفاده میکنی باید به این اخطارها توجه کنی
چهارشنبه 24 تیر 1383, 15:56 عصر
خه IQ نداری .
مرسی عزیزم :(
اینی جون دستت درد نکنه خیلی مرسی :flower:
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.