02-10-12, 02:05 AM
كاتب الموضوع : DreamNet
السلام عليكم ورحمة الله وبركاتهربما العنوان غير واضح بعض الشئ
نحن هنا نتحدث عن انظمة التشغيل الجديدة ابتداء من فيستا اصبح هناك مايسمى بالUAC
قد يلاحظ المستعمل ان هناك بعض الأزرار تأتي بها علامة درع لبعض البرامج
ومن أجل عمل ذلك قد يفكر البعض في استعمال صورة هذا الدرع الموجودة مع الفيجوال استيديو واضافتها للزر مباشرة
لكننا نريد هنا اضافتها برمجيا
قبل البدء ولكي نكون منطقيين فان هذا الدرع يوضع عندما يكون حساب المستخدم فعلا مدير نظام أي Administrator لذلك يتوجب علينا أن نتأكد من ذلك أولا
سنتعامل هنا مع فضاء الأسماء Security.Principal
نستعمل الدالة التالية من أجل التأكد من الحساب الحالي هل هو Admin
بعدها نستعمل دالة الAPI المشهورة SendMessage من أجل رسم الدرع على الزر
ثم نطبق الكود
لكننا نريد هنا اضافتها برمجيا
قبل البدء ولكي نكون منطقيين فان هذا الدرع يوضع عندما يكون حساب المستخدم فعلا مدير نظام أي 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]