محمد احمد لطفى قام بنشر فبراير 10, 2023 قام بنشر فبراير 10, 2023 فى النموذج يمكن معرفة Ip اذا كان متصل أو غير متصل أريد أن يعمل الكود فى وحده نمطية و تشغيله فى الاستعلام وجزاكم الله كل خير IpNetwork.mdb
محمد احمد لطفى قام بنشر فبراير 10, 2023 الكاتب قام بنشر فبراير 10, 2023 المطلوب نفس طريقة النموذج بس تشغيل فى استعلام IpNetwork2.mdb
محمد احمد لطفى قام بنشر فبراير 12, 2023 الكاتب قام بنشر فبراير 12, 2023 لو مش هينفع فى استعلام ممكن عن طريق النموذج بس يكون اسرع من الطريقة الى فوق
ابوخليل قام بنشر فبراير 12, 2023 قام بنشر فبراير 12, 2023 عن طريق الاستعلام ممكن ولكن التنفيذ سيكون ثقيل جدا .. يعني حتنتظر اكثر من ما هو معمول الآن حد الاستعلام 20 الى 30 سجل وايضا يمكن من خلال النموذج وبدلا من عداد الوقت نستخدم دوارة على السجلات ولكن ان اردتها سريعة لا تتجاوز مثل ذلك فاختر ما يناسبك من اجل اطبق لك على مثالك
Moosak قام بنشر فبراير 12, 2023 قام بنشر فبراير 12, 2023 أخي @محمد احمد لطفى أحضرت لك دالة تقوم بفحص ال IP Address إذا كان متصل ولا لا .. ويمكن وضعها في الاستعلام 🙂 ولكن كما قال المهندس @ابوخليل أنها بطييييييييئة جدا لأنها تفحص كل IP على حده وتستغرق وقت كبير لحد ما تعطيك ال Response .. لذلك من الأسهل أن تجعلها في نموذج مفرد وليس متعدد لفحص ال IP الذي تريد معرفته فقط .. أو لك أن تجرب أكثر وتعطينا نتيجة تجاربك 🙂 وهذه هي الدالة : Function IsIPConnected(strIPAddress As String) As Boolean Dim objPing As Object Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2:Win32_PingStatus.Address='" & strIPAddress & "'") If objPing.StatusCode = 0 Then IsIPConnected = True Else IsIPConnected = False End If End Function 1
ابوخليل قام بنشر فبراير 12, 2023 قام بنشر فبراير 12, 2023 كذلك اذا تريد فحصها جملة فالافضل ان تعمل شريط تحميل يظهر خطوات التنفيذ اثناء العملية وينتهي بانتهاء العملية
محمد احمد لطفى قام بنشر فبراير 12, 2023 الكاتب قام بنشر فبراير 12, 2023 أستاذى @ابوخليل ممكن التطبيق على يمكن من خلال النموذج وبدلا من عداد الوقت نستخدم دوارة على السجلات ولكن ان اردتها سريعة لا تتعدا السجلات 100 او 120 بالكثير وبصراحة لا استطيع عمل شريط التحميل أستاذى @Moosak أريد أن أ‘عرف الاجهزة التى تعمل على الشبكها جميعها وكيف يمكن تطبيقها فى الاستعلام لا أعرف كيف اربط حقل IP بالوحدة النمطية وحزاكم الله كل خير
ابوخليل قام بنشر فبراير 12, 2023 قام بنشر فبراير 12, 2023 هذا تطبيق على الاستعلام ولكن عند فتح الاستعلام انتظر حتى تظهر البيانات ip.mdb 1
محمد احمد لطفى قام بنشر فبراير 12, 2023 الكاتب قام بنشر فبراير 12, 2023 أستاذى @ابوخليل ممكن عن طريق النموذج ( يمكن من خلال النموذج وبدلا من عداد الوقت نستخدم دوارة على السجلات ولكن ان اردتها سريعة لا تتعدا السجلات 100 او 120 بالكثير) لأن الاستعلام فعلا بطىء و كله مشاكل
Moosak قام بنشر فبراير 12, 2023 قام بنشر فبراير 12, 2023 1 ساعه مضت, محمد احمد لطفى said: لا أعرف كيف اربط حقل IP بالوحدة النمطية هذه طريقة ربط ال IP بالدالة 🙂 : ' إعطائها رقم الآيدي مباشرة IsIPConnected("192.168.1.110") ' طريقة استخدامها في الاستعلام أو النموذج بحيث تربطها بحقل الآي بي IsIPConnected([IP]) 1
أفضل إجابة ابوخليل قام بنشر فبراير 12, 2023 أفضل إجابة قام بنشر فبراير 12, 2023 تفضل ولكن عليك الصبر دقيقة او دقيقة ونصف حتى يصل الى آخر سجل كلما قلت السجلات كلما كان الانجاز اسرع معرفة الاجهزة على الشبكة .mdb 2
kkhalifa1960 قام بنشر فبراير 12, 2023 قام بنشر فبراير 12, 2023 استاذي أبو خليل هل ممكن استخراج NameIP ولصقه بالجدول .
محمد احمد لطفى قام بنشر فبراير 12, 2023 الكاتب قام بنشر فبراير 12, 2023 (معدل) جزاك الله خيرا استاذى @ابوخليل تم 255 IP فى دقيقتين سوف أعرف الاجهزة التى تعمل و احذف IP الاجهزة التى لا تعمل وسأبحث عن تسريع الامر برنامج ipscan وقت scan استغرق 39 ثانية تم تعديل فبراير 12, 2023 بواسطه محمد احمد لطفى
محمد احمد لطفى قام بنشر فبراير 12, 2023 الكاتب قام بنشر فبراير 12, 2023 (معدل) لى سؤال هل يمكن تشغيل نموذجين مع بعض تم تعديل فبراير 12, 2023 بواسطه محمد احمد لطفى
ابوخليل قام بنشر فبراير 13, 2023 قام بنشر فبراير 13, 2023 18 ساعات مضت, kkhalifa1960 said: استاذي أبو خليل هل ممكن استخراج NameIP ولصقه بالجدول . وجدت لك كلاس يستخرج اسم المضيف من خلال الـــ الآي بي ، والعكس Private Const IP_SUCCESS As Long = 0 Private Const SOCKET_ERROR As Long = -1 Private Const MAX_WSADescription As Long = 256 Private Const MAX_WSASYSStatus As Long = 128 Private Const MIN_SOCKETS_REQD As Long = 1 Private Const WS_VERSION_REQD As Long = &H101 Private Const WS_VERSION_MAJOR As Long = WS_VERSION_REQD \ &H100 And &HFF& Private Const WS_VERSION_MINOR As Long = WS_VERSION_REQD And &HFF& Private Const WSADescription_Len As Long = 256 Private Const WSASYS_Status_Len As Long = 128 Private Const AF_INET As Long = 2 '// structures Private Type HOSTENT hName As Long hAliases As Long hAddrType As Integer hLength As Integer hAddrList As Long End Type Private Type WSADATA wVersion As Integer wHighVersion As Integer szDescription(0 To MAX_WSADescription) As Byte szSystemStatus(0 To MAX_WSASYSStatus) As Byte wMaxSockets As Long wMaxUDPDG As Long dwVendorInfo As Long End Type '// api 'kernel32 Private Declare Sub apiCopyMemory Lib "kernel32" Alias "RtlMoveMemory" (xDest As Any, xSource As Any, ByVal nBytes As Long) Private Declare Function apiStrLen Lib "kernel32" Alias "lstrlenA" (lpString As Any) As Long 'wsock32 Private Declare Function apiGetHostByName Lib "wsock32.dll" Alias "gethostbyname" (ByVal hostname As String) As Long Private Declare Function apiWSAStartup Lib "wsock32.dll" Alias "WSAStartup" (ByVal wVersionRequired As Long, lpWSADATA As WSADATA) As Long Private Declare Function apiWSACleanup Lib "wsock32.dll" Alias "WSACleanup" () As Long Private Declare Function apiInetAddr Lib "wsock32.dll" Alias "inet_addr" (ByVal s As String) As Long Private Declare Function apiGetHostByAddr Lib "wsock32.dll" Alias "gethostbyaddr" (haddr As Long, ByVal hnlen As Long, ByVal addrtype As Long) As Long '// private functions Private Function InitializeSocket() As Boolean Dim WSAD As WSADATA 'attempt to initialize the socket InitializeSocket = apiWSAStartup(WS_VERSION_REQD, WSAD) = IP_SUCCESS End Function Private Sub CloseSocket() 'try to close the socket If apiWSACleanup() <> 0 Then MsgBox "Error calling apiWSACleanup.", vbCritical End If End Sub Public Function GetIPFromHostName(ByVal sHostName As String) As String 'converts a host name to an IP address. Dim nBytes As Long Dim ptrHosent As Long Dim hstHost As HOSTENT Dim ptrName As Long Dim ptrAddress As Long Dim ptrIPAddress As Long Dim sAddress As String 'declare this as Dim sAddress(1) As String if you want 2 ip addresses returned 'try to initalize the socket If InitializeSocket() = True Then 'try to get the IP ptrHosent = apiGetHostByName(sHostName & vbNullChar) If ptrHosent <> 0 Then 'get the IP address apiCopyMemory hstHost, ByVal ptrHosent, LenB(hstHost) apiCopyMemory ptrIPAddress, ByVal hstHost.hAddrList, 4 'fill buffer sAddress = Space$(4) 'if you want multiple domains returned, 'fill all items in sAddress array with 4 spaces apiCopyMemory ByVal sAddress, ByVal ptrIPAddress, hstHost.hLength 'change this to 'CopyMemory ByVal sAddress(0), ByVal ptrIPAddress, hstHost.hLength 'if you want an array of ip addresses returned '(some domains have more than one ip address associated with it) 'get the IP address GetIPFromHostName = IPToText(sAddress) 'if you are using multiple addresses, you need IPToText(sAddress(0)) & "," & IPToText(sAddress(1)) 'etc End If Else MsgBox "Failed to open Socket." End If End Function Private Function IPToText(ByVal IPAddress As String) As String 'converts characters to numbers IPToText = CStr(Asc(IPAddress)) & "." & _ CStr(Asc(Mid$(IPAddress, 2, 1))) & "." & _ CStr(Asc(Mid$(IPAddress, 3, 1))) & "." & _ CStr(Asc(Mid$(IPAddress, 4, 1))) End Function Public Function GetHostNameFromIP(ByVal sIPAddress As String) As String Dim ptrHosent As Long Dim hAddress As Long Dim sHost As String Dim nBytes As Long 'try to open the socket If InitializeSocket() = True Then 'convert string address to long datatype hAddress = apiInetAddr(sIPAddress) 'check if an error ocucred If hAddress <> SOCKET_ERROR Then 'obtain a pointer to the HOSTENT structure 'that contains the name and address 'corresponding to the given network address. ptrHosent = apiGetHostByAddr(hAddress, 4, AF_INET) If ptrHosent <> 0 Then 'convert address and 'get resolved hostname apiCopyMemory ptrHosent, ByVal ptrHosent, 4 nBytes = apiStrLen(ByVal ptrHosent) If nBytes > 0 Then 'fill the IP address buffer sHost = Space$(nBytes) apiCopyMemory ByVal sHost, ByVal ptrHosent, nBytes GetHostNameFromIP = sHost End If Else MsgBox "Call to gethostbyaddr failed." End If 'close the socket CloseSocket Else MsgBox "Invalid IP address" End If Else MsgBox "Failed to open Socket" End If End Function ' وهنا نستدعيه Dim cResolve As clsResolve Set cResolve = New clsResolve MsgBox cResolve.GetHostNameFromIP("216.239.38.120") MsgBox cResolve.GetIPFromHostName("microsoft.com")
Moosak قام بنشر فبراير 13, 2023 قام بنشر فبراير 13, 2023 19 ساعات مضت, kkhalifa1960 said: استاذي أبو خليل هل ممكن استخراج NameIP ولصقه بالجدول . إن كنت تقصد كود معرفة ال IP للجهاز حسب فهمي المتواضع فهذه الدالة تقوم بذلك : 🙂 Function GetIPAddress() As String Dim objWMI As Object Dim colAdapters As Object Dim objAdapter As Object Dim strIPAddress As String Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2") Set colAdapters = objWMI.ExecQuery("Select * from Win32_NetworkAdapterConfiguration") For Each objAdapter In colAdapters If Not IsNull(objAdapter.IPAddress) Then strIPAddress = objAdapter.IPAddress(0) Exit For End If Next objAdapter GetIPAddress = strIPAddress End Function 1
ابوخليل قام بنشر فبراير 13, 2023 قام بنشر فبراير 13, 2023 المطلوب HostIP اسم المضيف بمعلومية الآي بي واذا شبكة داخلية مطلوب اسم الجهاز بمعلومية IP Address يمكن يوجد اكواد مختصرة تقوم بالمهمة انظروا الى مصنف اكسل يحقق الغرض لقلة خبرتي في اكسل لو احد الاخوة يعدل الكود الى اكسس 42_Lookup_Hostname.xlsm 1
محمد احمد لطفى قام بنشر فبراير 13, 2023 الكاتب قام بنشر فبراير 13, 2023 شكرا أستاذ أبو خليل حاولت تشغيله فى اكسس مشتغلش فعلا سؤال هل يمكن تشغيل نموذجين مع بعض لمعرفة IP متصل أو غير متصل لاختصار الوقت
Moosak قام بنشر فبراير 13, 2023 قام بنشر فبراير 13, 2023 أنا جربت هذه الدالة فنجحت في إحضار اسم جهازي .. ولكنها لم تفلح في الآيبيات الأخرى ربما تنجح لديكم .. 🙂 Function GetHostIP(strIPAddress As String) As String Dim objWMI As Object Dim colAdapters As Object Dim objAdapter As Object Dim strHostName As String Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2") Set colAdapters = objWMI.ExecQuery("Select * from Win32_NetworkAdapterConfiguration") For Each objAdapter In colAdapters If Not IsNull(objAdapter.IPAddress) Then If objAdapter.IPAddress(0) = strIPAddress Then strHostName = objAdapter.DNSHostName Exit For End If End If Next objAdapter GetHostIP = strHostName End Function
ابوخليل قام بنشر فبراير 13, 2023 قام بنشر فبراير 13, 2023 22 دقائق مضت, محمد احمد لطفى said: شكرا أستاذ أبو خليل حاولت تشغيله فى اكسس مشتغلش فعلا سؤال هل يمكن تشغيل نموذجين مع بعض لمعرفة IP متصل أو غير متصل لاختصار الوقت الحقيقة لم افهم المطلوب ! كما تعلم يكون التركيز على نموذج واحد ، ولا ادري كيف يمكن تشغيل نموذجين مع بعض 1
ابوخليل قام بنشر فبراير 13, 2023 قام بنشر فبراير 13, 2023 17 دقائق مضت, Moosak said: أنا جربت هذه الدالة فنجحت في إحضار اسم جهازي .. ولكنها لم تفلح في الآيبيات الأخرى ربما تنجح لديكم .. 🙂 Function GetHostIP(strIPAddress As String) As String Dim objWMI As Object Dim colAdapters As Object Dim objAdapter As Object Dim strHostName As String Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2") Set colAdapters = objWMI.ExecQuery("Select * from Win32_NetworkAdapterConfiguration") For Each objAdapter In colAdapters If Not IsNull(objAdapter.IPAddress) Then If objAdapter.IPAddress(0) = strIPAddress Then strHostName = objAdapter.DNSHostName Exit For End If End If Next objAdapter GetHostIP = strHostName End Function ركب الكلاس اعلاه عندك ثم اجعل بيانات الرسائل هكذا MsgBox cResolve.GetHostNameFromIP("85.10.205.205") MsgBox cResolve.GetIPFromHostName("www.officena.net") ستلاحظ انه يعطي اسم الموقع في الرسالة الاولى بناء على الآيبي المدخل والرسالة الثاني عكس الاولى
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.