تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
التأكد ان المستخدم اعاد تشغيل الجهاز
#2
السلام عليكم...

يستعمل النظام Windows ما يسمى بجدول الذرات العام (Global Atom Table) لتخزين البيانات في الذاكرة كواحد من طرق تبادل البيانات بين التطبيقات (DDE). و لكن نستطيع أن نستفيد من ذلك في إنجاز المطلوب في السؤال.

يمكنك استعمال دوال API لوضع نص (String) في ذلك الجدول، و سيبقى ذلك النص هناك إلى أن يتم إيقاف أو إعادة تشغيل الحاسوب (أو طبعاً تزيله أنت باستعمال الدالة المخصصة لذلك).

بعد وضع النص يمكنك اختبار ما إذا مازال موجوداً في الجدول أم لا.

1. ضع التصريحات التالية في بداية الكود - التصريح الأخير GlobalDeleteAtom لا تحتاجه إذا لم تكن تريد حذف النص بالكود:

كود :
Private Declare Function GlobalAddAtom Lib "kernel32.dll" Alias "GlobalAddAtomA" (ByVal lpString As String) As Integer
Private Declare Function GlobalGetAtomName Lib "kernel32.dll" Alias "GlobalGetAtomNameA" (ByVal nAtom As Integer, ByVal lpBuffer As String, ByVal nSize As Long) As Long
Private Declare Function GlobalFindAtom Lib "kernel32.dll" Alias "GlobalFindAtomA" (ByVal lpString As String) As Integer
' Private Declare Function GlobalDeleteAtom Lib "kernel32.dll" (ByVal nAtom As Integer) As Integer

2. لإضافة نص إلى الجدول:

كود :
GlobalAddAtom("computer not restarted")

3. لاختبار ما إذا كان النص مازال موجوداً في الجدول (لم تتم إعادة التشغيل):

كود :
Dim s As String
        Dim lRet As Integer
        Const MAX_ATOM = 255

        iAtom = GlobalFindAtom("computer not restarted")

        s = Space$(MAX_ATOM)
        lRet = GlobalGetAtomName(iAtom, s, Len(s))
        s = s.Substring(0, lRet)
        If s = "computer not restarted" Then
            MsgBox("لم تتم إعادة تشغيل الحاسوب")
        Else
            MsgBox("كلو تمام")
        End If

* طبعاً بدل النص "computer not restarted" يمكنك أن تضع أي نص آخر بشرط أن لا يتجاوز طوله 255 رمزاً. و يستحسن أن يكون نصاً غريباً من المستبعد جداً أن يستخدمه برنامج آخر.

نرجو الاستفادة و السلام.
بِسْمِ اللهِ الرَّحْمَنِ الرَّحِيمِ ( وَ مَا تُقَدِّمُوا لِأَنفُسِكُم مِّنْ خَيْرٍ تَجِدُوهُ عِندَ اللهِ هُوَ خَيْراً وَ أَعْظَمَ أَجْراً ) صَدَقَ اللهُ الْعَظِيمُ
الرد }}}


الردود في هذا الموضوع
RE: التأكد ان المستخدم اعاد تشغيل الجهاز - بواسطة ناجي إبراهيم - 01-11-13, 02:32 AM
RE: New_Post - بواسطة sooriaty03 - 05-11-13, 03:56 AM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  كيف تصمم واجهات برامجك بطريقة الكبار .. مقدمة في تصميم واجهات المستخدم ali.alfoly 11 7,798 09-10-25, 08:24 AM
آخر رد: مصمم هاوي
  مساعدة في تمرير اسم المستخدم سيد أحمد 3 964 01-07-25, 12:51 AM
آخر رد: أبو خالد الشكري
  [سؤال] منع الوصول أو تشغيل الريجيسترى dr.programming 4 413 12-06-25, 12:24 AM
آخر رد: أبو خالد الشكري
Exclamation إن الموفر 'Microsoft.ACE.OLEDB.12.0' غير مسجل على الجهاز المحلي. سعود الشامان 5 9,454 19-03-25, 03:11 AM
آخر رد: خالد كامل1
  [سؤال] تغيير الفورم الرئيسي عند تشغيل البرنامج في Visual Studio مع .NET 8؟ silverlord 2 661 09-03-25, 03:52 AM
آخر رد: silverlord
  التأكد من وجود أرقام فقط فى string heem1986 3 332 07-01-25, 01:37 AM
آخر رد: أبو خالد الشكري
  القيام بعملية Insert بعد التأكد من عدم وجود السجل بالجدول صالح عبدالله 2 360 04-01-25, 03:56 PM
آخر رد: صالح عبدالله
  كيفية معرفة الجهاز رئيسي ام فرعي المتألق9 1 407 13-11-24, 06:41 PM
آخر رد: justforit
  [مثال] تشغيل البرنامج كمسؤول alswade 2 468 30-10-24, 07:08 PM
آخر رد: aliday03
Exclamation [VB.NET] ممكن كود تشغيل ملف صوت MP3 الورد الصناعي 10 958 20-10-24, 03:08 PM
آخر رد: salamandal

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم