آموزش : اجراي برنامه فقط از روي سي دي

naseronline

Well-Known Member
يادمه در اين مورد قبلا تو چند تاپيك بحث شده بود... من تو اين آموزش يه روش ساده رو براي شما مي گم...
با استفاد از اين روش شما به برنامتون مي گيد كه اگه بر روي هارد كپي شد برنامه اجرا نشه و برنامه فقط از روي سي دي اجرا ميشه ...اين روش ساده استفاده از پلاگين Type Of Drive هستش كه مياد و نوع درايو ها رو تشخيص مي ده... مقدار بازگشتي از پلاگين در متغير هاي زير ذخيره مي شه...
توضيحات پلاگين :
DRIVE _UNKNOWN اگر اين متغير باز گردانده شود نشان دهنده اين است كه نوع درايو تشخيص داده شده ناشناخته است .

DRIVE_NO_ROOT_DIR اگر اين متغير باز گردانده شود نشان دهنده اين است كه مسير اشتباهي انتخاب شده ، معمولا هنگاميكه يك فولدر انتخاب شود اين ارور برگردانده مي شود .

DRIVE_REMOVABLE اگر اين متغير باز گردانده شود نشان دهنده اين است كه درايو هاي removable انتخاب شده ، درايو فلاپي ها و فلش مموري ها از اين نوع هستند .

DRIVE_FIXED اگر اين متغير باز گردانده شود نشان دهنده اين است كه يك هارد ديسك انتخاب شده است.

DRIVE_REMOTE اگر اين متغير باز گردانده شود نشان دهنده اين است كه درايو network انتخاب شده است.

DRIVE_CDROM اگر اين متغير باز گردانده شود نشان دهنده اين است كه درايو از نوع سي دي رام مي باشد.

DRIVE_RAMDISK اگر اين متغير باز گردانده شود نشان دهنده اين است كه درايو از نوع رم مي باشد.

خوب ما مي تونيم به راحتي از متغير هاي بالا تو فرمان هاي شرطي استفاده كنيم و به برنامه بگيم در صورتي كه برنامه از روي هارد اجرا شد فرمان exit رو صادر كنه ...
کد:
OpenDir$=<[color=#0000FF]SrcDir[/color]> 
[color=#0000FF]If[/color] (OpenDir$<>[color=#800000]''[/color]) [color=#0000FF]Then[/color] 
  [color=#000090][b]PluginSet[/b][/color]("PlugIn","OpenDir$") 
  [color=#000090][b]PluginRun[/b][/color]("PlugIn","GetType") 
  [color=#000090][b]PluginGet[/b][/color]("PlugIn","TypeOfDrive$") 
  [color=#0000FF]If[/color] (TypeOfDrive$=[color=#800000]'DRIVE_FIXED'[/color]) [color=#0000FF]Then[/color] 
    [color=#000090][b]Exit[/b][/color]() 
  [color=#0000FF]End[/color] 
[color=#0000FF]End[/color]

اميدوارم اين آموزش به درد شما بخوره...موفق باشيد...
 

پیوست ها

  • RunOnlyFromCD.zip
    3.8 کیلوبایت · بازدیدها: 44

Saman

مدیر انجمن مولتی مدیا بیلدر
ناصر جان به نظرت بهتر نبود دستور شرطیش اینطوری باشه ؟

If (TypeOfDrive$<>'DRIVE_CDROM') Then
Exit()
End
 

ubuntu

Member
[saman];742253 گفت:
ناصر جان به نظرت بهتر نبود دستور شرطیش اینطوری باشه ؟

if (typeofdrive$<>'drive_cdrom') then
exit()
end

درسته! ممکنه که برنامه رو از توي درايوي مانند فلش اجرا کنند.
 

naseronline

Well-Known Member
صد در صد موافقم كه اونجوري مطمئنتر و بهتره... مرسي سامان جان ...
 

splinter cell

Well-Known Member
اگر از سی دی ایمیج گرفته بشه و اون ایمیج اجرا بشه تکلیف چیه؟ یعنی کدوم یکی از حالتهای بالا رخ میده؟
 

naseronline

Well-Known Member
معمولاً همانطور كه مي دونيد براي باز كردن برنامه هاي ايميج گرفته شده يه درايو مجازي توسط اون برنامه توليد مي شه ( مثل Daemon Tools) كه اونم جز CD-Rom حساب ميشه...
 

Aref_Alikhani

Well-Known Member
سلام....
ناصر جان بابت آموزش ممنون من قبلا اين پلاگين رو دانلود كرده بودم اما همراه خود اين پلاگين مثال جالبي وجود نداشت اگه دوستان بتونن در مورد اين پلاگين مثال هاي بيشتري تهيه كنن خيلي عالي ميشه....اما امنيت روش شما زياد در حد مطلوب نيست...به راحتي مي شه با Virtual CD اونو در درايو هم ذخيره كرد....

حالا كه حرف از Type Of Drive شده ميشه بگين چطوري به كمك اين پلاگين ميشه تمامي درايو هاي سي دي رام رو شناسايي و بعد دستور بازشدنش درايو خاصي رو بديم(رايتر-سي دي رام-دي وي دي رام) رو بديم؟؟؟
قبلا در مورد اين مسئله سوال كرده بودم دوستان گفته بودن كه يه همچين بحثي هم قبلاً شده و بهتره به جاي سوال كردن كمي سرچ كنم منم سرچ كردم اما نتيجه ي مطلوبي كسب نكردم داخل اون پست تنها به اين موضوع اشاره شده بود كه ميشه از اين پلاگين استفاده كرد(دقيقاً آقا محسن اينو نوشته بود) خوب منم بي خيال اين موضوع شدم چون نمي خواستم دوباره وقت دوستان رو بگيرم...
اما حالا كه در مورد اين پلاگين صحبت شده گفتم بهتره كه سوال كنم بلكه جوابي درست و حسابي گرفتم!!!
اگه ممكنه يه مثال براي من درست كنيد....

با تشكر عارف:rose:
 

splinter cell

Well-Known Member
شما میتونید از همون مثالی که من درست کرده بودم وبکمک پلاگینmiscy نوع و نام سی دی رام و پارتیشنها و... رو نشون میداد استفاده کنی و نام برگشتی رو به برنامه ویزمو Wismo بدی برای باز کردن درب اون درایو.هردو مورد توی انجمن هست و کمی هم ابتکارخودتون رو میطلبه تا باهم تلفیقشون کنید!موفق باشید!
 

naseronline

Well-Known Member
اما امنيت روش شما زياد در حد مطلوب نيست...به راحتي مي شه با Virtual CD اونو در درايو هم ذخيره كرد....
منم تو توضيحات گفتم كه اگر فايل هاي مورد نظر بر روي هارد به طور دستي كپي بشن... در مورد ايميج مسلماً اين پلاگين كاري نمي تونه بكنه...
حالا كه حرف از Type Of Drive شده ميشه بگين چطوري به كمك اين پلاگين ميشه تمامي درايو هاي سي دي رام رو شناسايي و بعد دستور بازشدنش درايو خاصي رو بديم(رايتر-سي دي رام-دي وي دي رام) رو بديم؟؟؟
اينجا رو ببين...اينو حامد ساخته و هر درايوي رو بخواي بيرون ميده...
http://forum.majidonline.com/showthread.php?p=387270&highlight=drive_enum#post387270
 
آخرین ویرایش:

Aref_Alikhani

Well-Known Member
سلام
لينك برنامه آقا حامد خراب بود...اگه كسي از دوستان اين مثال رو داره داخل خود انجمن آپلود كنه...:rose:
 

naseronline

Well-Known Member
اين همون فايلي كه حامد اون موقع گذاشته بود..
 

پیوست ها

  • cd_tray Eject.zip
    171.9 کیلوبایت · بازدیدها: 45

Aref_Alikhani

Well-Known Member
سلام
سر انجام به كمك دوستان و پست هاي موجود يه نمونه آماده كردم(مي شه گفت كه من كاري نكردم تنها مثال رو ,رو هم سوار كردم كه تا به حال اونو كسي رو هم نچيده بود!!!) كه هر درايوي رو كه بيلدر نمي شناسه شناسايي و اونو باز مي كنه اما دوتا مشكل وجود داره:
1- حجم فايل CDTray.exe زياد هست...
2- در سي دي رام دوم به خوبي باز ميشه اما هنگام بسته شدن برنامه هنگ مي كنه و سي دي رام چند بار مي آد داخل مي ره بيرون....مي شه گفت مشكل اساسي اينه...

دوستان مي تونن اين دو مشكل رو مرتفع كنن؟؟
يعني يه جور كدنويسي بشه كه به جاي استفاده از برنامه CDTray از خود كدهاي موجود در بيلدر استفاده بشه و هم اينكه مشكل دوم كه خيلي خيلي مهمه رفع بشه....

راستي در اين مثال از پلاگين plugy استفاده شده....
 

پیوست ها

  • open-close.rar
    265.8 کیلوبایت · بازدیدها: 20

splinter cell

Well-Known Member
این مثالتون یک کم مشکل داره!روی سیستم من که نتونست درب هیچ درایوی رو باز کنه! فقط توی سیسترای چند بار پشت سر هم آیکون برنامه ظاهر و مخفی شد.همین!
 

جدیدترین ارسال ها

بالا