PDA

View Full Version : مخفی کردن taskbar



seyed_27
شنبه 23 آبان 1388, 13:09 عصر
سلام میدونم درمورد این موضوع بحث شده اما مشکلم چیز دیگست
تو مانیتورهای lcd از نوع واید کمی مشکل دارم من فورمم رو به اندازه تمام صفحه در نظر گرفتم ولی فورم زیر تسکبار میره و قسمتی از اون نمایش داده نمیشه نمیخوام از تابع alwaysOnTop استفاده کنم چون برنامه از چند فرم تشکیل شده و از این تابع در یه فرم دیگه استفاده کردم اگر این کار رو کنم این فرم روی اون فرم میره و من این رو نمیخوام .
در ضمن نمی خوام از تابع زیر استفاده کنم


var
wndTaskbar: HWND;
begin
wndTaskbar := FindWindow('Shell_TrayWnd', nil);
if wndTaskbar <> 0 then
begin
EnableWindow(wndTaskbar, False);
EnableWindow(wndTaskbar, True);
ShowWindow(wndTaskbar, SW_HIDE);
ShowWindow(wndTaskbar, SW_SHOW);
end;
end;
چون اگر به دلایلی وسط برنامه مشکلی پیش بیاد و برنامه بسته بشه taskbar هم مخفی میمونه و کاربر دچار مشکل میشه
چه راحی رو پیشنهاد میکنید که فرم روی taskbar بیفته
یه فکری دارم میشه از تابع alwaysOnTop استفاده کرد و اولویت برای فرم ها قائل شد ولی نمیدونم چطوری؟

Felony
شنبه 23 آبان 1388, 13:16 عصر
شما بفرمایید پس از کدوم راه میخواین استفاده کنید ، از هیچ کدوم که نمیخواین استفاده کنید ، در مورد اولویت هم در ویندوز ممکنه چند تا پنجره دارای خصیصه ی Always On Top باشن ، که اولویت با آخرین پنجره ی باز شده هست .

دلفــي
شنبه 23 آبان 1388, 13:25 عصر
سلام میدونم درمورد این موضوع بحث شده اما مشکلم چیز دیگست
تو مانیتورهای lcd از نوع واید کمی مشکل دارم من فورمم رو به اندازه تمام صفحه در نظر گرفتم ولی فورم زیر تسکبار میره و قسمتی از اون نمایش داده نمیشه نمیخوام از تابع alwaysOnTop استفاده کنم چون برنامه از چند فرم تشکیل شده و از این تابع در یه فرم دیگه استفاده کردم اگر این کار رو کنم این فرم روی اون فرم میره و من این رو نمیخوام .
در ضمن نمی خوام از تابع زیر استفاده کنم


var
wndTaskbar: HWND;
begin
wndTaskbar := FindWindow('Shell_TrayWnd', nil);
if wndTaskbar <> 0 then
begin
EnableWindow(wndTaskbar, False);
EnableWindow(wndTaskbar, True);
ShowWindow(wndTaskbar, SW_HIDE);
ShowWindow(wndTaskbar, SW_SHOW);
end;
end;
چون اگر به دلایلی وسط برنامه مشکلی پیش بیاد و برنامه بسته بشه taskbar هم مخفی میمونه و کاربر دچار مشکل میشه
چه راحی رو پیشنهاد میکنید که فرم روی taskbar بیفته
یه فکری دارم میشه از تابع alwaysOnTop استفاده کرد و اولویت برای فرم ها قائل شد ولی نمیدونم چطوری؟

شما تو هر دو فرم خاصیت FormStyle رو روی گزینه FsStayOnTop قرار بدید و در سورس Project از دستورات زیر استفاده کنید :



Application.Initialize;
Application.CreateForm(Tform1, Form1);
Application.CreateForm(Tform2, Form2);
Form1.Show;
Form2.Show;
Application.run;


با این کار هر دو فرم شما روی تسکبار افتاده و فرم 2 روی فرم 1 قرار می گیرد که این مورد را نیز به دلخواه خود می توانید در کد بالا تغییر دهید .

Ebrahim Asadi
شنبه 23 آبان 1388, 13:36 عصر
سلام

اگر در OnCreate فرم دستورات زير را قرار دهي مشكلت با Taskbar حل مي شود:


Form.Position := poDesigned;
Form.WindowState := wsNormal;
Form.Width := Screen.WorkAreaWidth;
Form.Height := Screen.WorkAreaHeight;
Form.Top := Screen.WorkAreaTop;
Form.Left := Screen.WorkAreaLeft;


WorkArea فضاي Desktop منهاي Taskbar و ساير Toolbar هاي روي Desktop است.

موفق باشي

Felony
شنبه 23 آبان 1388, 13:48 عصر
سلام

اگر در OnCreate فرم دستورات زير را قرار دهي مشكلت با Taskbar حل مي شود:


Form.Position := poDesigned;
Form.WindowState := wsNormal;
Form.Width := Screen.WorkAreaWidth;
Form.Height := Screen.WorkAreaHeight;
Form.Top := Screen.WorkAreaTop;
Form.Left := Screen.WorkAreaLeft;


WorkArea فضاي Desktop منهاي Taskbar و ساير Toolbar هاي روي Desktop است.

موفق باشي
خودتون دارید میگید WorkArea ! و خودتون هم میگید فضای میزکار منهای TaskBar بعد میگید فرم میاد روی TaskBar !!!
با توجه به سوال ایشون میخوان فرمشون بیاد روی TaskBar !

Ebrahim Asadi
شنبه 23 آبان 1388, 13:53 عصر
خودتون دارید میگید WorkArea ! و خودتون هم میگید فضای میزکار منهای TaskBar بعد میگید فرم میاد روی TaskBar !!!

سلام
1- من نگفتم فرم مياد روي Taskbar
2- من اين پاسخ را در جواب اين جمله ايشون نوشتم:

فورم زیر تسکبار میره و قسمتی از اون نمایش داده نمیشه
3- تعريف workarea همونيه كه نوشتم:
WorkAreaWidth differs from the Width (http://barnamenevis.org/forum/Forms_TScreen_Width.html) property in that it adjusts the work area to subtract any space occupied by the task bar and any tool bars that sit on the desktop.

Delphi help

Felony
شنبه 23 آبان 1388, 14:07 عصر
سلام
1- من نگفتم فرم مياد روي Taskbar
2- من اين پاسخ را در جواب اين جمله ايشون نوشتم:

3- تعريف workarea همونيه كه نوشتم:
WorkAreaWidth differs from the Width (http://barnamenevis.org/forum/Forms_TScreen_Width.html) property in that it adjusts the work area to subtract any space occupied by the task bar and any tool bars that sit on the desktop.

Delphi help

من تعریف WorkArea رو میدونم شما هم قبل از پاسخ دادن سوال ایشون باید سوال رو کامل میخوندید ، ایشون سوالشون به کل چیز دیگه ای بود !

Ebrahim Asadi
شنبه 23 آبان 1388, 14:43 عصر
دوست عزيز،

من مطلب ايشون رو تا آخر خوانده بودم. فقط خواندن مطلب مهم نيست مسئله اصلي اينه كه اون مطلب رو درك و تجزيه و تحليل كني. مشكل اصلي ايشون، مخفي كردن Taskbar نيست. مشكل اصلي ايشون اينه كه فرم هاشون زير Taskbar قرار مي گيره. مخفي كردن Taskbar بدترين راه حل اين مشكله. توجه داشته باشيد كه ما داريم برنامه نويسي تحت ويندوز انجام ميديم نه برنامه نويسي تحت DOS، بنابراين ما بايد برنامه خودمون رو بنويسيم و به Taskbar و ساير امكانات ويندوز كاري نداشته باشيم. مخفي كردن Taskbar و Full screen كردن برنامه معمولاً در بازي هاي كامپيوتري كاربرد داره. همين الان هرچند تا برنامه كه دم دستت هست اجرا كن. ببين كدومشون موقع اجرا Taskbar را مخفي مي كنند؟ در هر صورت اين دوستمون اگر واقعا اصرار دارند كه كاربر Taskbar ويندوز را نبيند راه حل هاي ديگري وجود داره مثلاً مي تونه از كامپوننت dWinLock استفاده كنه يا اگر قصد داره كه برنامش تمام كنترل كامپيوتر را در اختيار قرار بگيره مي تونه اون رو به صورت يك Shell App نصب كنه.

Felony
شنبه 23 آبان 1388, 15:16 عصر
دوست عزيز،

من مطلب ايشون رو تا آخر خوانده بودم. فقط خواندن مطلب مهم نيست مسئله اصلي اينه كه اون مطلب رو درك و تجزيه و تحليل كني. مشكل اصلي ايشون، مخفي كردن Taskbar نيست. مشكل اصلي ايشون اينه كه فرم هاشون زير Taskbar قرار مي گيره. مخفي كردن Taskbar بدترين راه حل اين مشكله. توجه داشته باشيد كه ما داريم برنامه نويسي تحت ويندوز انجام ميديم نه برنامه نويسي تحت DOS، بنابراين ما بايد برنامه خودمون رو بنويسيم و به Taskbar و ساير امكانات ويندوز كاري نداشته باشيم. مخفي كردن Taskbar و Full screen كردن برنامه معمولاً در بازي هاي كامپيوتري كاربرد داره. همين الان هرچند تا برنامه كه دم دستت هست اجرا كن. ببين كدومشون موقع اجرا Taskbar را مخفي مي كنند؟ در هر صورت اين دوستمون اگر واقعا اصرار دارند كه كاربر Taskbar ويندوز را نبيند راه حل هاي ديگري وجود داره مثلاً مي تونه از كامپوننت dWinLock استفاده كنه يا اگر قصد داره كه برنامش تمام كنترل كامپيوتر را در اختيار قرار بگيره مي تونه اون رو به صورت يك Shell App نصب كنه. شما هم بهتره موقع جواب دادن سعي كني دلايل منطقي بياري نه اين كه هر كي جواب داد بهش حمله كني.
شاید هم من سوال رو خوب متوجه نشدم ، ولی در کل با توجه به قسمتی از صحبتتون که قرمز رنگ هست ،فکر میکنم هنوز نحوه ی صحبت کردن تو یک جامعه ی مجازی براتون جا نیفتاده ، قبل از اینکه تو یک مجازی عمومی مجازی بحث کنید اولا برید جنبه ی بحث کردن پیدا کنید ( اون هم از نوع علمی ) و دوما کمی ادب به خرج بدید ، من هرچی پست هایی که تو این تاپیک دادم رو میخونم قسمتی رو پیدا نمیکنم که مثل شما به پست دهنده حمله کرده باشم !

موفق باشید .

Ebrahim Asadi
شنبه 23 آبان 1388, 15:30 عصر
من بابت جمله آخري كه نوشتم از شما معذرت مي خوام. بهتره اين بحث رو همينجا تموم كنيم. :لبخندساده:

seyed_27
شنبه 23 آبان 1388, 22:17 عصر
ممنونم ازعزیزان و مخصوصا آقای دلفــي .
بابا چرا اینقدر کل کل میکنید..........

hamidrah
یک شنبه 24 آبان 1388, 15:37 عصر
سلام دوست عزیز
کد زیر رو هم می تونی امتحان کنی اگه فرمت fsStayOnTop باشه فرم روی Taskbar قرار میگیره.

Height:=Screen.DesktopHeight;
Width:=Screen.DesktopWidth;
Top:=Screen.DesktopTop;
Left:=Screen.DesktopLeft;