الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مساعدة في كتابة كود التنبه بالساعات

بدأه فاهمه حياة في 25 مارس 2012 · 13 رد · 655 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

ممكن المساعدة الأعضاء الخبراء في برمجة لغة سي شارب

و ماهي افضل طريقة لتخزين المواعيد يتم ادخال من قبل المستخدم الى قاعدة بيانات و ربط الوقت الذي تم ادخاله

من قبل المستخدم و ساعة الجهاز

ليتم التنبيه بالوقت لاحقا حتى لو تم اغلاق البرنامج

ارجو المساعدة ضروريا جدا في اكواد

وشكرلكم.

وهذا تصميم الفورم

hms3fb1228dee0.png

#2

:happy: :happy: :happy: :happy: :happy: :happy:

ياجماعة مافي اي الرد .

لهذا درجة سؤالي صعبة؟

#3

يعني لازم يصير تنبيه حتى لو كان البرنامج مغلق ؟

#4

نعم لازم تنبيه يكون شغال حتى كان البرنامج تم اغلاقه

#5

كيف يكون التنبيه شغال اذا تم اغلاق البرنامج؟

اظن ان البرنامج يجب ان يبقى يعمل في الخلفية - جنب الساعة - لكي يقوم بقراءة الوقت و اعطاء التنبيه

/index.php/topic/264448-%D8%A7%D9%84%D8%A8%D8%AF%D8%A7%D9%8A%D8%A9-%D9%85%D8%B9-%D8%A7%D9%84%D8%A7%D9%86%D8%AF%D8%B1%D9%88%D9%8A%D8%AF/

 

اني وان كنت الاخير زمانه ---- لأتِ بما لم تستطعه الاوائلُ

#6

الظاهر، لا يمكن ان ينبه البرنامج نفسه، إذا كان مغلق

  1. يمكنك ان تجعله يعمل في الخلفية بدون نافذة ظاهرة، في Notification Area مثلا، جنب الساعة.
  2. أو يمكنك استخدام البرنامج الموجودة في Windows ،أقصد Task Scheduler، لينبه نفسه، أو يشتغل برنامجك في الوقت المعين لينبه برنامجك أنت.
  3. أو يمكنك أن تجعل برنامجك من نوع Gadget، مثل الساعة، ليعمل في Windows 7 (لا XP)

لو يجب أن ينبه حتى لو تم اغلاقه، فالحل هو الرقم 2، برأيي.

والله أعلم.

تم تعديل هذه المشاركة بواسطة موليان في 26 مارس 2012 في 22:10

..:: رَبِّ زِدْني عِلْمًا ::..

#7
موليان كتب:

الظاهر، لا يمكن ان ينبه البرنامج نفسه، إذا كان مغلق

  1. يمكنك ان تجعله يعمل في الخلفية بدون نافذة ظاهرة، في Notification Area مثلا، جنب الساعة.
  2. أو يمكنك استخدام البرنامج الموجودة في Windows ،أقصد Task Scheduler، لينبه نفسه، أو يشتغل برنامجك في الوقت المعين لينبه برنامجك أنت.
  3. أو يمكنك أن تجعل برنامجك من نوع Gadget، مثل الساعة، ليعمل في Windows 7 (لا XP)

لو يجب أن ينبه حتى لو تم اغلاقه، فالحل هو الرقم 2، برأيي.

والله أعلم.

مرحبا أخي اذا قامت باختيار الحل رقم 2

ممكن توضيح اكثر عن طريق تصميم هذا البرنامج لأنه ليست لدي معرفة به

وشكرا لك.

#8

طيب،

أولا البرنامج موجود هنا:

Start -> All Programs -> Accessories -> System Tools -> Task Scheduler

انظري به قليلا لتعرفي كيف يعمل، ذلك البرنامج يشتغل أوامر في وقت معين، فهو في نفسه منبه محترم :-)

كل ما علينا هو إنشاء أمر في ذلك البرنامج عن طريق برنامجك بالأكواد، لينبه في الوقت المعين أو يشتغل برنامجك الذي تم اغلاقه من قبل، ليفعل ما تشائين.

  • فلذا يمكنك استخدام هذه الـ Class Library لهذه المهمة: للتنزيل من موقع CodePlex (هنا..). المستندات والأمثلة موجودة هناك، القي نظرة بها.
  • أو استخدام هذه الاخرى. (هنا..)
  • أو إن تجيدين إستخدام COM، فیمكن من خلاله ايضا.

الأمر سهل،لكن يحتاج بقليل من التعب.

وفقكم الله.

تم تعديل هذه المشاركة بواسطة موليان في 27 مارس 2012 في 23:27

..:: رَبِّ زِدْني عِلْمًا ::..

#9

شكراً لك أخي على المساعدة

انا مصمم الفورم خاصة بالنتيبه بهذا طريق

hms3fb1228dee0.png

هل استطيع من خلال الكود ربط جدولة المهام خاصة

الموجودة في Windows

و الفورم الذي انا قامت بالتصميمه

وهنالك امثلة لهذا الطريق

على فيديو

وشكر ا لك.

#10

طيب، أقول مثال بإختصار شديد (كما لو نظرت بالروابط لساعتدك اكثر):

مثلا نقوم بتنفيذ هذا التنبيه الذي يظهر في الصورة من برنامجك:

  1. اولا قومي بتحميل الكلاس (هذا) واضافة ذلك كـReference بمشروعك (نتوقع انك تعلمين كيفية عمل ذلك) وبعد ذلك:
    using Microsoft.Win32.TaskScheduler;

  2. ثم اضفي هذا الكود ببرنامجك. يقوم بتشغيل برنامجك مرتين، مرة في الوقت الذي يظهر في الصورة، ومرة في هذا الوقت:

using (TaskService ts = new TaskService())
{
	// Create a new task definition and assign properties
	TaskDefinition td = ts.NewTask();
	td.RegistrationInfo.Description = "Runs my application";

	// Create a trigger that will fire the task at 2011/02/02 04:31AM and 2012/03/28 22:10PM
	td.Triggers.Add(new TimeTrigger { StartBoundary = new DateTime(2011, 02, 02, 04, 31, 00) });
	td.Triggers.Add(new TimeTrigger { StartBoundary = new DateTime(2012, 03, 28, 22, 10, 00) });

	// Create an action that will launch the application whenever the trigger fires
	td.Actions.Add(new ExecAction(Application.ExecutablePath));

	// Register the task in the root folder
	ts.RootFolder.RegisterTaskDefinition(@"RunMyApp", td);

	// Remove the task we just created
	//ts.RootFolder.DeleteTask("RunMyApp");
}

ملاحظات: هذا الكود يقوم بتشغيل برنامجك في الوقت المعين، ثم يمكنك تنبيه المستخدم كيفما تريدين من خلال برنامجك. لكن انتبهي ان يكون تأخير بين تشغيل برنامجك وتنبيه المستخدم، يعني مثلا ان اراد المستخدم ان يتم تنبيهه في 10:24، قومي بتشغيل برنامجك قبل ذلك في 10:23.

لو ليس احراج، هل لي ان اسأل سؤال، هل أنت عربية؟

وفقكم الله

تم تعديل هذه المشاركة بواسطة موليان في 29 مارس 2012 في 02:03

..:: رَبِّ زِدْني عِلْمًا ::..

#11
موليان كتب:

طيب، أقول مثال بإختصار شديد (كما لو نظرت بالروابط لساعتدك اكثر):

مثلا نقوم بتنفيذ هذا التنبيه الذي يظهر في الصورة من برنامجك:

  1. اولا قومي بتحميل الكلاس (هذا) واضافة ذلك كـReference بمشروعك (نتوقع انك تعلمين كيفية عمل ذلك) وبعد ذلك:
    using Microsoft.Win32.TaskScheduler;

  2. ثم اضفي هذا الكود ببرنامجك. يقوم بتشغيل برنامجك مرتين، مرة في الوقت الذي يظهر في الصورة، ومرة في هذا الوقت:

using (TaskService ts = new TaskService())
{
	// Create a new task definition and assign properties
	TaskDefinition td = ts.NewTask();
	td.RegistrationInfo.Description = "Runs my application";

	// Create a trigger that will fire the task at 2011/02/02 04:31AM and 2012/03/28 22:10PM
	td.Triggers.Add(new TimeTrigger { StartBoundary = new DateTime(2011, 02, 02, 04, 31, 00) });
	td.Triggers.Add(new TimeTrigger { StartBoundary = new DateTime(2012, 03, 28, 22, 10, 00) });

	// Create an action that will launch the application whenever the trigger fires
	td.Actions.Add(new ExecAction(Application.ExecutablePath));

	// Register the task in the root folder
	ts.RootFolder.RegisterTaskDefinition(@"RunMyApp", td);

	// Remove the task we just created
	//ts.RootFolder.DeleteTask("RunMyApp");
}

ملاحظات: هذا الكود يقوم بتشغيل برنامجك في الوقت المعين، ثم يمكنك تنبيه المستخدم كيفما تريدين من خلال برنامجك. لكن انتبهي ان يكون تأخير بين تشغيل برنامجك وتنبيه المستخدم، يعني مثلا ان اراد المستخدم ان يتم تنبيهه في 10:24، قومي بتشغيل برنامجك قبل ذلك في 10:23.

لو ليس احراج، هل لي ان اسأل سؤال، هل أنت عربية؟

وفقكم الله

شكراً أحي على المساعدة وطول البال معي

وسوف اجرب كود وارد عليك

ونعم أنا عربية

أخي هنالك طريقة الفرق بين تاريخين

هل استطيع عملها وماهي ؟؟؟

#12

الاخت الكريمة، لم أفهم قصدك؟

تقصدين هذا:

DateTime date1 = new DateTime(2013, 03, 08, 20, 01, 25);
DateTime date2 = new DateTime(2012, 02, 05, 22, 01, 20);

var interval = date1.Subtract(date2); 

Console.WriteLine(interval.ToString());
Console.WriteLine("TotalDays: {0}",interval.TotalDays);
Console.WriteLine("TotalHours: {0}",interval.TotalHours);
Console.WriteLine("TotalMinutes: {0}",interval.TotalMinutes);
// And so on..

تم تعديل هذه المشاركة بواسطة موليان في 29 مارس 2012 في 22:04

..:: رَبِّ زِدْني عِلْمًا ::..

#13

ما اقصده

هو الفرق بين تاريخين أو التاريخ الحالي و التاريخ يريد المستخدم التنبيه

به

باستخدام دالة DateDiff

#14

DateDiff هي من دوال Visual Basic و SQL

الكود في ردي السابق ينفع..

في امان الله.

..:: رَبِّ زِدْني عِلْمًا ::..

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…