PDA

نسخه کامل مشاهده نسخه کامل : چطوري ميشه در VB 2005 بعد از load شدن Form، برنامه به سيستم تري انتقال پيدا كنه؟



smahdis
30-03-2007, 14:53
سلام دوستان.
من يه برنامه نوشتم كه در اون در قسمت load Form مقداري كار رو انجام ميده.
حالا قضيه از اين قراره كه اين برنامه ي من احتياج داره كه در سيستم تري بمونه و هر وقت كاربر خواست اين برنامه بياد بالا.
تا اينجا كه هيچ مشكلي نيست. مشكل از اينجا پيش مياد كه اين برنامه خودش رو تنظيم كرده وقتي سيستم ريستارت شد و ويندوز بالا اومد اين برنامه نيز اجرا ميشه ولي .... خود برنامه هم قابل رؤيت هست و من نميخوام اين طور باشه. منظورم اينه كه وقتي ويندوز بالا اومد برنامه من هم بالا بياد ولي ديده نشه و فقط Icon اون در سيستم تري باشه. اميداورم كه منظور من رو فهميده باشيد.

خوب، براي اين منظور من اين كد رو در قسمت Load Form نوشتم.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

و يا كدهاي مختلف ديگه:


Form1.Hide


Form1.Close

خوب مشكل اينه كه اين كد اجرا نميشه ولي همه كدهاي قبل از اين اجرا ميشه.

MohammadJavad.T
30-03-2007, 22:15
سلام
خوب شما میتونید opacity فرم رو به %0 تغییر بدین دیگه فرمتون موقعه load دیده نمیشه
بعد از ابزارNotifyIcon هم خود vb.net2005 داره میتونی برا نمایش دادن icon برنامه استفاده کنی
موفق باشی...

_H2_
31-03-2007, 11:59
سلام
اولاَ برای برنامه های این تیپی بهتر است، از پروژه WinServer استفاده کنید.
دوماَ به جای Form1 از کلمه کلیدی Me استفاده کنید که به شی جاری اشاره میکند. (this در #C)
Me.Hide یا Me.Visible=False
هیچ گاه از نام واقعی خود فرم استفاده نکنید چون به شی جاری اشاره نمیکند.
ضمنا دو دستور فوق برابر هستند ولی دستور Me.Close موجب بسته شدن کلی پنجره میشود که میتواند موجب بسته شدن کل برنامه شود.

smahdis
31-03-2007, 16:12
سلام
اولاَ برای برنامه های این تیپی بهتر است، از پروژه WinServer استفاده کنید.
دوماَ به جای Form1 از کلمه کلیدی Me استفاده کنید که به شی جاری اشاره میکند. (this در #C)
Me.Hide یا Me.Visible=False
هیچ گاه از نام واقعی خود فرم استفاده نکنید چون به شی جاری اشاره نمیکند.
ضمنا دو دستور فوق برابر هستند ولی دستور Me.Close موجب بسته شدن کلی پنجره میشود که میتواند موجب بسته شدن کل برنامه شود.

ميشه بگيد كه اين پروژه WinServer چي هست و از كجا بگيرمش و كارش چي هست؟

راستي من ميدونم كه اگر داخل يك فارمي باشي و بخواي همون فارمي رو كه داخلش هستي ببندي بايد از كلمه ي Me.Close استفاده كني. اونطوري نوشتم كه يك وقت بعضي ها گيج نشند كه قضيه چيه و اين Me از كجا اومده!

_H2_
03-04-2007, 12:26
ميشه بگيد كه اين پروژه WinServer چي هست و از كجا بگيرمش و كارش چي هست؟


سلام
خیلی راحت!
File->New->Project->/Visual Basic/C#/->Windows->Windows Service

البته من درست نمیدانم برنامه تان چه عملی انجام میدهد، ولی ارگر برنامه تان قرار است در پشت ضمینه اجرا شود و پشتیبانی را براهده داشته باشد و مخصوصا نیاز زیادی به ارتباط با کاربر و UI نداشته باشد، این گزینه مناسب است.

البته باز هم میگویم که نمیدانم چه کار میخواهید انجام دهید ولی چون گفتید در FormLoad میخواهید پنجره اصلی را نامرئی کنید در نتیجه گمان میکنم شاید اصلا نیازی به پنجره نداشته باشید در نتیجه اگر اینطور است باید بگویم میتوانید برنامه نویسی کنید بدون آنکه هیچ فرمی داشته باشید و الکی حجم EXE یا DLL تان را افزایش دهید
کافیست یک ماژول بایک زیر برنامه Main بسازید و یا یک کلاسس با یک Shared Sub Main یا همان static در #C



راستي من ميدونم كه اگر داخل يك فارمي باشي و بخواي همون فارمي رو كه داخلش هستي ببندي بايد از كلمه ي Me.Close استفاده كني. اونطوري نوشتم كه يك وقت بعضي ها گيج نشند كه قضيه چيه و اين Me از كجا اومده!

بزار هرکی میخواهد گیج بشه! :8: این دلیل نمیشه که آدم کد صحیح را ننویسد، من در VB6 هم ازنام فرم استفاده نمیکردم و مطمئن هستم در VB7 خطا میدهد و در VB8 را نمیدانم! (چون VB8 برخلاف VB7 از" ساخت خودکار اولین" نمونه پشتیبانی میکند) ولی تقریبا مطمئن هستم که درست کار نمیکند.

ahmadb
14-04-2007, 16:40
برو به وبلاگ من . در اونجا توضیح کامل دادم : [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

shahrdartoope
14-04-2007, 20:25
برايه اينکه سره خودتو درد نيادی عزيز يه راهه حله اسون داره

me.left = - 1500
me.top = -1500

اين عدد رو ميتونی عوض کنی.من خودم تو يکی از برنامه هام استفاده کردم

_H2_
15-04-2007, 09:58
برايه اينکه سره خودتو درد نيادی عزيز يه راهه حله اسون داره

me.left = - 1500
me.top = -1500

اين عدد رو ميتونی عوض کنی.من خودم تو يکی از برنامه هام استفاده کردم

سلام
در نتیجه: پس خصوصیت Visible کشک !