PDA

View Full Version : سوال: مشخصات فلش مموری



azadich
پنج شنبه 13 مهر 1391, 17:32 عصر
با سلام برنامه ای میخوام که مشخصات فلش مموری اتصال شده به کامپیوتر را نمایش دهد مثلا شماره سریال آن را

RESMAILY
پنج شنبه 13 مهر 1391, 18:21 عصر
به نام خدا
با سلام. به نظر نمي رسد كه فلاش مموري سريال آنطور كه شما موردنظرت هست داشته باشد. ولي بطور معمول وقتي درايوي فرمت شود ويندوز يك شماره سريال به آن اختصاص مي دهد كه تا فرمت بعدي پايدار است. اگر به كارت مي خورد با تابع API موسوم به GetVolumeInformation مي شود اين سريال را بدست آورد و بكار بست.(براي چه مي خواهي؟ اگر مي خواهي قفل سخت افزاري بسازي بايد مواظب قضيه فرمت شدنش باشي)

Private Declare Function GetVolumeInformation Lib "kernel32.dll" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long
Public Function sn_drv(strDrive As String) As String
volname = Space(256): sysname = Space(256)
retval = GetVolumeInformation(strDrive, volname, Len(volname), sn, maxcomplen, _
sysflags, sysname, Len(sysname))
sn = Abs(sn)
sn_drv = sn
End Function

azadich
پنج شنبه 13 مهر 1391, 20:44 عصر
به نام خدا
با سلام. به نظر نمي رسد كه فلاش مموري سريال آنطور كه شما موردنظرت هست داشته باشد. ولي بطور معمول وقتي درايوي فرمت شود ويندوز يك شماره سريال به آن اختصاص مي دهد كه تا فرمت بعدي پايدار است. اگر به كارت مي خورد با تابع API موسوم به GetVolumeInformation مي شود اين سريال را بدست آورد و بكار بست.(براي چه مي خواهي؟ اگر مي خواهي قفل سخت افزاري بسازي بايد مواظب قضيه فرمت شدنش باشي)

Private Declare Function GetVolumeInformation Lib "kernel32.dll" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long
Public Function sn_drv(strDrive As String) As String
volname = Space(256): sysname = Space(256)
retval = GetVolumeInformation(strDrive, volname, Len(volname), sn, maxcomplen, _
sysflags, sysname, Len(sysname))
sn = Abs(sn)
sn_drv = sn
End Function

خیلی تشکر میشه با نمونه بزاری

azadich
جمعه 14 مهر 1391, 19:58 عصر
به نام خدا
با سلام. به نظر نمي رسد كه فلاش مموري سريال آنطور كه شما موردنظرت هست داشته باشد. ولي بطور معمول وقتي درايوي فرمت شود ويندوز يك شماره سريال به آن اختصاص مي دهد كه تا فرمت بعدي پايدار است. اگر به كارت مي خورد با تابع API موسوم به GetVolumeInformation مي شود اين سريال را بدست آورد و بكار بست.(براي چه مي خواهي؟ اگر مي خواهي قفل سخت افزاري بسازي بايد مواظب قضيه فرمت شدنش باشي)

Private Declare Function GetVolumeInformation Lib "kernel32.dll" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long
Public Function sn_drv(strDrive As String) As String
volname = Space(256): sysname = Space(256)
retval = GetVolumeInformation(strDrive, volname, Len(volname), sn, maxcomplen, _
sysflags, sysname, Len(sysname))
sn = Abs(sn)
sn_drv = sn
End Function

لطفا یه نمونه بزاری خواهش میکنم اساتید محترم

azadich
سه شنبه 18 مهر 1391, 07:06 صبح
لطفا یه نمونه بزاری خواهش میکنم اساتید محترم
خواهش میکنم اساتید بزرگوار یه نمونه بزارید

RESMAILY
سه شنبه 18 مهر 1391, 07:27 صبح
به نام خدا
با سلام. رييس يعني نمي خواهي همين كد را كپي بفرمايي و در برنامه مورد استفاده قرار بدهيد؟

azadich
سه شنبه 18 مهر 1391, 07:56 صبح
به نام خدا
با سلام. رييس يعني نمي خواهي همين كد را كپي بفرمايي و در برنامه مورد استفاده قرار بدهيد؟
ببخشید جواب نداد چه جوری استفاده میشه

azadich
سه شنبه 18 مهر 1391, 16:00 عصر
به نام خدا
با سلام. رييس يعني نمي خواهي همين كد را كپي بفرمايي و در برنامه مورد استفاده قرار بدهيد؟
يعني نمونه رو نمي زاري اساتيد محترم.خواهش كردم

azadich
پنج شنبه 20 مهر 1391, 06:54 صبح
با سلام، خواهشمندم اساتید محترم روی نمونه اصلاح فرمایند

RESMAILY
پنج شنبه 20 مهر 1391, 16:34 عصر
به نام خدا
با سلام با پوزش از azadich عزيز من ضمن امتحان برنامه متوجه نكته تازه اي شدم. خودم چند فلش مموري عهد ناصرالدين شاه! دارم كه اين تابع روي آنها جواب مي دهد(چرا؟ نمي دانم) محض امتحان كد را روي چند فلش مموري جدي تر امتحان كردم عدد صفر را برگرداند. لذا اجازه بدهيد ببينم قصه چيست يا اگر دوستان با تجربه مي دانند به اين azadich عزيز يك كمكي بفرمايند. ايشان پيام خصوصي داده بودند ولي چون مطلب را در تالار نوشته بودم ناچار اين تئضيح و اعتذار را همين جا دادم.

Abbas Amiri
پنج شنبه 20 مهر 1391, 20:00 عصر
سلام حتما بایستی ازنام Letter Drive استفاده شود ونه Volume Label ودرمورد اخیر مقدار صفر را برمیگرداند.

azadich
پنج شنبه 20 مهر 1391, 21:02 عصر
به نام خدا
با سلام با پوزش از azadich عزيز من ضمن امتحان برنامه متوجه نكته تازه اي شدم. خودم چند فلش مموري عهد ناصرالدين شاه! دارم كه اين تابع روي آنها جواب مي دهد(چرا؟ نمي دانم) محض امتحان كد را روي چند فلش مموري جدي تر امتحان كردم عدد صفر را برگرداند. لذا اجازه بدهيد ببينم قصه چيست يا اگر دوستان با تجربه مي دانند به اين azadich عزيز يك كمكي بفرمايند. ايشان پيام خصوصي داده بودند ولي چون مطلب را در تالار نوشته بودم ناچار اين تئضيح و اعتذار را همين جا دادم.
ضمن تشکر از همه عزیزانی که وقت گرانبهاشان گذاشتند و جواب دادند من چطوری این تابع را به کار بگیرم پیش من اصلا هیچی نمیاد کجای فرم این فرمول استفاده میشه ممنون

RESMAILY
جمعه 21 مهر 1391, 12:02 عصر
به نام خدا
با سلام. بيا بابا اشتباه كردم . سيستم من ويروسي شده بود. اين نمونه را ببين وتابعي را كه وجود دارد را در هرجاخواستي استفاده كن. كافي است نام فلش مموري را به تابع بدهي و سپس...

RESMAILY
جمعه 21 مهر 1391, 12:11 عصر
به نام خدا
با سلام. اين هم فايل خودت. نام درايو را بنويس مثلا m يا o يا k وغيره. اينتر كني شماره سريال بر مي گردد

azadich
جمعه 21 مهر 1391, 21:21 عصر
به نام خدا
با سلام. اين هم فايل خودت. نام درايو را بنويس مثلا m يا o يا k وغيره. اينتر كني شماره سريال بر مي گردد
با تشکر فراوان از شما آیا راهی نیست که فقط اسم فلش بهش بدیم بعد درایو k یا... خودش تشخیص بده چون ممکنه در هر کامپیوتری فرق کنه

RESMAILY
شنبه 22 مهر 1391, 08:12 صبح
به نام خدا
با سلام.راهي هست. حتي راهي هست كه اصلا لازم نيست اسم فلش را هم به آن بدهيد و خيلي راههاي ديگر كه بايد طي كرد و به آن رسيد. حداقل آن است كه قبل از رسيدن به آن يك طرح داشته باشيم و بدانيم دنبال چه بايد بگرديم. مثلا براي خواسته شما بايد اول مي رفتيم سراغ روالي كه در لحظه خاصي (مثلا موقع شروع برنامه) برود سراغ اينكه ايا فلش مموري به سيستم وصل است يانه. اگر وصل بود چي و اگر نبود چي. بعد بقيه ماجرا. براي فهميدن اينكه فلش مموري به سيستم وصل است يانه و اسمش چيست، مي شود به كمك تابع آ- پي- آي موسوم به GetDriveType روال مورد نظررا بنويسيم . حتي مي شود آن را درجا فرمت كرد و خيلي كارهاي ديگر. اما شما از كجا شروع كردي؟
منظور آنكه خودتان يك مطالعه اي يا جستجويي در اين زمينه بفرماييد وگرنه اينطوري بايد بنشينيم و يك برنامه كانل را در تالار بنويسيم. بد نيست و لي وقتي نمونه هايش وجود دارد اين كار ضروري نيست.

azadich
شنبه 22 مهر 1391, 16:54 عصر
به نام خدا
با سلام.راهي هست. حتي راهي هست كه اصلا لازم نيست اسم فلش را هم به آن بدهيد و خيلي راههاي ديگر كه بايد طي كرد و به آن رسيد. حداقل آن است كه قبل از رسيدن به آن يك طرح داشته باشيم و بدانيم دنبال چه بايد بگرديم. مثلا براي خواسته شما بايد اول مي رفتيم سراغ روالي كه در لحظه خاصي (مثلا موقع شروع برنامه) برود سراغ اينكه ايا فلش مموري به سيستم وصل است يانه. اگر وصل بود چي و اگر نبود چي. بعد بقيه ماجرا. براي فهميدن اينكه فلش مموري به سيستم وصل است يانه و اسمش چيست، مي شود به كمك تابع آ- پي- آي موسوم به GetDriveType روال مورد نظررا بنويسيم . حتي مي شود آن را درجا فرمت كرد و خيلي كارهاي ديگر. اما شما از كجا شروع كردي؟
منظور آنكه خودتان يك مطالعه اي يا جستجويي در اين زمينه بفرماييد وگرنه اينطوري بايد بنشينيم و يك برنامه كانل را در تالار بنويسيم. بد نيست و لي وقتي نمونه هايش وجود دارد اين كار ضروري نيست.
خیلی ممنون فقط اگه لطف کنید این تابع برام پیدا کنی ممنون میشم من می خوام وقتی برنامه بالا اومد به صورت خودکار درایو فلش را تشخیص داده و شماره سریال آن را نمایش دهد همین

RESMAILY
یک شنبه 23 مهر 1391, 16:53 عصر
به نام خدا
با سلام خوب از اول بگو يك برنامه برايم بنويس. بفرما! حالا گير ندهي كه اگر دوتا فلش داشتم چكار كنم؟! خودت پيدا كن:متعجب:

azadich
یک شنبه 23 مهر 1391, 17:05 عصر
به نام خدا
با سلام خوب از اول بگو يك برنامه برايم بنويس. بفرما! حالا گير ندهي كه اگر دوتا فلش داشتم چكار كنم؟! خودت پيدا كن:متعجب:
ضمن تشکر فراوان از شما و خسته نباشید لطف کنید نگاه کنید چون وقتی فرم را باز کردم هیچ سریالی نمایش نداد فلش متصل بود ممنون میشم اصلاح کنید

RESMAILY
دوشنبه 24 مهر 1391, 08:41 صبح
به نام خدا
با سلام. برنامه امتحان شده است و مشكلي ندارد.من به مشكل اشاره كرده بودم!
كه اگر دوتا فلش داشتم چكار كنم؟ در برخي سيستم ها قطعات يا بردهايي وجود دارد كه واسطه بين usb و فلش ها مي شوند. شما با كمي دستكاري روي روال ها مي تواني مسئله را حل كني. مثلا يك msgbox بگذار تا تك تك به شما اعلام كند كه در حال بررسي كدام درايو است. بعد با اسم فلش خودت مقايسه نمايي و غيره. البته اخيرا ديدم كه اتوران عليه ما عليه هم كاررامختل مي كند.

azadich
دوشنبه 24 مهر 1391, 12:23 عصر
به نام خدا
با سلام. برنامه امتحان شده است و مشكلي ندارد.من به مشكل اشاره كرده بودم! در برخي سيستم ها قطعات يا بردهايي وجود دارد كه واسطه بين usb و فلش ها مي شوند. شما با كمي دستكاري روي روال ها مي تواني مسئله را حل كني. مثلا يك msgbox بگذار تا تك تك به شما اعلام كند كه در حال بررسي كدام درايو است. بعد با اسم فلش خودت مقايسه نمايي و غيره. البته اخيرا ديدم كه اتوران عليه ما عليه هم كاررامختل مي كند.
خیلی تشکر می کنم از شما و شرمنده ام ولی هر کار کردم جواب نداد