۲۵-آذر-۱۳۹۰, ۱۲:۰۲:۴۹
صفحهها: 1 2
۲۶-آذر-۱۳۹۰, ۰۲:۲۲:۰۰
سلام.
معمولا وقتی برنامه ای یا چیزی رو فلش باز باشه این مشکل پیش میاد.
میتونی برنامه ای بنویسی که فایل هایی که از رو فلش باز شدن رو ببنده تا فلش اجکت شه.
البته به دردسرش نمیرزه. همیشم جواب نمیده.
معمولا وقتی برنامه ای یا چیزی رو فلش باز باشه این مشکل پیش میاد.
میتونی برنامه ای بنویسی که فایل هایی که از رو فلش باز شدن رو ببنده تا فلش اجکت شه.
البته به دردسرش نمیرزه. همیشم جواب نمیده.
۲۶-آذر-۱۳۹۰, ۱۸:۳۴:۰۱
نگاه اگه بخوای برنامه های در حال اجرا که مرتبط میشن به فلشت را از حافظه خارج کنی شرایط خاص خودش را داره یعنی باید قابل خاتمه باشه در داخل ویندوز که بتونی خاتمش بدی اگه سیستمی باشه نمیشه چون مال ویندوز است و اگه هم بشه دچار مشکل میشه ویندوز و خاموش میشه
۲۶-آذر-۱۳۹۰, ۲۲:۴۴:۳۲
(۲۶-آذر-۱۳۹۰, ۱۸:۳۴:۰۱)rap0661 نوشته است: [ -> ]نگاه اگه بخوای برنامه های در حال اجرا که مرتبط میشن به فلشت را از حافظه خارج کنی شرایط خاص خودش را داره یعنی باید قابل خاتمه باشه در داخل ویندوز که بتونی خاتمش بدی اگه سیستمی باشه نمیشه چون مال ویندوز است و اگه هم بشه دچار مشکل میشه ویندوز و خاموش میشه
سلام.
میشه بیشتر توضیح بفرمایید؟
۲۹-آذر-۱۳۹۰, ۱۳:۳۰:۳۴
در ماژول
در Unload فورم
ایجاد فانکشن برای عمل
عمل و فراخوانی فانکشن و Eject
این هم نمونه به 2 روش
کد:
Public Sub UnSubClass()
If (WHnd = 0) Then Exit Sub
Call SetWindowLong(WHnd, GWL_WNDPROC, OldProc)
WHnd = 0
OldProc = 0
End Sub
در Unload فورم
کد:
Private Sub Form_Unload(ByRef Cancel As Integer)
Call UnregisterDeviceNotification(lDevNotify)
Call UnSubClass
End Sub
ایجاد فانکشن برای عمل
کد:
Public Function EjectMedia(sDrive As String, _
ctrlCode As Long) As Boolean
Dim hDevice As Long
Dim bytesReturned As Long
Dim success As Long
'obtain a handle to the device
hDevice = CreateFile("\\.\" & sDrive, _
GENERIC_READ, _
FILE_SHARE_READ Or FILE_SHARE_WRITE, _
ByVal 0&, _
OPEN_EXISTING, _
0&, 0&)
If hDevice <> INVALID_HANDLE_VALUE Then
'If the operation succeeds,
'DeviceIoControl returns zero
success = DeviceIoControl(hDevice, _
ctrlCode, _
0&, _
0&, _
ByVal 0&, _
0&, _
bytesReturned, _
ByVal 0&)
End If
Call CloseHandle(hDevice)
EjectMedia = success <> 0
MsgBox "Safe To Remove Flash Disk!"
End Function
عمل و فراخوانی فانکشن و Eject
کد:
Private Sub Command1_Click()
Call EjectMedia("I:", IOCTL_STORAGE_EJECT_MEDIA)
End Sub
این هم نمونه به 2 روش
۰۵-دى-۱۳۹۰, ۱۵:۰۴:۱۷
ممنونم
بعضی اوقات اینطوری میشه ، هر چیزی هم به وفلشم ربط داشت رو قطع میکنم
ولی باز هم به این صورت هست
آیا با کدی که Zirak عزیز داده میشه به صورت سالم و امن فلش رو Eject کرد ؟
ممنون میشم جواب بدین
بعضی اوقات اینطوری میشه ، هر چیزی هم به وفلشم ربط داشت رو قطع میکنم
ولی باز هم به این صورت هست
آیا با کدی که Zirak عزیز داده میشه به صورت سالم و امن فلش رو Eject کرد ؟
ممنون میشم جواب بدین
۰۵-دى-۱۳۹۰, ۱۹:۱۳:۳۱
(۰۵-دى-۱۳۹۰, ۱۵:۰۴:۱۷)sevdaboy نوشته است: [ -> ]ممنونم
بعضی اوقات اینطوری میشه ، هر چیزی هم به وفلشم ربط داشت رو قطع میکنم
ولی باز هم به این صورت هست
آیا با کدی که Zirak عزیز داده میشه به صورت سالم و امن فلش رو Eject کرد ؟
ممنون میشم جواب بدین
اینو یادم رفت
۱۳-دى-۱۳۹۰, ۱۷:۴۲:۴۴
با سلام و تشکر از شما
میخواستم بدونم با این کد اگه 2 تا فلش روی سیستم باشه هر 2 فلش Eject میشن ؟
راهی هست که تک تک Eject کنه ؟
ممنون میشم جواب بدین
میخواستم بدونم با این کد اگه 2 تا فلش روی سیستم باشه هر 2 فلش Eject میشن ؟
راهی هست که تک تک Eject کنه ؟
ممنون میشم جواب بدین
۱۵-دى-۱۳۹۰, ۰۹:۰۱:۳۶
اگه دقت کرده باشی
اینجا تعیین میکنی کجا رو Eject کنه.
اینجا تعیین میکنی کجا رو Eject کنه.
کد:
Private Sub Command1_Click()
Call EjectMedia("I:", IOCTL_STORAGE_EJECT_MEDIA)
End Sub
۱۶-دى-۱۳۹۰, ۱۳:۵۴:۵۸
(۱۵-دى-۱۳۹۰, ۰۹:۰۱:۳۶)zirak نوشته است: [ -> ]اگه دقت کرده باشی
اینجا تعیین میکنی کجا رو Eject کنه.
کد:Private Sub Command1_Click()
Call EjectMedia("I:", IOCTL_STORAGE_EJECT_MEDIA)
End Sub
Zirak عزیز ، ممنونم ولی منظور من این بود که میشه یه ListVIew بزارم که فقط فلش مموری هایی که به کامپیوتر وصل هستن رو نشون بده که کاربر بتونه انتخاب کنه کدوم یکی Eject بشه
۱۷-دى-۱۳۹۰, ۰۱:۳۰:۰۷
سلام.
کد زیر لیست کل درایو هارو بهتون میده.
بعد میتونید درایوهای از نوع Removable رو جدا کنید و نمایش بدید.
البته فکر کنم به جای دستورات right و left از split استفاده کنی کدت قشنگ تر شه.
کد زیر لیست کل درایو هارو بهتون میده.
بعد میتونید درایوهای از نوع Removable رو جدا کنید و نمایش بدید.
البته فکر کنم به جای دستورات right و left از split استفاده کنی کدت قشنگ تر شه.
کد:
Private Declare Function GetLogicalDriveStringsA Lib "kernel32" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Private Declare Function GetDriveTypeA Lib "kernel32" (ByVal nDrive As String) As Long
Private Sub GetDrives()
'Find Drives
strSaveDrives = String(255, vbNullChar)
GetLogicalDriveStringsA 255, strSaveDrives
For keer = 1 To 100
If Left(strSaveDrives, InStr(1, strSaveDrives, vbNullChar)) = vbNullChar Then Exit For
strNamedrv(keer) = Left(strSaveDrives, InStr(1, strSaveDrives, vbNullChar) - 1)
strSaveDrives = Right(strSaveDrives, Len(strSaveDrives) - InStr(1, strSaveDrives, vbNullChar))
Next keer
'Getting Type Of Drives
For I = 1 To keer - 1
Select Case GetDriveTypeA(strNamedrv(I))
Case Is = 2
'Removable
strNamedrv(I) = strNamedrv(I) & vbNullChar & "Removable"
Case Is = 3
'Fix
strNamedrv(I) = strNamedrv(I) & vbNullChar & "Fix"
Case Is = 4
'Remote
strNamedrv(I) = strNamedrv(I) & vbNullChar & "Remote"
Case Is = 5
'CD-Rom
strNamedrv(I) = strNamedrv(I) & vbNullChar & "CD-Rom"
Case Is = 6
'Ram Disk
strNamedrv(I) = strNamedrv(I) & vbNullChar & "Ram Disk"
Case Else
'Unrecognized
strNamedrv(I) = strNamedrv(I) & vbNullChar & "Unrecognized"
End Select
Next I
End Sub
صفحهها: 1 2