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

طلب بسيط - كيف اقوم بتعطيل Usb

بدأه أبورنه في 25 أكتوبر 2009 · 5 رد · 886 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

كيف اقوم بتعطيل منفذ usb

وكيف اقوم بتشغيله مرة أخرى ..

:blush: :blush:

لا تبخلوا علي حتى لو بشيء يوضح لي ذلك

لا اشترط وضع كود للذي لا يستطيع

وجزاكم الله خير ..

#2

طيب يا اخواني جزاكم الله خير ..

هل يتم اغلاق المنفذ عن طريق الريجستري ام هناك طريقة اخرى ..

افيدوني جزاكم الله خير :huh:

#3

بالمصادفة قابلني موضوع شبيه

USB GATE SOURCE CODE

http://www.sa3eka.com/forum/soft25375.html

ارجوا ان يكون قريب مما تريد

حملت السورس ووضعته بالمرفقات للتسهيل

USB_GATE_SOURCE_CODE.rar

It does not matter what they know about you, but what you can do, so let your work speak of you

mmghv VB6 Programmer

#4

اخوي حملت الملف ...

لم يتم ايقاف ubs او اي منفذ آخر ..

جزاك الله خير على الرد ..

واتمنى ان تفيدوني في طريقة أخرى ...

#5

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

اتمنى الإجابة عن سؤالي ولكم مني جزيل الشكر أو حتى تقريب الإجابة لي ..

#6

السلام عليكم...

الكود التالي يقوم بإيقاف قرص USB أو إخراج قرص CD/DVD.

ضع على الـ Form زر أمر Command1 و مؤقت Timer1 ثم انسخ الكود التالي و ألصقه. الـ Timer موجود لإعطاء فترة انتظار للبرامج التي قد تكون تستعمل قرص الـ USB.

قم بتعديل الكود داخل إجراء النقر على الـ Command1 (يحتوي عل سطر واحد) بحيث تضع حرف محرك الأقراص الذي تريد إيقافه أو إخراجه.

قم بتشغيل البرنامج ثم انقر على الزر. إذا نجح الأمر فستظهر رسالة بأنه يمكن إزالة القرص. رمز القرص يبقى في نافذة جهاز الكمبيوتر لكنه غير متصل، و إذا حاولت بعدها الوصول إلى القرص فإنه سيقول لك الرجاء إدخال القرص.

  1.  
  2. Option Explicit
  3.  
  4. Dim boTimeOut As Boolean
  5.  
  6. Private Const DRIVE_CDROM As Long = 5
  7. Private Const DRIVE_REMOVABLE As Long = 2
  8.  
  9. Private Const GENERIC_READ As Long = &H80000000
  10. Private Const GENERIC_WRITE As Long = &H40000000
  11.  
  12. Private Const OPEN_EXISTING As Long = 3
  13. Private Const FILE_DEVICE_FILE_SYSTEM As Long = 9
  14. Private Const FILE_DEVICE_MASS_STORAGE As Long = &H2D&
  15. Private Const METHOD_BUFFERED As Long = 0
  16. Private Const FILE_ANY_ACCESS As Long = 0
  17. Private Const FILE_READ_ACCESS As Long = 1
  18. Private Const FILE_SHARE_WRITE = &H2
  19. Private Const LOCK_VOLUME As Long = 6
  20. Private Const DISMOUNT_VOLUME As Long = 8
  21. Private Const EJECT_MEDIA As Long = &H202
  22. Private Const MEDIA_REMOVAL As Long = &H201
  23. Private Const INVALID_HANDLE_VALUE As Long = -1
  24.  
  25. Private Const LOCK_TIMEOUT As Long = 1000
  26. Private Const LOCK_RETRIES As Long = 20
  27.  
  28. Private Declare Function GetDriveType Lib "kernel32.dll" Alias "GetDriveTypeA" (ByVal nDrive As
    String) As Long
  29.  
  30. Private Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As Long
  31.  
  32. Private Declare Function CreateFile Lib "kernel32.dll" Alias "CreateFileA" _
  33. (ByVal lpFileName As String, _
  34. ByVal dwDesiredAccess As Long, _
  35. ByVal dwShareMode As Long, _
  36. ByRef lpSecurityAttributes As Long, _
  37. ByVal dwCreationDisposition As Long, _
  38. ByVal dwFlagsAndAttributes As Long, _
  39. ByVal hTemplateFile As Long) As Long
  40.  
  41. Private Declare Function DeviceIoControl Lib "kernel32.dll" _
  42. (ByVal hDevice As Long, _
  43. ByRef dwIoControlCode As Long, _
  44. ByRef lpInBuffer As Any, _
  45. ByVal nInBufferSize As Long, _
  46. ByRef lpOutBuffer As Any, _
  47. ByVal nOutBufferSize As Long, _
  48. ByRef lpBytesReturned As Long, _
  49. ByRef lpOverlapped As Long) As Long
  50.  
  51. Private Function CTL_CODE(lngDevFileSys As Long, lngFunction As Long, lngMethod As Long, lngAcc
    ess As Long) As Long
  52. CTL_CODE = (lngDevFileSys * (2 ^ 16)) Or (lngAccess * (2 ^ 14)) Or (lngFunction * (2 ^ 2))
    Or lngMethod
  53. End Function
  54.  
  55. Private Function OpenVolume(strLetter As String, lngVolHandle As Long) As Boolean
  56. Dim lngDriveType As Long
  57. Dim lngAccessFlags As Long
  58. Dim strVolume As String
  59.  
  60. lngDriveType = GetDriveType(strLetter)
  61. Select Case lngDriveType
  62. Case DRIVE_REMOVABLE
  63. lngAccessFlags = GENERIC_READ 'Or GENERIC_WRITE
  64. Case DRIVE_CDROM
  65. lngAccessFlags = GENERIC_READ
  66. Case Else
  67. OpenVolume = False
  68. Exit Function
  69. End Select
  70. strVolume = "." & strLetter
  71. lngVolHandle = CreateFile(strVolume, lngAccessFlags, FILE_SHARE_WRITE, ByVal CLng(0), OPEN_
    EXISTING, ByVal CLng(0), ByVal CLng(0))
  72. If lngVolHandle = INVALID_HANDLE_VALUE Then
  73. OpenVolume = False
  74. Exit Function
  75. End If
  76.  
  77. OpenVolume = True
  78. End Function
  79.  
  80. Private Function CloseVolume(lngVolHandle As Long) As Boolean
  81. Dim lngReturn As Long
  82.  
  83. lngReturn = CloseHandle(lngVolHandle)
  84. If lngReturn = 0 Then
  85. CloseVolume = False
  86. Else
  87. CloseVolume = True
  88. End If
  89. End Function
  90.  
  91. Private Function LockVolume(ByRef lngVolHandle As Long) As Boolean
  92. Dim lngBytesReturned As Long
  93. Dim intCount As Integer
  94. Dim intI As Integer
  95. Dim boLocked As Boolean
  96. Dim lngFunction As Long
  97.  
  98. lngFunction = CTL_CODE(FILE_DEVICE_FILE_SYSTEM, LOCK_VOLUME, METHOD_BUFFERED, FILE_ANY_ACCE
    SS)
  99. intCount = LOCK_TIMEOUT / LOCK_RETRIES
  100. boLocked = False
  101. For intI = 0 To LOCK_RETRIES
  102. boTimeOut = False
  103. Timer1.Interval = intCount
  104. Timer1.Enabled = True
  105. Do Until boTimeOut = True Or boLocked = True
  106. boLocked = DeviceIoControl(lngVolHandle, ByVal lngFunction, _
  107. CLng(0), 0, CLng(0), 0, lngBytesReturned, ByVal CLng(0))
  108. DoEvents
  109. Loop
  110. If boLocked = True Then
  111. LockVolume = True
  112. Timer1.Enabled = False
  113. Exit Function
  114. End If
  115. Next intI
  116. LockVolume = False
  117. End Function
  118.  
  119. Private Function DismountVolume(lngVolHandle As Long) As Boolean
  120. Dim lngBytesReturned As Long
  121. Dim lngFunction As Long
  122.  
  123. lngFunction = CTL_CODE(FILE_DEVICE_FILE_SYSTEM, DISMOUNT_VOLUME, METHOD_BUFFERED, FILE_ANY_
    ACCESS)
  124. DismountVolume = DeviceIoControl(lngVolHandle, ByVal lngFunction, 0, 0, 0, 0, lngBytesRetur
    ned, ByVal 0)
  125. End Function
  126.  
  127. Private Function PreventRemovalofVolume(lngVolHandle As Long) As Boolean
  128. Dim boPreventRemoval As Boolean
  129. Dim lngBytesReturned As Long
  130. Dim lngFunction As Long
  131.  
  132. boPreventRemoval = False
  133. lngFunction = CTL_CODE(FILE_DEVICE_MASS_STORAGE, MEDIA_REMOVAL, METHOD_BUFFERED, FILE_READ_
    ACCESS)
  134. PreventRemovalofVolume = DeviceIoControl(lngVolHandle, ByVal lngFunction, boPreventRemoval,
    Len(boPreventRemoval), 0, 0, lngBytesReturned, ByVal 0)
  135. End Function
  136.  
  137. Private Function AutoEjectVolume(lngVolHandle As Long) As Boolean
  138. Dim lngFunction As Long
  139. Dim lngBytesReturned As Long
  140.  
  141. lngFunction = CTL_CODE(FILE_DEVICE_MASS_STORAGE, EJECT_MEDIA, METHOD_BUFFERED, FILE_READ_AC
    CESS)
  142. AutoEjectVolume = DeviceIoControl(lngVolHandle, ByVal lngFunction, 0, 0, 0, 0, lngBytesRetu
    rned, ByVal 0)
  143. End Function
  144.  
  145. Private Sub Eject(strVol As String)
  146. Dim lngVolHand As Long
  147. Dim boResult As Boolean
  148. Dim boSafe As Boolean
  149.  
  150. strVol = strVol & ":"
  151. '
  152. ' Open and get a Handle for the Volume
  153. '
  154. boResult = OpenVolume(strVol, lngVolHand)
  155. If boResult = False Then
  156. MsgBox "Error Opening Volume " & Err.LastDllError
  157. Exit Sub
  158. End If
  159. '
  160. ' Lock the Volume
  161. '
  162. boResult = LockVolume(lngVolHand)
  163. If boResult = False Then
  164. MsgBox "Error Dismounting Volume " & Err.LastDllError
  165. CloseVolume (lngVolHand)
  166. Exit Sub
  167. End If
  168. '
  169. 'Dismount the Volume
  170. '
  171. boResult = DismountVolume(lngVolHand)
  172. If boResult = False Then
  173. MsgBox "Error Dismounting Volume " & Err.LastDllError
  174. CloseVolume (lngVolHand)
  175. Exit Sub
  176. End If
  177. '
  178. ' Set to allow the Volume to be Removed
  179. '
  180. boResult = PreventRemovalofVolume(lngVolHand)
  181. If boResult = False Then
  182. MsgBox "Error Allowing Removal of Volume " & Err.LastDllError
  183. CloseVolume (lngVolHand)
  184. Exit Sub
  185. End If
  186. boSafe = True
  187. '
  188. ' Eject the Volume
  189. '
  190. boResult = AutoEjectVolume(lngVolHand)
  191. If boSafe = True Then
  192. MsgBox "يمكن الآن إزالة القرص من المحرك " & UCase(strVol) & " بأمان", _
  193. vbInformation Or vbMsgBoxRight Or vbMsgBoxRtlReading
  194. End If
  195. '
  196. ' Close the Handle
  197. '
  198. boResult = CloseVolume(lngVolHand)
  199. If boResult = False Then
  200. MsgBox "Error Closing Volume " & Err.LastDllError
  201. Exit Sub
  202. End If
  203. Unload Me
  204. End Sub
  205.  
  206. Private Sub Command1_Click()
  207. ' اكتب حرف محرك الأقراص الذي تريد إزالته G بدل الحرف
  208. Eject "G"
  209. End Sub
  210.  
  211. Private Sub Timer1_Timer()
  212. boTimeOut = True
  213. End Sub
  214.  

نرجو الاستفادة و السلام.

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

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