17-10-12, 08:52 PM
كاتب الموضوع : SUB NEW
السلام عليكمالتعامل مع جهاز المسح الضوئي (السكانر ) image scan أو مع الكاميرات
أولاً وقبل كل شيء يجب إضافة المرجعية Interop.WIALib.dll
وقمت بوضعها في المرفقات
لأستيراد المرجعية نقوم بذلك من قائمة Project ثم Add Reference ونضغط على تبويب Browse ونقوم بالبحث عن الملف الذي ذكر سابقاً Interop.WIALib.dll (الملف موجود في المجلد المضغوط في المرفقات )
بعدها نقوم بأستيراد مجالات الأسماء التالية
كود :
Imports WIALib
Imports System
Imports System.Drawing
Imports System.Collections
Imports System.ComponentModel
Imports System.Windows.Forms
Imports System.Data
Imports System.IO
Imports System.Runtime.InteropServices
أداة PictureBox1 و زر Button1 (وهو زر أمر السحب )
نتابع بالأكواد ونضيف في التصريحات العامة
كود :
Private imageFileName As String
كود :
Dim wiaManager As WiaClass = Nothing
Dim wiaDevs As CollectionClass = Nothing
Dim wiaRoot As ItemClass = Nothing
Dim wiaPics As CollectionClass = Nothing
Dim wiaItem As ItemClass = Nothing
Try
wiaManager = New WiaClass()
wiaDevs = TryCast(wiaManager.Devices, CollectionClass)
If (wiaDevs Is Nothing) OrElse (wiaDevs.Count = 0) Then
MessageBox.Show(Me, "No WIA devices found!", "WIA", MessageBoxButtons.OK, MessageBoxIcon.[Stop])
Application.[Exit]()
Exit Sub
End If
Dim selectUsingUI As Object = System.Reflection.Missing.Value
wiaRoot = DirectCast(wiaManager.Create(selectUsingUI), ItemClass)
If wiaRoot Is Nothing Then
Exit Sub
End If
wiaPics = TryCast(wiaRoot.GetItemsFromUI(WiaFlag.SingleImage, WiaIntent.ImageTypeColor), CollectionClass)
If wiaPics Is Nothing Then
Exit Sub
End If
Dim takeFirst As Boolean = True
For Each wiaObj As Object In wiaPics
If takeFirst Then
wiaItem = DirectCast(Marshal.CreateWrapperOfType(wiaObj, GetType(ItemClass)), ItemClass)
imageFileName = Path.GetTempFileName()
Cursor.Current = Cursors.WaitCursor
Me.Refresh()
wiaItem.Transfer(imageFileName, False)
PictureBox1.Image = Image.FromFile(imageFileName)
takeFirst = False
End If
Marshal.ReleaseComObject(wiaObj)
Next
Catch ee As Exception
MessageBox.Show(Me, "Acquire from WIA Imaging failed" & vbCr & vbLf & ee.Message, "WIA", MessageBoxButtons.OK, MessageBoxIcon.[Stop])
Application.[Exit]()
Finally
If wiaItem IsNot Nothing Then
Marshal.ReleaseComObject(wiaItem)
End If
If wiaPics IsNot Nothing Then
Marshal.ReleaseComObject(wiaPics)
End If
If wiaRoot IsNot Nothing Then
Marshal.ReleaseComObject(wiaRoot)
End If
If wiaDevs IsNot Nothing Then
Marshal.ReleaseComObject(wiaDevs)
End If
If wiaManager IsNot Nothing Then
Marshal.ReleaseComObject(wiaManager)
End If
Cursor.Current = Cursors.[Default]
End Try
End Sub
تمت تجربتها على vb.net2008 لا أستطيع الجزم بعملها على vs2003 or vs2005
تحياتى واحترامى للجميع وبالتوفيق