ایجاد قفل صفحه در زمان Time Out
با سلام
من یه نرم افزار نوشتم دوستان، میخواستم بدونم چه کدی میشه واسه یه Button نوشت زمانی که روی button کلیک کنی و یا بعد از گذشت 10 دقیقه Auto Lock انجام شه؟
و فقط رمز عبور کاربری که Login کردن بعد از قفل شدن بخواد.
چند تا راه رو تست کردم توضیح میدم:
1- یه panel انداختم تو Main Form و خاصیت Dock رو Fill کردم کل صفحه رو بگیره و می خواستم با اینکار خاصیت Visible رو False و وقتی روی Button کلیک کنه True شه و فرم لاگین نمایش بده
8 پاسخ
نتونستم مشکل و حل کنم متاسفانه کسی این کار رو تاحالا کرده؟
سلام دوست گرامی
برای این کار میتونید دوباره فرم لوگین رو فعال کنید
Login ah=new login(); ah.showdialog();
با این کد هنوز صفحه Main هست و صفحه لوگین روی ان قرار میگیرد و صفحه Main غیرفعال می شود
اگه میشه لطف کنید کدی که زدید و جواب نداده بفرستید و همینطور روشی که میخواین به کار ببرید رو بگین تا ببینم کجاش مشکل داره
سلام
دوست عزیز بهترین کار اینه که شما از Thread استفاده کرده و برای عدم دسترسی به هچکدام از نقاط و امکانات فرم و نرم افزارتون باید بجای پانل از یک Rectangle استفاده کنید یعنی در اصل باید با توجه به مختصات و سایز فرم اصلی نرم افزارتون که باید قفل بشه، یک Rectangle به همون اندازه روی اون رسم کرده و ضمن اینکه رنگش black و Opacity اونو می تونید روی 60% قرا بدید تا با حالت شیشه ای روی صفحه به اندازه فرم نرم افزارتون نمایش داده بشه حالا روی اون فرم مربوط به ورود مجدد کاربر را فراخوانی کنید.
اگه با توابع گرافیکی هم زیاد آشنا نیستید میتونید همین مورد رو با استفاده از یک فرم (بجای Rectangle که Border نداشته باشه و رنگش Black با Opacity=60 باشه) طراحیش کنید که خیلی هم ساده تره وشکیل.
من از هر دو روش قبلاً استفاده کردم.
موفق باشید.
دوستان مشکل من هنوز حل نشد. مشکل Lock شدن کل صفحه نرم افزار ه نه فقط Panel اونوقت Ribbonbar , menu آزاده
من میشه یه sample فرم ایجاد کنید برام slution ش رو Up کنید از نمونه بفهمیم.
راهکارهای مختلفی میشه برای اینکار استفاده کرد، می تونید از timer استفاده کنید یا یک thread ایجاد کنید که اول یه thread.sleep داشته باشید به مدت 10 دقیقه و بعد کد مورد نظرتون اجرا بشه:
var thread = new Thread(AppLock); thread.Start();
متد AppLock هم به صورت تعریف کنید:
private static void AppLock() { Thread.Sleep(10000); // code for application lock }
سلام دوست عزیز ابتدا معلوم کنید که با چه زبانی این برنامه را نوشتید . بنده از نوشته شما حدس می زنم با سی شارپ باشد .
اگر اینطوره شما می تونید با همین پنلی که قرار دادید پخش auto lock را شبیه سازی کنید . در مورد بعد از گذشت 10 دقیقه هم میتونید یک نخ ایجاد کنید و با بدست آوردن مختصات موس اینکار رو انجام بدید
کد بدست آوردن مختصات موس :
using System; using System.Runtime.InteropServices; using System.Drawing; namespace hamcodiWPFAnswers { class MouseCoordinates { [DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] internal static extern bool GetCursorPos(ref Win32Point pt); [StructLayout(LayoutKind.Sequential)] internal struct Win32Point { public Int32 X; public Int32 Y; }; public static Point GetMousePosition() { Win32Point w32Mouse = new Win32Point(); GetCursorPos(ref w32Mouse); return new Point(w32Mouse.X, w32Mouse.Y); } } }
بعد از این شما می تونید در نخ خود مختصات موس را آپدیت کنید . اگر بعد از گذشت 10 دقیقه موس حرکت نکرد پس پنل lock رو نمایش بدید و اگر موس حرکت کرد زمان و مختصات موس رو دوباره آپدیت کنید.
برای محاسبه زمان 10 دقیقه ای کار راحتی که می تونید انجام بدید اینه که از timer استفاده کنید.
خب دوست عزیز شما راه دیگه ای که دارید اینه که فرم اصلی رو در زمان قفل مخفی کنید و فرم لاگین رو نمایش بدید البته من تا حالا با کامپونت ریبون بار کار نکردم مطمئن هستید که خاصیت visible نداره. menu رو میشه مخفی کرد اما شما ریبون بار رو چک کنید.