الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ما الأمر المناظر للدالة CopyMemory في فيجوال بيسك دت نيت ؟

مغلق
بدأه حــ@ـــد في 3 سبتمبر 2006 · 7 رد · 752 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

حاولت استخدام دالة API CopyMemory هذه في vb2005 ولكن هنالك خطأ يظهر لي

هل هنالك داله مشابهه لها في مكتبات الفي بي ؟

وياليت أحد يخبرني عن حقيقة عمل هذه الداله

حاليا جالس اعدل كود من vb6 الى 2005

ولم اعرف ماهو الأمر المشابه لها

اطيب تحيه لكم

#2

System.Runtime.InteropServices.Marshal.Copy(...)

مواضيع متنوعة

#3

شكرا جزيلا اخوي Moudey

بحثت وجربت كثير من طرق Marshal.copy ولكن النتائج مختلفه !

ولكن ابشرك بأنه في الدوت نت عرفت كيف استخدم هذه الداله بعد جهد جهيد :lol:

Imports System.Runtime.InteropServices

Public Class Form1



	Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

		Dim lHex As Int32 = &H44004E2C
		Dim sFloat As Single
		CopyMemory(sFloat, lHex, 4)

	End Sub

End Class

Module d
	<DllImport("kernel32.dll")> _
	Public Sub CopyMemory(ByRef hpvDest As Single _
			, ByRef hpvSource As Int32, ByVal cbCopy As Int32)
	End Sub
End Module

فقط اضافة هذا الكود قبل الداله <DllImport("kernel32.dll")>

ولكن ممكن سؤال للأخوة

ماذا تسمى مثل هذه الاكود التي تكون قبل الداله ؟؟؟

وبماذا تستخدم ؟

اطيب تحيه لكم

#5
اقتباس
ماذا تسمى مثل هذه الاكود التي تكون قبل الداله ؟؟؟

تسمى attributes للمزيد عنها راجع :

Attributes in C#

اما العملية التي قمت انت بها بالكامل فتدعى PInvoke

للمزيد عن PInvoke راجع المشاركة 13 في الموضوع التالي :

معلومات و مصطلحات في الـ Pocket PC

اللهم صل و سلم على سيدنا محمد

كاف و نون خلقهم و فنائهم كاف و نون

عالمي شاشة و لغتي صفر و واحد

Just Smile ............You can do it

When you stop learning ... You stop leading

لساني بنطقي صامت عنه عادل............وقلبي بصمتي ضاحك منه هازل

وأتـعـب من نـاداك من لا تـجيبـه............وأغـيظ من عـاداك من لا تـشاكـل

مدونتي الشخصية : Tammam Koujan

آخر مواضيع المدونة :

#6
hazzoom كتب:
Attribute

بحثت عنها ووجدت انها تعطي بعض الإمتيازات للإجراء التي تسبقه

وهل هي مجرد امتيازات فقط ؟

#7
Tammam Koujan كتب:
تسمى attributes للمزيد عنها راجع :

Attributes in C#

اما العملية التي قمت انت بها بالكامل فتدعى PInvoke

للمزيد عن PInvoke راجع المشاركة 13 في الموضوع التالي :

معلومات و مصطلحات في الـ Pocket PC

شكراُ اخي الغالي تمام

هل تتضمن ال Attribute الـ Security ايضاً ؟

#8

السلام عليكم,

اخي الكريم اذا كنت تريد استخدام PInvoke فهذا الموقع جيد www.pinvoke.net

اما Marshal.copy فهي البديل لدالة CopyMemory ولكن يجب مراعاة (data type) التي تستخدمها

اليك مثالين واحد بـ NET. والاخر VB6

طبعاً هذا بالدوت نت .

		private void GetCommandString(int idCmd, GCS uFlags, int pwReserved, IntPtr pszName, int cchMax)
		{
			if((uFlags & GCS.HelpText) == GCS.HelpText) {
				string helpText = (uList.Count > 0) ? uList[idCmd].HelpText + "\0" : "\0";
				if(helpText.Length < cchMax)
					cchMax = helpText.Length;
				if((uFlags & GCS.Unicode) == GCS.Unicode) {
					Marshal.Copy(helpText.ToCharArray(), 0, pszName, cchMax);
				} else {
					Marshal.Copy(Encoding.ASCII.GetBytes(helpText), 0, pszName, cchMax);
				}
			}
		}

وهذا بال VB6

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest As Any, pSource As Any, ByVal ByteLen As Long)

Private Sub IContextMenu_GetCommandString(ByVal idCmd As Long, ByVal uType As shlctxmnu.GETCOMMANDSTRINGFLAGS, pwReserved As Long, ByVal pszName As Long, ByVal cchMax As Long)

  Dim szName As String
  Dim bszName() As Byte
  Dim sMenuHelp As String
	  szName = "View item as a textfile in notepad."

  szName = Left$(szName, cchMax) & vbNullChar

  Select Case uType
	Case GCS_VERBA, GCS_HELPTEXTA, GCS_VALIDATEA
	  If LenB(szName) Then
		bszName = StrConv(szName, vbFromUnicode)
		CopyMemory ByVal pszName, bszName(0), UBound(bszName) + 1
	  End If
	Case GCS_VERBW, GCS_HELPTEXTW, GCS_VALIDATEW
	  If LenB(szName) Then
		bszName = szName
		CopyMemory ByVal pszName, bszName(0), UBound(bszName) + 1
	  End If
  End Select

End Sub

للمزيد عن التعامل مع Marshal.Copy

MSDN

http://msdn2.microsoft.com/en-us/library/s...rshal.copy.aspx

ان لم يعمل معك يفضل وضع الـ Methods الخاصة بهذة الدالة حتي نتمكن من حلها لك ان شاء الله.

مواضيع متنوعة

هذا الموضوع مغلق.

مواضيع مشابهة