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