منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
اضافة الدرع لازرار التطبيق بالكود (زر مدير نظام ) - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (https://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (https://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم مقالات VB.NET (https://vb4arb.com/vb/forumdisplay.php?fid=184)
+--- الموضوع : اضافة الدرع لازرار التطبيق بالكود (زر مدير نظام ) (/showthread.php?tid=4804)



اضافة الدرع لازرار التطبيق بالكود (زر مدير نظام ) - RaggiTech - 02-10-12

كاتب الموضوع : DreamNet

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

ربما العنوان غير واضح بعض الشئ
نحن هنا نتحدث عن انظمة التشغيل الجديدة ابتداء من فيستا اصبح هناك مايسمى بالUAC
قد يلاحظ المستعمل ان هناك بعض الأزرار تأتي بها علامة درع لبعض البرامج

[صورة مرفقة: 18_01349128853.png]

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

قبل البدء ولكي نكون منطقيين فان هذا الدرع يوضع عندما يكون حساب المستخدم فعلا مدير نظام أي Administrator لذلك يتوجب علينا أن نتأكد من ذلك أولا

سنتعامل هنا مع فضاء الأسماء Security.Principal


كود :
[color=#000000][COLOR=#0000bb]Imports System[/color][color=#007700].[/color][color=#0000bb]Security[/color][color=#007700].[/color][COLOR=#0000bb]Principal  
[/COLOR][/COLOR]

نستعمل الدالة التالية من أجل التأكد من الحساب الحالي هل هو Admin

كود :
[color=#000000][COLOR=#007700]Private Function [/color][color=#0000bb]IsAdmin[/color][color=#007700]() As [/color][COLOR=#0000bb]Boolean
     Dim p [/COLOR][color=#007700]As New [/color][color=#0000bb]WindowsPrincipal[/color][color=#007700]([/color][color=#0000bb]WindowsIdentity[/color][color=#007700].[/color][color=#0000bb]GetCurrent[/color][COLOR=#007700])
     Return [/COLOR][color=#0000bb]p[/color][color=#007700].[/color][color=#0000bb]IsInRole[/color][color=#007700]([/color][color=#0000bb]WindowsBuiltInRole[/color][color=#007700].[/color][color=#0000bb]Administrator[/color][COLOR=#007700])
[/COLOR][color=#0000bb]End [/color][COLOR=#007700]Function  
[/COLOR][/COLOR]

بعدها نستعمل دالة الAPI المشهورة SendMessage من أجل رسم الدرع على الزر

كود :
[color=#000000][COLOR=#007700]<[/color][color=#0000bb]DllImport[/color][color=#007700]([/color][color=#dd0000]"user32"[/color][color=#007700])> [/color][COLOR=#0000bb]_
[/COLOR][color=#007700]Public [/color][color=#0000bb]Shared [/color][color=#007700]Function [/color][color=#0000bb]SendMessage[/color][color=#007700]([/color][color=#0000bb]ByVal hWnd [/color][color=#007700]As [/color][color=#0000bb]IntPtr[/color][color=#007700], [/color][color=#0000bb]ByVal msg [/color][color=#007700]As [/color][color=#0000bb]UInt32[/color][color=#007700], [/color][COLOR=#0000bb]_
         ByVal wParam [/COLOR][color=#007700]As [/color][color=#0000bb]UInt32[/color][color=#007700], [/color][color=#0000bb]ByVal lParam [/color][color=#007700]As [/color][color=#0000bb]UInt32[/color][color=#007700]) As [/color][COLOR=#0000bb]UInt32
End [/COLOR][COLOR=#007700]Function  
[/COLOR][/COLOR]

ثم نطبق الكود


كود :
[color=#000000][COLOR=#007700]If [/color][color=#0000bb]IsAdmin[/color][color=#007700]() [/color][COLOR=#0000bb]Then
  Button1[/COLOR][color=#007700].[/color][color=#0000bb]FlatStyle [/color][color=#007700]= [/color][color=#0000bb]FlatStyle[/color][color=#007700].[/color][COLOR=#0000bb]System
  SendMessage[/COLOR][color=#007700]([/color][color=#0000bb]Button1[/color][color=#007700].[/color][color=#0000bb]Handle[/color][color=#007700], &[/color][color=#0000bb]H160C[/color][color=#007700], [/color][color=#0000bb]0[/color][color=#007700], [/color][color=#0000bb]UInt32[/color][color=#007700].[/color][color=#0000bb]MaxValue[/color][COLOR=#007700])
[/COLOR][color=#0000bb]End [/color][COLOR=#007700]If  
[/COLOR][/COLOR]

[صورة مرفقة: 18_01349128877.png]