PDA

View Full Version : سوال: اجرای برنامه از روی CD



emprator2009
چهارشنبه 30 بهمن 1387, 06:22 صبح
سلام به همه
می خواستم ببینم کسی سورس با برنامه ای داره که بشه برنامه ای رو که خودمون نوشتیم از روی سی دی انجام بشه یعنی مثل یک شورتکات عمل کنه.
یعنی تا وقتی که سیدی داخل سیدی رام نباشه برنامه ما که روی هارد هست اجرا نشه.
منتظر برنامه های دوستان هستم.:قلب:
مرسی
ممنون

xxxxx_xxxxx
چهارشنبه 30 بهمن 1387, 07:13 صبح
با توابع API درايو CD-ROM رو شناسايي كنيد. اگر تو اون مسير فايلي با نام و مشخصات برنامه مان وجود داشت آنگاه برنامه اجرا شود.
تابع مذكور:


Private Declare Function GetDriveType Lib "kernel32.dll" (ByVal nDriev as String) As Long

موفق باشيد/

emprator2009
چهارشنبه 30 بهمن 1387, 14:10 عصر
خیلی خیلی ممنون
میشه یک مثال هم بزنید و یک برنامه ساده در این رابطه بگذارید

xxxxx_xxxxx
چهارشنبه 30 بهمن 1387, 19:43 عصر
باشه.
با اين قطعه كد مي فهميم كه تو درايو سي دي رام آبا فايل برنامه ما وجود داره يا نه.


Private Declare Function GetDriveTypeA Lib "kernel32.dll" (ByVal nDriev As String) As Long
Private Declare Function PathFileExistsA Lib "shlwapi.dll" (ByVal pszPath As String) As Long

Private Sub Form_Load()
Dim t As Boolean
t = False
If GetDriveTypeA("C:\") = 5 Then If CheckFile("C:\") = True Then t = True
If GetDriveTypeA("D:\") = 5 Then If CheckFile("D:\") = True Then t = True
If GetDriveTypeA("E:\") = 5 Then If CheckFile("E:\") = True Then t = True
If GetDriveTypeA("F:\") = 5 Then If CheckFile("F:\") = True Then t = True
If GetDriveTypeA("G:\") = 5 Then If CheckFile("G:\") = True Then t = True
If GetDriveTypeA("H:\") = 5 Then If CheckFile("H:\") = True Then t = True
If GetDriveTypeA("I:\") = 5 Then If CheckFile("I:\") = True Then t = True
If GetDriveTypeA("J:\") = 5 Then If CheckFile("J:\") = True Then t = True

If t = True Then
MsgBox "Run Program"
Else
MsgBox "Please insert Disk into Drive", vbExclamation
End
End If
End Sub

Private Function CheckFile(drvName As String) As Boolean
CheckFile = PathFileExistsA(drvName & "ProgramName.exe")
End Function
توضيح اين كه تابع PathFileExistsA براي آگاهي از وجود و يا عدم وجود فايل در مسيري مشخص است.
هربار نام يك درايو در صورت CD-ROM بودن به تابع CheckFile پاس داده ميشه تا ببينيم فايل برنامه توش هست يا نه.
عدد 5 نشون دهنده درايو سي دي رام هست.
من از درايو C تا J گذاشتم شما مي تويند بيشترش كنيد.(جهت اطمينان)
متغير t رو براي اين تعريف كردم كه حداقل اگر يك بار تابع CheckFile مقدار true برگرداند يعني فايل ما تو سي دي رام هست پس متغير t مقدارش true بشه.

حالا ممكنه طرف يك سي دي رايت كرده باشه با يك فايل exe كه هم نام برنامه شماست ولي برنامه شما نيست. براي اين كه محدود تر بشه قبلاً هم گفتم مشخصات فايلتون رو چك كنيد. مثل size يا company يا تاريخ ايجاد. اينطوري دقيق تر ميشه.

موفق باشيد/