View Full Version : system tray
mohsen_r
یک شنبه 21 شهریور 1389, 09:45 صبح
با سلام
من مي خوام يك برنامه بنويسم كه بتونه نرم افزارهاي ديگه را به قسمت system tray ببرم البته نام نرم افزار تو برنامم مشخص ميشه
يعني وقتي مينيمم شد به system try بره
لطفا راهنمايي نمائيد
nilidelphi
یک شنبه 21 شهریور 1389, 17:36 عصر
اگه می خوای برنامت خودش به ترای بره باید از کامپوننت SYSTray استفاده کنی (البته در صورتی که از دلفی 7 استفاده کنی چون از دلفی 2007 به بالا خودشون این کامپوننت رو با ویژگی های بیشتر دارند)
اگه بر استفاده از دلفی 7 اصرار داری می تونم کامپوننت رو برات بزارم دانلود کنی .
بعد از نصب کار باهاش خیلی آسون.
حالا اگه بخوای با استفاده از برنامت یه برنامه درحال اجرای دیگه ای رو به ترای ببری کارت خیلی سخته و من زیاد در این مورد اطلاعات ندارم.
موفق باشی.
Felony
یک شنبه 21 شهریور 1389, 18:30 عصر
هندل پنجره برنامه مورد نظرت رو به دست بیار و با تابع ShowWindow مخفیش کن ( اگر میخوای با کلیک بر روی دکمه Close برنامه مورد نظر این کار انجام بشه یه کم سخت میشه )، بعد براش تو System Try یه آیکن بساز و تو رویداد onClick اون آیکن با تابع ShowWindow اون پنجره ای که مخفی کردی رو دوباره نشون بده !
hadisalahi2
یک شنبه 21 شهریور 1389, 18:49 عصر
میتونی به جای استفاده از دکمه مینی مایز فرم خودت یک دکمه مینی مایز بزاری و وقتی که روش کلیک میکنی ، فرم اصلی مخفی بشه.
برای آیکن System Try هم میتونی از کامپوننت مجموعه Jedi استفاده کنی که خیلی قوی و عالیه
یا حق
mohsen_r
دوشنبه 22 شهریور 1389, 07:26 صبح
هندل پنجره برنامه مورد نظرت رو به دست بیار و با تابع ShowWindow مخفیش کن ( اگر میخوای با کلیک بر روی دکمه Close برنامه مورد نظر این کار انجام بشه یه کم سخت میشه )، بعد براش تو System Try یه آیکن بساز و تو رویداد onClick اون آیکن با تابع ShowWindow اون پنجره ای که مخفی کردی رو دوباره نشون بده !
از راهنمايي ها متشكرم
ولي من مي خوام اون كار سخته را انجام بدم
حالا يه سوال آيا امكان اين هست با استفاده از هندل ،برنامه اي كه مينيمز شده را شناخت و بعد اون را مخفي كرد
devil00x
دوشنبه 22 شهریور 1389, 07:44 صبح
دوست عزیز به نظر من میتونی با فرسیتادن message به فرم مربوطه بفرستی و بتونی مدام چکش کنی و هر بار اون فرم به حالت مینیمایز رفت با هندلی که از اون فرم داری اونی ببری تو traybar
فکر میکنم بشه اینکارو انجام داد.
mohsen_r
سه شنبه 23 شهریور 1389, 08:06 صبح
فعلا مجبور شدم از همون مخفي كاري استفاده كنم
دستوري كه مشخص مي كنه فرم يا هندلي كه مشخص كرديم مينيمايز شده چيه؟
mohsen_r
چهارشنبه 24 شهریور 1389, 12:48 عصر
فعلا مجبور شدم از همون مخفي كاري استفاده كنم
دستوري كه مشخص مي كنه فرم يا هندلي كه مشخص كرديم مينيمايز شده چيه؟
حداقل يه راهنمائي
mohsen_r
جمعه 26 شهریور 1389, 16:06 عصر
دوست عزیز به نظر من میتونی با فرسیتادن message به فرم مربوطه بفرستی و بتونی مدام چکش کنی و هر بار اون فرم به حالت مینیمایز رفت با هندلی که از اون فرم داری اونی ببری تو traybar
فکر میکنم بشه اینکارو انجام داد.
type
TForm1 = class(Form)
...
public
procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND;
...
procedure TForm1.WMSysCommand(var Msg: TWMSysCommand);
begin
if Msg.CmdType = SC_MINIMIZE then
...
else
DefaultHandler(Msg);
end;
چطور میشه تابع بالا رو برای یک هندلی که قبلا بدست اوردیم اجرا کرد چون این تابع برای فرمی هست که در حال اجرا هستیم
mohsen_r
جمعه 26 شهریور 1389, 16:25 عصر
دوستان ما به جواب رسیدیم
var
wnd : hwnd;
info : WINDOWPLACEMENT;
begin
wnd := FindWindow('mirc', nil);
info.length := SizeOf(TWindowPlacement);
GetWindowPlacement(wnd, @info);
if (info.showCmd = SW_SHOWMINIMIZED) or (info.showCmd = SW_SHOWMINNOACTIVE) then
ShowWindow(wnd,SW_hide);
Black_Strom
پنج شنبه 07 مهر 1390, 13:20 عصر
سلام
مشکل systray :
اینه که نمیشه tooltipe اون را آپدیت کرد مگر اینکه یکبار کامل اون را از tray خارج کنی و tooltip را تغییر بدی و سپس مجددا در systray قرار بدی که این خیلی مسخرست .
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.