PDA

View Full Version : برنامه اي كه با اضافه كردن يه فلش يه پيغام بده



milad.biroonvand
چهارشنبه 21 مرداد 1388, 12:14 عصر
سلام


هر كس برنامه اي داره كه با اضافه كردن يه فلش ، يه پيغام بده ، يا كدي در اين رابطه داره ، لطف كنه بذاره اينجا تا بتونيم ، ازش استفاده كنيم.

arsalansalar
چهارشنبه 21 مرداد 1388, 12:48 عصر
http://barnamenevis.org/forum/showthread.php?t=58848

milad.biroonvand
چهارشنبه 21 مرداد 1388, 13:46 عصر
سلام دوست عزيز ، با تشكر از پاسخي كه داديد ،
ولي من منظورم فلش مموري (cool disk ) بود .

#target
چهارشنبه 21 مرداد 1388, 16:52 عصر
کلاس DriveInfo رو رو تایمر بذار



Static RemCount As Byte
Dim Tmp1 As Byte
Tmp1 = RemCount
Dim MyDrives() As DriveInfo = DriveInfo.GetDrives()
Dim SingleDrive As DriveInfo
For Each SingleDrive In MyDrives
If SingleDrive.DriveType = Removable And SingleDrive.Name <> "A:\" And SingleDrive.Name <> "B:\" Then
RemCount = RemCount + 1
End If
Next
If RemCount > Tmp1 Then
MsgBox("Removable Drive Add !!! ")
End If

.


کد بالا را داخل یک تایمر با دوره 1 ثانیه ( یا سریعتر ) قرار دهید تا اگر درایو اضافه شد پیام بدهد . شاید کد مشکل داشته باشد . ولی فکر نکنم

باید در ابتدای فایل برنامه تان بنویسید Imports system.IO تا از این توابع و کلاس DriveInfo استفاده کنید !

( سعی کن دنبال نوشتن Autorun.inf نباشی )

ACorvinus
پنج شنبه 22 مرداد 1388, 13:59 عصر
کلاس DriveInfo رو رو تایمر بذار



Static RemCount As Byte
Dim Tmp1 As Byte
Tmp1 = RemCount
Dim MyDrives() As DriveInfo = DriveInfo.GetDrives()
Dim SingleDrive As DriveInfo
For Each SingleDrive In MyDrives
If SingleDrive.DriveType = Removable And SingleDrive.Name <> "A:\" And SingleDrive.Name <> "B:\" Then
RemCount = RemCount + 1
End If
Next
If RemCount > Tmp1 Then
MsgBox("Removable Drive Add !!! ")
End If

.


کد بالا را داخل یک تایمر با دوره 1 ثانیه ( یا سریعتر ) قرار دهید تا اگر درایو اضافه شد پیام بدهد . شاید کد مشکل داشته باشد . ولی فکر نکنم

باید در ابتدای فایل برنامه تان بنویسید Imports system.IO تا از این توابع و کلاس DriveInfo استفاده کنید !

( سعی کن دنبال نوشتن Autorun.inf نباشی )


سلام .

به نظرتون منطقی هست که بخوایم از تایمر استفاده کنیم ؟

milad.biroonvand
پنج شنبه 22 مرداد 1388, 14:20 عصر
با تشكر از پاسخ شما دوست عزيز target# دوست عزيز ، برنامه autorun رو قبلا با وبي 6 نوشتم ، دنبال اون نيستم . اين كد رو كه گفتي قبلا امتحان كردم ولي همون طور كه دوستمون acorvinus گفتن فكر نكنم منطقي باشه كه داخل يك تايمر بنويسيم . چون خود اين دستور ، طول مي كشه تا تعداد درايو ها رو تشخيص بده ، برا همين ، راه حل ديگه اي رو بلد نيستي .
با تشكر از دوستان عزيز كه پاسخ دادند .

milad.biroonvand
شنبه 24 مرداد 1388, 10:02 صبح
كدي كه در بالا ذكر كرديد ، بعد از هر چند ثانيه ، پيغام مي داد. يعني در هر ثانيه يكبار به تعداد كول ديسك ها اضافه مي شد .

#target
شنبه 24 مرداد 1388, 12:34 عصر
كدي كه در بالا ذكر كرديد ، بعد از هر چند ثانيه ، پيغام مي داد. يعني در هر ثانيه يكبار به تعداد كول ديسك ها اضافه مي شد .

خودم کد رو تست نکردم
در مورد کاهش عملکرد در تایمر هم فکر نکنم اونقدر تاثیر داشته باشه
از Task Manager ویندوز پروسه رو نگاه کن زیاده یا نه ؟


به نظر شما استفاده از تایمر خوب نیست

milad.biroonvand
شنبه 24 مرداد 1388, 13:46 عصر
سلام ،

كد رو كه تست كردم ، موقعي كه يه فلش بهش نصب بود ، باعث ميشه كه دائما پيام بده ، يعني اگه يك دقيق صبر كني ، 60 بار پيام ميده.

#target
شنبه 24 مرداد 1388, 16:59 عصر
شاید با تعریف کردن متغیر RemCount بصورت پابلیک مشکل حل بشه

BehzadBar
شنبه 24 مرداد 1388, 17:53 عصر
سلام
از کلاس FileSystemWatcher هم میتونید استفاده کنید

milad.biroonvand
یک شنبه 25 مرداد 1388, 13:54 عصر
آزمايش مي كنم ، اگر خوب بود خبرت مي كنم.

milad.biroonvand
یک شنبه 25 مرداد 1388, 13:58 عصر
سلام
از کلاس FileSystemWatcher هم میتونید استفاده کنید


اگه ميشه طرز استفادشو بگين.

BehzadBar
یک شنبه 25 مرداد 1388, 16:17 عصر
این کلاس به عنوان یک Watcher بر روی مسیر خاصی قرار میگیرد و در لحظه تغییرات رویداد آن Raise میشود کار با این کلاس بدین صورت است که ابتدا نمونه گیری میکنیم


Dim Watcher As FileSystemWatcher = New FileSystemWatcher("C:\")

سپس delegate رویدادی را که عمل خاصی در هنگام تغییر باید انجام شود را به آن میدهیم به طور مثال


AddHandler Watcher.Created, New FileSystemEventHandler(AddressOf watcher_Changed)
AddHandler Watcher.Changed, New FileSystemEventHandler(AddressOf watcher_Changed)
AddHandler Watcher.Deleted, New FileSystemEventHandler(AddressOf watcher_Changed)
Watcher.EnableRaisingEvents = True


بعد در جای دیگری ساب روتین عملکرد خاصمان که میتواند مثلا یه MessageBox باشد را تعریف میکنیم


Sub watcher_Changed(ByVal sender AsObject, ByVal e As FileSystemEventArgs)

MessageBox.Show("Directory changed({0}): {1}" & e.ChangeType & e.FullPath)

EndSub

فقط کاری که برای این منظور باید کرد فیال ویندوزی که شامل اطلاعات درایو ها میباشد را در مسیر کلاس بدهیم که اصلا من مطمئن نیستم فقط حدس میزنم

#target
یک شنبه 25 مرداد 1388, 17:31 عصر
FileSystemWatcher برای مانیتورینگ یک فایل در یک درایو موجوده
نه برای اینکه یک درایو جدید اضافه بشه

milad.biroonvand
یک شنبه 01 شهریور 1388, 12:31 عصر
همونطور كه دوستمون گفت ، اين كد كارش چيز ديگه اي ، اين كد كار نمي كنه ؟

milad.biroonvand
پنج شنبه 12 شهریور 1388, 11:32 صبح
کسی جواب نداد ؟

نظرتون در مورد این کد چیه ؟




Imports System.Reflection
Imports System.IO
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' Find the first removable storage device and make this the initial
' directory if it exists
Dim allDrives() As IO.DriveInfo = IO.DriveInfo.GetDrives()
Dim d As IO.DriveInfo
For Each d In allDrives
If d.IsReady = True AndAlso d.DriveType = IO.DriveType.Removable Then
ListBox1.Items.Add(d.VolumeLabel).ToString()
If IO.DriveType.Removable Then
TextBox1.Text = d.AvailableFreeSpace
End If
Else
If d.IsReady = True And Not d.DriveType = DriveType.Removable Then
ListBox1.Items.Add(d.RootDirectory).ToString()
TextBox1.Text = d.AvailableFreeSpace
End If
End If
Next
End Sub
End Class

milad.biroonvand
پنج شنبه 12 شهریور 1388, 11:55 صبح
سلام ، این پروژه رو درست کردم ، هر کی تونست بهترش کنه اسم خودش رو ، زیر اسم قبلی بزاره .

milad.biroonvand
پنج شنبه 12 شهریور 1388, 12:02 عصر
با کد در ضمیمه

milad.biroonvand
پنج شنبه 12 شهریور 1388, 12:15 عصر
دوستان عزیز

بهترین پرژه برا تشخیص همینه


موفق باشید

davood-ahmadi
پنج شنبه 12 شهریور 1388, 12:59 عصر
این هم کمی تغییرات

milad.biroonvand
پنج شنبه 12 شهریور 1388, 13:32 عصر
سلام داود عزیز ، با تشکر از بهتر کردن نرم این پروژه ،

عالی بود . اگه هنوز هم تونستی داخلش تغییر بده .

milad.biroonvand
چهارشنبه 18 شهریور 1388, 11:33 صبح
یه نوع ساده ترش هم درست کردم اگه کسی خواست براش می زارم . حرفه ای تر .

hamid.afzalnejad
پنج شنبه 26 شهریور 1388, 15:53 عصر
اگر کسی Smart Device بلده به سوال مربوطه در سوالات جواب بده. خیلی فوری است.

milad.biroonvand
یک شنبه 12 مهر 1388, 13:00 عصر
کامل بگو چه چیزی در موردشون می خوای

masoodinfo
یک شنبه 12 مهر 1388, 17:49 عصر
این هم کمی تغییرات

با سلام

دوست عزیز این string هایی که در WqlEventQuery استفاده از کجا اومده و لیست کلاملش کجاست.و این که کلا یک توضیح در مورد این whacher ها بدید ممنون میشم.

Mani_rf
یک شنبه 12 مهر 1388, 19:49 عصر
سلام به همه دوستان.
به جرات می توانم بگم که این عالیه ؛ دست همگی درد نکند، اصلا CPU را مشغول نمی کنه + اینکه به میزان کاملا طبیعی Ram را اشغال می کنه. فقط کاش تو کد هاش چند تا توضیح اضافه می کردید که درک نحوه کارکردش بهتر بشه.

nokhodsiah2001
دوشنبه 13 مهر 1388, 12:39 عصر
سلام
آقا ما خودمون رو گشتیم کسی به ما سر نزد من کد این برنامه رو قبلاً به صورت ناقص از تو سایتهای خارجی گرفتم و تکمیلش کردم
کارش اینه که چک کنه اگر فلش وصل شد پیغام بده و اونو Eject کنه

حالا
فقط این مشکل رو دارم که تو کاربرهای محدود مثل کار برهای Domain برنامه همه کار میکنه جز Eject
کسی هست اشکال کار رو پیدا کنه

http://barnamenevis.org/forum/showthread.php?t=182703

اینم کد برنامه

http://barnamenevis.org/forum/attachment.php?attachmentid=37967&d=1254732800
(http://barnamenevis.org/forum/attachment.php?attachmentid=37839&d=1254558833)

nokhodsiah2001
دوشنبه 13 مهر 1388, 12:44 عصر
کدی که دوستان گذاشتن وقتی Run باشه و فلش وصل بشه میشناسه یعنی اگر فلش از اول وصل باشه نمی شناسه
ولی این کد در همه حال میشناسه البته هنوز کامل نیست و باید روش کار کرد دوستان اگر لطف کنن و مشکل رو حل کنن ممنون میشم

در ضمن برای خروج کد میخواد 999999

milad.biroonvand
دوشنبه 13 مهر 1388, 14:10 عصر
لیست کامله ، توضیحات رو داخل یه فایل ورد می زارم تا دوستان بیشتر متوجه شن ، از عزیزانی که به این تاپیک پاسخ دادند از جمله مانی (بودا) (دوست قدیمی) ، نخود سایه و مسعود تشکر می کنم .

hossein-khoshseyar
دوشنبه 13 مهر 1388, 14:17 عصر
من یه تاپیک زدم و چنین سئوالی پرسیدم اونجا کاملا جواب منو دادن
اگه هنوز مشکلی داری برو بخون

nokhodsiah2001
دوشنبه 13 مهر 1388, 16:04 عصر
با تشکر از دوست عزیزمون hossein

فکر کنم کمی اشتباه شده چون شما تو تاپیک خودتون آدرس همینجا رو دادین
بازم ممنونم که توجه کردین :لبخندساده:

فقط لطف کنید بگید چرا تو user محدود یا همون Limit برنامه درست کار نمی کنه

masoodinfo
دوشنبه 13 مهر 1388, 22:42 عصر
پس چی شد این توضیحات سورس کد ها ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
قرار شد توضیح بدید هااااااااااااااااااااا!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

milad.biroonvand
سه شنبه 14 مهر 1388, 09:49 صبح
وضیح کامل تا چند روز دیگه ، ولی فکر نکنم زیاد مبهم باشه ، اعداد که مقادیر ثابتس هستند که در یک enum قرار می گیرند و وقتی که یه فلش اضافه می شه مقدار
&H8000 رو می ده که در یک فیلد بنام Arrival قرار می گیره ، یعنی اگه شما
lEvent = DirectCast(m.WParam.ToInt32(), DeviceEvent)
If lEvent = DeviceEvent.Arrival Then


یعنی اینکه یک فلش به سیستم اضافه شده ، دیگه نیازی نیست بنویسیم H8000& فقط از اسم اون استفاده می کنیم .

یکی دیگه مال موقعی که فلش از سیستم حذف می شه که مقدار
&H8004 بر گردونده میشه ، و در فیلد RemoveComplete قرار می گیره که ما باز هم با یک IF تعیین می کنیم ، اگه رویداد پس داده شده برابر RemoveComplete بود ، پیغام می دیم که کاملا فلش از سیستم خارج شده . و یکی دیگه از مقدار برا اینکه ، وقتی فلشی روزدیم و سرعتش با سرعت سیستم مطابقت داشت خطا می گیره . اگه شا اجاز بدید توضیحات رو بصورت کامل می گم.

milad.biroonvand
سه شنبه 14 مهر 1388, 09:50 صبح
اینم نسخه جدیدشه ، از دوستان تقاضا دارم اگه اشکالی داشت رفعش کنن و اونو دوباره آپ کنن و اسم خودشونو زیر اسم بعدی بنویسن

لینک دانلود

http://www.4shared.com/file/137928411/79d80e72/usbDetected.html

hossein-khoshseyar
سه شنبه 14 مهر 1388, 22:10 عصر
با تشکر از دوست عزیزمون hossein

فکر کنم کمی اشتباه شده چون شما تو تاپیک خودتون آدرس همینجا رو دادین
بازم ممنونم که توجه کردین :لبخندساده:

فقط لطف کنید بگید چرا تو user محدود یا همون Limit برنامه درست کار نمی کنه

آره دوست عزیز حق با تو بود شرمنده
من حواسم نبود و اشتباه کردم

nokhodsiah2001
چهارشنبه 15 مهر 1388, 10:35 صبح
سلام دوستان

مثل این که یا پیام های من نمی آد و یا اینکه کسی به برنامه ای که گذاشتم نگاه نکرده و یا اینکه کسی از مشکلش سر در نیاورده(که بعیده :متعجب:)

لطفاً یک راهنمایی و پیشنهادی بدید تا ببینیم مشکل کجاست

یا اینکه برنامه ای که گذاشتین رو من دیدم خیلی جالبه فقط چه طور میشه فلش رو Eject کرد میشه اونم تو برنامه بگنجونید

milad.biroonvand
چهارشنبه 15 مهر 1388, 12:39 عصر
nokhoodsia2001 برات نحوه ی اجکت کردن رو می زارم ، یه کم صبر کن.

nokhodsiah2001
چهارشنبه 15 مهر 1388, 13:36 عصر
ممنون از توجه و لطفتون

فکر کردم اصلاً پستام دیده نمیشه... :اشتباه: خیالم راحت شد

milad.biroonvand
پنج شنبه 16 مهر 1388, 11:26 صبح
برای اینکه با وبی دات نت ، فلش ها رو ، اجکت کنید به این تاپیک برید .

)eject flash by vb.net


http://barnamenevis.org/forum/showthread.php?p=823396#post823396

به سفارش nokhoodsia