View Full Version : Activate و نمایش برنامه Minimize شده
Delphi Coder
جمعه 23 آذر 1386, 18:33 عصر
چطور می توان یک window یا یک فرم را در حالی که خود برنامه minimize شده باشد به user نشان داد. فرض کنیم برنامه minimize شده و user در حال کار کردن با اینترنت اکپلورر هست و می خوهیم User را از روی دادن یک Event مطلع کنیم در ضمن نمی خواهیم از گزینه StayOnTop استفاده کنیم چون ممکن است user نخواهد در آن لحظه به window عکس العمل نشان دهد و با click روی Explorer بخواهد فعلا به کار خود ادامه دهد. من یه چیزی تو MSDN پیدا کردم(SetForegroundWindow) ولی 10000 تا شرط و شروط و اما اگر داره که نتونستم راش بندازم. ممنون میشم اگه کسی بتونه کمک کنه.
DAMAVAND
جمعه 23 آذر 1386, 21:46 عصر
چطور می توان یک window یا یک فرم را در حالی که خود برنامه minimize شده باشد به user نشان داد. فرض کنیم برنامه minimize شده و user در حال کار کردن با اینترنت اکپلورر هست و می خوهیم User را از روی دادن یک Event مطلع کنیم در ضمن نمی خواهیم از گزینه StayOnTop استفاده کنیم چون ممکن است user نخواهد در آن لحظه به window عکس العمل نشان دهد و با click روی Explorer بخواهد فعلا به کار خود ادامه دهد. من یه چیزی تو MSDN پیدا کردم(SetForegroundWindow) ولی 10000 تا شرط و شروط و اما اگر داره که نتونستم راش بندازم. ممنون میشم اگه کسی بتونه کمک کنه.
چه شرطی
این جوری ازش استفاده میکنید??
SetForegroundWindow(Form1.Handle);
معمولا برای اینجور کارها کاری میکنن که پنجره در حالت Minimaz
در همون حالت شروع کنه به چشمک زدن. بهتر از این روش استفاده کنید
از تابع FlashWindowEx
استفاده کنید
Delphi Coder
جمعه 23 آذر 1386, 22:15 عصر
ممنون از راهنماییتون. ولی قبلا تست کردم جواب نداد. عملا کار FlashWindow رو انجام میده.
B-Vedadian
شنبه 24 آذر 1386, 11:29 صبح
برای اینکه بتونید پنجره کوچک شده رو بزرگ کنید باید از طریق خود برنامه اصلی این کار انجام بشه.
اگر این کار رو برای اینکه هنگامی که نسخه دومی از برنامه شما میخواد اجرا شه نسخه قبلی رو بیاره بالا انجام میدید، دستور SetForegroundWindow یا حتی Application.BringToFront رو بعد از اینکه تو نسخه قبلی اجرا شده Application.Restore رو اجرا کردید فراخوانی کنید.
Hamid_PaK
شنبه 24 آذر 1386, 15:36 عصر
قبلا همچین مشکلی داشتم که اینطوری حلش کردم:
procedure ForceForegroundWindow(hwnd: THandle);
var
hlp: TForm;
begin
hlp := TForm.Create(nil);
try
hlp.BorderStyle := bsNone;
hlp.SetBounds(0, 0, 1, 1);
hlp.FormStyle := fsStayOnTop;
hlp.Show;
mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
SetForegroundWindow(hwnd);
finally
hlp.Free;
end;
end;
// Uses
begin
if not SetForegroundWindow(Form1.Handle) then ForceForegroundWindow(Form1.Handle);
end;
یا حق ...
Delphi Coder
یک شنبه 25 آذر 1386, 08:37 صبح
حمید جان مرسی. واقعا دست خوش. با اینکه خلاف قانون اینجاست ولی نمی شد ازت با Text تشکر نکنم. اینو من خیلی وقته دنبالش بودم. هر چند با حقه و کلک انجام شده ولی خب کار منو که راه انداخت. بازم ممنون.
Delphi Coder
دوشنبه 26 آذر 1386, 14:32 عصر
ببخشید ولی حالا یه مشکل جدید درست شد وقتی User میاد این window رو میبنده بعدش صفحه Editor (فرم اصلی ) برنامه هم یادش میاد که بپره بالای Explorer
Ashegh_mordeeshgh
جمعه 30 آذر 1386, 10:57 صبح
با سلام خدمت شما
مثلا شما می خواهید برنامه بعد از 10 ثانیه اجرا یه پیغام بده یک تایمر گذاشته و دستورات زیر را در آن کپی نمائید.
Form1.FormStyle:= fsStayOnTop;
ShowMessage('salam');
Timer2.Enabled:=true;
Timer1.Enabled:=false;
و در تایمر دو نوشته زیر را بگذارید
Form1.FormStyle:= fsNormal;
Timer2.Enabled:=false;
و برنامه را اجرا کنید.
mahdisam
جمعه 29 خرداد 1394, 04:59 صبح
عالی بود ...ممنون دوست گرام
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.