امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
آیا میتوان برنامه ای نوشت که فلش مموری را Eject کنه ؟
نویسنده پیام
sevdaboy آفلاین
كاربر دو ستاره
**

ارسال‌ها: 73
موضوع‌ها: 24
تاریخ عضویت: مهر ۱۳۸۵

تشکرها : 35
( 27 تشکر در 17 ارسال )
ارسال: #1
آیا میتوان برنامه ای نوشت که فلش مموری را Eject کنه ؟
با سلام دوستان

بعضی مواقع با خود ویندوز نمیشه فلش مموری رو Eject کرد و با این پیغام رو به رو میشم

[تصویر:  asd.gif]


[تصویر:  Behrang-Emza.gif]
۲۵-آذر-۱۳۹۰, ۱۲:۰۲:۴۹
ارسال‌ها
پاسخ
Payman62 آفلاین
مدیر بخش ویژوال بیسیک
*****

ارسال‌ها: 2,273
موضوع‌ها: 149
تاریخ عضویت: اسفند ۱۳۸۴

تشکرها : 1308
( 3661 تشکر در 942 ارسال )
ارسال: #2
RE: آیا میتوان برنامه ای نوشت که فلش مموری را Eject کنه ؟
سلام.
معمولا وقتی برنامه ای یا چیزی رو فلش باز باشه این مشکل پیش میاد.
میتونی برنامه ای بنویسی که فایل هایی که از رو فلش باز شدن رو ببنده تا فلش اجکت شه.
البته به دردسرش نمیرزه. همیشم جواب نمیده.
۲۶-آذر-۱۳۹۰, ۰۲:۲۲:۰۰
ارسال‌ها
پاسخ
تشکر شده توسط : aKaReZa75
rap0661 آفلاین
كاربر دو ستاره
**

ارسال‌ها: 171
موضوع‌ها: 16
تاریخ عضویت: اردیبهشت ۱۳۸۸

تشکرها : 1
( 84 تشکر در 71 ارسال )
ارسال: #3
RE: آیا میتوان برنامه ای نوشت که فلش مموری را Eject کنه ؟
نگاه اگه بخوای برنامه های در حال اجرا که مرتبط میشن به فلشت را از حافظه خارج کنی شرایط خاص خودش را داره یعنی باید قابل خاتمه باشه در داخل ویندوز که بتونی خاتمش بدی اگه سیستمی باشه نمیشه چون مال ویندوز است و اگه هم بشه دچار مشکل میشه ویندوز و خاموش میشه
۲۶-آذر-۱۳۹۰, ۱۸:۳۴:۰۱
ارسال‌ها
پاسخ
Payman62 آفلاین
مدیر بخش ویژوال بیسیک
*****

ارسال‌ها: 2,273
موضوع‌ها: 149
تاریخ عضویت: اسفند ۱۳۸۴

تشکرها : 1308
( 3661 تشکر در 942 ارسال )
ارسال: #4
RE: آیا میتوان برنامه ای نوشت که فلش مموری را Eject کنه ؟
(۲۶-آذر-۱۳۹۰, ۱۸:۳۴:۰۱)rap0661 نوشته است: نگاه اگه بخوای برنامه های در حال اجرا که مرتبط میشن به فلشت را از حافظه خارج کنی شرایط خاص خودش را داره یعنی باید قابل خاتمه باشه در داخل ویندوز که بتونی خاتمش بدی اگه سیستمی باشه نمیشه چون مال ویندوز است و اگه هم بشه دچار مشکل میشه ویندوز و خاموش میشه

سلام.
میشه بیشتر توضیح بفرمایید؟
۲۶-آذر-۱۳۹۰, ۲۲:۴۴:۳۲
ارسال‌ها
پاسخ
zirak آفلاین
كاربر تک ستاره
*

ارسال‌ها: 40
موضوع‌ها: 4
تاریخ عضویت: تير ۱۳۸۹

تشکرها : 15
( 24 تشکر در 16 ارسال )
ارسال: #5
RE: آیا میتوان برنامه ای نوشت که فلش مموری را Eject کنه ؟
در ماژول
کد:
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 روش
۲۹-آذر-۱۳۹۰, ۱۳:۳۰:۳۴
ارسال‌ها
پاسخ
تشکر شده توسط : sevdaboy, Di Di
sevdaboy آفلاین
كاربر دو ستاره
**

ارسال‌ها: 73
موضوع‌ها: 24
تاریخ عضویت: مهر ۱۳۸۵

تشکرها : 35
( 27 تشکر در 17 ارسال )
ارسال: #6
RE: آیا میتوان برنامه ای نوشت که فلش مموری را Eject کنه ؟
ممنونم

بعضی اوقات اینطوری میشه ، هر چیزی هم به وفلشم ربط داشت رو قطع میکنم

ولی باز هم به این صورت هست

آیا با کدی که Zirak عزیز داده میشه به صورت سالم و امن فلش رو Eject کرد ؟

ممنون میشم جواب بدین

[تصویر:  Behrang-Emza.gif]
۰۵-دى-۱۳۹۰, ۱۵:۰۴:۱۷
ارسال‌ها
پاسخ
zirak آفلاین
كاربر تک ستاره
*

ارسال‌ها: 40
موضوع‌ها: 4
تاریخ عضویت: تير ۱۳۸۹

تشکرها : 15
( 24 تشکر در 16 ارسال )
ارسال: #7
RE: آیا میتوان برنامه ای نوشت که فلش مموری را Eject کنه ؟
(۰۵-دى-۱۳۹۰, ۱۵:۰۴:۱۷)sevdaboy نوشته است: ممنونم

بعضی اوقات اینطوری میشه ، هر چیزی هم به وفلشم ربط داشت رو قطع میکنم

ولی باز هم به این صورت هست

آیا با کدی که Zirak عزیز داده میشه به صورت سالم و امن فلش رو Eject کرد ؟

ممنون میشم جواب بدین

اینو یادم رفت


فایل‌(های) پیوست شده
.rar   USB Eject.rar (اندازه: 4.03 KB / تعداد دفعات دریافت: 97)
۰۵-دى-۱۳۹۰, ۱۹:۱۳:۳۱
ارسال‌ها
پاسخ
تشکر شده توسط : sevdaboy
sevdaboy آفلاین
كاربر دو ستاره
**

ارسال‌ها: 73
موضوع‌ها: 24
تاریخ عضویت: مهر ۱۳۸۵

تشکرها : 35
( 27 تشکر در 17 ارسال )
ارسال: #8
RE: آیا میتوان برنامه ای نوشت که فلش مموری را Eject کنه ؟
با سلام و تشکر از شما
میخواستم بدونم با این کد اگه 2 تا فلش روی سیستم باشه هر 2 فلش Eject میشن ؟

راهی هست که تک تک Eject کنه ؟


ممنون میشم جواب بدین

[تصویر:  Behrang-Emza.gif]
۱۳-دى-۱۳۹۰, ۱۷:۴۲:۴۴
ارسال‌ها
پاسخ
zirak آفلاین
كاربر تک ستاره
*

ارسال‌ها: 40
موضوع‌ها: 4
تاریخ عضویت: تير ۱۳۸۹

تشکرها : 15
( 24 تشکر در 16 ارسال )
ارسال: #9
RE: آیا میتوان برنامه ای نوشت که فلش مموری را Eject کنه ؟
اگه دقت کرده باشی
اینجا تعیین میکنی کجا رو Eject کنه.
کد:
Private Sub Command1_Click()

Call EjectMedia("I:", IOCTL_STORAGE_EJECT_MEDIA)
End Sub
۱۵-دى-۱۳۹۰, ۰۹:۰۱:۳۶
ارسال‌ها
پاسخ
تشکر شده توسط : sevdaboy
sevdaboy آفلاین
كاربر دو ستاره
**

ارسال‌ها: 73
موضوع‌ها: 24
تاریخ عضویت: مهر ۱۳۸۵

تشکرها : 35
( 27 تشکر در 17 ارسال )
ارسال: #10
RE: آیا میتوان برنامه ای نوشت که فلش مموری را Eject کنه ؟
(۱۵-دى-۱۳۹۰, ۰۹:۰۱:۳۶)zirak نوشته است: اگه دقت کرده باشی
اینجا تعیین میکنی کجا رو Eject کنه.
کد:
Private Sub Command1_Click()

Call EjectMedia("I:", IOCTL_STORAGE_EJECT_MEDIA)
End Sub

Zirak عزیز ، ممنونم ولی منظور من این بود که میشه یه ListVIew بزارم که فقط فلش مموری هایی که به کامپیوتر وصل هستن رو نشون بده که کاربر بتونه انتخاب کنه کدوم یکی Eject بشه

[تصویر:  Behrang-Emza.gif]
۱۶-دى-۱۳۹۰, ۱۳:۵۴:۵۸
ارسال‌ها
پاسخ
Payman62 آفلاین
مدیر بخش ویژوال بیسیک
*****

ارسال‌ها: 2,273
موضوع‌ها: 149
تاریخ عضویت: اسفند ۱۳۸۴

تشکرها : 1308
( 3661 تشکر در 942 ارسال )
ارسال: #11
RE: آیا میتوان برنامه ای نوشت که فلش مموری را Eject کنه ؟
سلام.

کد زیر لیست کل درایو هارو بهتون میده.
بعد میتونید درایوهای از نوع 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

۱۷-دى-۱۳۹۰, ۰۱:۳۰:۰۷
ارسال‌ها
پاسخ
تشکر شده توسط : sevdaboy


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  قفل فلش مموری aliooali 5 5,535 ۰۱-مرداد-۱۳۹۱, ۰۰:۱۸:۲۰
آخرین ارسال: Payman62
  اتوران کردن فایل ها در فلش مموری download69 10 28,308 ۲۷-فروردین-۱۳۹۱, ۲۰:۳۸:۲۷
آخرین ارسال: iman2025
  چگونه میتوان اطلاعات مربوط به یک پروسه رم را خواند؟ sylvester 10 8,870 ۱۶-بهمن-۱۳۸۸, ۲۱:۵۱:۲۵
آخرین ارسال: sylvester
  چطوری میشه عمودی نوشت؟ alaska 12 9,506 ۱۵-فروردین-۱۳۸۸, ۲۳:۵۱:۰۵
آخرین ارسال: alaska
  چگونه می توان برنامه ای نوشت که بصورت اتوماتیک نصب شود؟ zacaria 9 7,169 ۰۱-دى-۱۳۸۶, ۱۳:۲۹:۱۳
آخرین ارسال: ΛΛ Θ l-l $ Σ Ω
  چگونه میتوان از طریق ویژوال بیسیک یک اتصال اینترنتی را قطع کرد zacaria 3 4,082 ۲۴-آذر-۱۳۸۶, ۲۰:۰۷:۰۱
آخرین ارسال: zacaria

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 2 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS