PDA

View Full Version : کمک برای قرار دادن برنامه روی تمام پنجره ها ویندوز



samanss
یک شنبه 01 شهریور 1388, 13:32 عصر
با سلام
می خواستم بدونم چطور میتونم برنامه ای رو که نوشتم بالاتر از تمام پنجره ها قرار بدم حتی تسک منیجر.

vcldeveloper
یک شنبه 01 شهریور 1388, 15:04 عصر
WindowState := wsStayOnTop

samanss
یک شنبه 01 شهریور 1388, 15:23 عصر
ببخشید اقای کشاورز ممنون میشم اگه درباره اینکه چطور از این کد استفاده کنم توضیح بدید.

vcldeveloper
یک شنبه 01 شهریور 1388, 15:31 عصر
WindowState یکی از خصوصیان کلاس TForm هست، پس می تونید در داخل سورس فرم خودتان با از طریق یک فرم دیگه، به آن مقدار بدید.

etoshey
یک شنبه 01 شهریور 1388, 15:34 عصر
فکر نکنم wsStayOnTop قبول کنه. formstyle تغییر بدین stayontop میشه ولی نه برای تسک منیجر

samanss
یک شنبه 01 شهریور 1388, 15:47 عصر
من با دلفی 2007 کار میکنم و windowstate این 3 گزینه رو فقط قبول میکنه
1 wsmaximized
2 wsminimized
3 wsnormal
کار دیگه نیست بتونم این کار رو انجام بدم.

باتشکر از شما دوستان سامان.

samanss
یک شنبه 01 شهریور 1388, 17:45 عصر
من سورس vb شو دارم ولی می خوام با دلفی انجامش بدم.
سورس رو میزارم لطفا اگه کسی میتونه اونو تبدیل کنه به دلفی.

hp1361
یک شنبه 01 شهریور 1388, 18:05 عصر
سلام

فکر کنم منظور آقای کشاورز FormStyle=fsStayOnTop باشه

موفق باشی

Felony
یک شنبه 01 شهریور 1388, 18:35 عصر
به وسیله ی خاصیت WindowsState میتوان فرم را به حالت های Normal , Minimize , Maximize در آورد ، من هم فکر میکنم منظور آقای کشاورز FormStyle هست .

vcldeveloper
یک شنبه 01 شهریور 1388, 18:52 عصر
فکر نکنم wsStayOnTop قبول کنه. formstyle تغییر بدین stayontop میشه
بله، منظور FormStyle بود که اشتباها گفتم WindowState. مرسی که اصلاح کردید.

samanss
یک شنبه 01 شهریور 1388, 19:58 عصر
عزیزان خیلی ممنون .
ولی با استفاده از FormStyle فرم زیر بعضی برنامه ها می مونه مثل تسک منیجر
شما فایل exe رو که داخل فایل فشرده(s.rar) ضمیمه کردم نگاه کنید حتی تسک منیجر هم زیر اون قرار داره من اینجور کدی می خوام اگر بتونید این جور کدی برام بزارید ممنون مشم.

etoshey
یک شنبه 01 شهریور 1388, 21:15 عصر
من کد vb که گذاشتی رو نخوندم . از تایمر استفاده شود؟؟
البته یه پیشنهاده دارم. از تایمر استفاده کن و SetWindowPos

procedure TForm1.Timer1Timer(Sender: TObject);
begin
SetWindowPos( Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
end;
و interval تایمرو کم کن

manvaputra
یک شنبه 01 شهریور 1388, 21:37 عصر
سلام دوست عزیز این کد رو توی onshow فرمت وارد کن:


SetWindowPos(Form1.Handle,
HWND_TOPMOST,
0, 0, 0, 0,
SWP_NOMOVE or SWP_NOSIZE or SWP_SHOWWINDOW);فقط دقت کن تو این مثال اسم فرمم فرم یک بوده اکه اسم فرمت چیز دیگست توی این خط اصلاحش کن

Form1.Handle

etoshey
یک شنبه 01 شهریور 1388, 21:50 عصر
نیازی به form1.handle نیست.handle کافی است و متد onshow عملی نیست. امتحان کردین؟؟

manvaputra
یک شنبه 01 شهریور 1388, 22:09 عصر
نیازی به form1.handle نیست.handle کافی است و متد onshow عملی نیست. امتحان کردین؟؟
سلام دوست عزیز آره من همیشه اول خودم تست می کنم و بعد جواب و پست می کنم اینبار هم همینطور تست کردم جواب هم داد اینجا! الان برای اطمینان مجددا چک کردم و جواب گرفتم از تسک منیجر هم بالاتره

Felony
یک شنبه 01 شهریور 1388, 22:44 عصر
سلام دوست عزیز آره من همیشه اول خودم تست می کنم و بعد جواب و پست می کنم اینبار هم همینطور تست کردم جواب هم داد اینجا! الان برای اطمینان مجددا چک کردم و جواب گرفتم از تسک منیجر هم بالاتره

کد شما کارمیکنه ، ولی TaskManager بالاتره !

samanss
یک شنبه 01 شهریور 1388, 23:02 عصر
اقای etodhey عزیز دستت دردنکه جواب داد خیلی ممنون.
اقای manvaputra دست شما هم درد نکه ولی وقتی که کد رو تو قسمت onshow میزاری فقط بار اول بالاتر از پنجره تسک منیجر قرار میگیره که اگه تو تایمر بزاری و interval شو هم
کم کنی جواب میده.
از بقیه هم که کمک کردن ممنونم. :تشویق:

manvaputra
دوشنبه 02 شهریور 1388, 00:05 صبح
کد شما کارمیکنه ، ولی TaskManager بالاتره ! دوست عزیز یعنی چی کد من کار می کنه ولی TaskManagerبالاتره!

manvaputra
دوشنبه 02 شهریور 1388, 00:08 صبح
ولی وقتی که کد رو تو قسمت onshow میزاری فقط بار اول بالاتر از پنجره تسک منیجر قرار میگیره آها پس منظور شما این بود که کلا حتی اگه TaskManager رو هم باز کنیم کات این صفحه بالاتر از همه باشه بله تنها راه این کار همون تایمره موفق باشید

vcldeveloper
دوشنبه 02 شهریور 1388, 03:28 صبح
کد شما کارمیکنه ، ولی TaskManager بالاتره !
پنجره های StayOnTop بالای سایر پنجره ها قرار می گیرند. اگر دو یا چند پنجره خصوصیت StayOnTop داشته باشند، پنجره ایی که بعد از سایر پنجره ها نمایش داده شده، بالاتر از سایرین قرار میگیره، غیر از اینکه کاربر خودش یکی دیگه از سایر پنجره های StayOnTop را فعال کنه.