.....
منقول
تغيير نص أداة مربع نص في برنامج آخر عن طريق VB.NET نحتاج لمعرفة رقم المقبض Handle الخاص بها ونستخدم دوال API.
لمعرفة رقم المقبض نستخدم الدالة GetDlgItem وتطلب قيمتين:
1: رقم مقبض الأداة الحاضنة لها (مثل النافذةForm أوFrame أوGroupBox وما شابه...).
2: رقم التعريف ControlID الخاص بها (ونعرفه باستخدام أداة ++Spy التي تأتي مع أدوات فجوال ستوديو).
إذا كانت الأداة الحاضنة هي النافذة Windows Form فنستخدم الدالة FindWindow وتطلب قيمتين:
1: اسم كلاس النافذة (لا نحتاجه في موضوعنا هذا وسنضع فيه vbNullString)
2: عنوان النافذة وهو الاسم الظاهر في رأس النافذة مثل ("بيانات موظف")
طريقة استخدام أداة ++Spy لمعرفة رقم تعريف الأداة ControlID:
أولا نقوم بتشغيل البرنامج المستهدف وإظهار النافذة المستهدفة منه.
ثانياً نقوم بتشغيل أداة ++Spy عن طريق:
- كافة البرامج
-- ثم Microsoft Visual Studio 20xx
--- ثم Visual Studio Tools
---- ثم تشغيل ++Spy
تظهر نافذة البرنامج ++Spy ومن خلال القائمة Search نختار ...Find Window
تظهر لنا نافذة استهداف الأدوات ونلاحظ بداخلها علامة استهداف داخل مربع
نقوم بسحب علامة الإستهداف من داخل المربع ونسقطها على أداة مربع النص المستهدف الذي في داخل البرنامج المستهدف ثم نضغط [OK]
سنجد أن أداة مربع النص تم تحديده داخل عارض الشجرة TreeView نتركه محدد ولا نغير التحديد
ومن القائمة View نختار ...Properties
الآن هذه النافذة هي المطلوبة وبها بيانات أداة مربع النص الذي استهدف
ونجد في التبويب General بيانات ومن ضمنها Control ID وهو المطلوب وسنستخدمه في كود VB.NET
ننشئ مشروع VB.NET ونضيف Button وTextBox ونضع الكود التالي:
ونرى النتيجة عند التنفيذ بوضع النص في أداة مربع النص المستهدف
ماذا لو كان مربع النص المستهدف داخل أداة حاضنة وليس على الفورم مباشرة........
.....
منقول
تغيير نص أداة مربع نص في برنامج آخر عن طريق VB.NET نحتاج لمعرفة رقم المقبض Handle الخاص بها ونستخدم دوال API.
لمعرفة رقم المقبض نستخدم الدالة GetDlgItem وتطلب قيمتين:
1: رقم مقبض الأداة الحاضنة لها (مثل النافذةForm أوFrame أوGroupBox وما شابه...).
2: رقم التعريف ControlID الخاص بها (ونعرفه باستخدام أداة ++Spy التي تأتي مع أدوات فجوال ستوديو).
إذا كانت الأداة الحاضنة هي النافذة Windows Form فنستخدم الدالة FindWindow وتطلب قيمتين:
1: اسم كلاس النافذة (لا نحتاجه في موضوعنا هذا وسنضع فيه vbNullString)
2: عنوان النافذة وهو الاسم الظاهر في رأس النافذة مثل ("بيانات موظف")
طريقة استخدام أداة ++Spy لمعرفة رقم تعريف الأداة ControlID:
أولا نقوم بتشغيل البرنامج المستهدف وإظهار النافذة المستهدفة منه.
ثانياً نقوم بتشغيل أداة ++Spy عن طريق:
- كافة البرامج
-- ثم Microsoft Visual Studio 20xx
--- ثم Visual Studio Tools
---- ثم تشغيل ++Spy
تظهر نافذة البرنامج ++Spy ومن خلال القائمة Search نختار ...Find Window
تظهر لنا نافذة استهداف الأدوات ونلاحظ بداخلها علامة استهداف داخل مربع
نقوم بسحب علامة الإستهداف من داخل المربع ونسقطها على أداة مربع النص المستهدف الذي في داخل البرنامج المستهدف ثم نضغط [OK]
سنجد أن أداة مربع النص تم تحديده داخل عارض الشجرة TreeView نتركه محدد ولا نغير التحديد
ومن القائمة View نختار ...Properties
الآن هذه النافذة هي المطلوبة وبها بيانات أداة مربع النص الذي استهدف
ونجد في التبويب General بيانات ومن ضمنها Control ID وهو المطلوب وسنستخدمه في كود VB.NET
ننشئ مشروع VB.NET ونضيف Button وTextBox ونضع الكود التالي:
كود :
Public Class Form1
<Runtime.InteropServices.DllImport("user32.dll", SetLastError:=True, CharSet:=Runtime.InteropServices.CharSet.Auto)> _
Private Shared Function FindWindow(ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr
End Function
<Runtime.InteropServices.DllImport("user32.dll")> _
Private Shared Function GetDlgItem(ByVal Column As IntPtr, ByVal nIDDlgItem As Integer) As IntPtr
End Function
<Runtime.InteropServices.DllImport("user32.dll", SetLastError:=True, CharSet:=Runtime.InteropServices.CharSet.Auto)> _
Private Shared Function SendMessage(ByVal Column As IntPtr, ByVal Msg As UInteger, ByVal wParam As IntPtr, ByVal lParam As String) As IntPtr
End Function
' رقم خدمة وضع نص
Private Const WM_SETTEXT As Long = &HC
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' معرفة مقبض النافذة بدلالة عنوانها
Dim hwndForm As Integer = FindWindow(vbNullString, "بيانات موظف")
' معرفة مقبض مربع النص بدلالة رقم تعريفها
Const ControlID_TextBox As Integer = &H2 '<<<<<< Spy++ رقم تعريف أداة مربع النص عن طريق الأداة
Dim hwndTextBox As IntPtr = GetDlgItem(hwndForm, ControlID_TextBox)
' النص المراد إدخاله في مربع النص
Dim txt As String = Me.TextBox1.Text
' أمر إرسال رسالة بدلالة رقم الخدمة
SendMessage(hwndTextBox, WM_SETTEXT, 0, txt)
End Sub
End Classونرى النتيجة عند التنفيذ بوضع النص في أداة مربع النص المستهدف
ماذا لو كان مربع النص المستهدف داخل أداة حاضنة وليس على الفورم مباشرة........
.....



