Java我不会,用C语言吧。C的程序有两个外部变量,__argc, __argv。
其中__argv[0]存放的就是你的EXE程序名。判断这个EXE是不是在光盘
就可以了。bool IsOnDisc()
{
char buf[4];
extern char** __argv; strncpy(buf, __argv[0], 3);
if (buf[1]!=':'||buf[2]!='\\')
return false;
buf[3] = '\0';
return GetDriveType(buf)==DRIVE_CDROM;
}获取光盘的盘符:
char buf[128]="";
GetLogicalDriveStrings(128, buf);
for(char* s=buf; *s; s+=4) {
//这儿s的内容就是 C:\\ 或 D:\\ 等
if (GetDriveType(buf)==DRIVE_CDROM)
;//s指向的盘符是光盘
}
其中__argv[0]存放的就是你的EXE程序名。判断这个EXE是不是在光盘
就可以了。bool IsOnDisc()
{
char buf[4];
extern char** __argv; strncpy(buf, __argv[0], 3);
if (buf[1]!=':'||buf[2]!='\\')
return false;
buf[3] = '\0';
return GetDriveType(buf)==DRIVE_CDROM;
}获取光盘的盘符:
char buf[128]="";
GetLogicalDriveStrings(128, buf);
for(char* s=buf; *s; s+=4) {
//这儿s的内容就是 C:\\ 或 D:\\ 等
if (GetDriveType(buf)==DRIVE_CDROM)
;//s指向的盘符是光盘
}
解决方案 »
- 类运行错误
- 为什么Vector 在集合中保存大量的数据那比ArrayList更有优势?
- java中正則表達式的寫法
- 为何我在JBUILDER中 建完WEB module后 会出现这样的错误呀??
- 请问,如何判断一个String变量里包含的是否是Integer?
- 还是SOCKET的问题,打开一个输入流以后,有一部分数据我不想再接受了,该怎么办?(很急,没分了)
- 怎样才能更好的理解多线程
- 为什么setLayout(new BorderLayout()),为有这样的问题?
- JDBC 的問題
- 看不懂代码里的i++和输出的结果是什么关系
- 送分,我的jb6的new-> enterprise怎么变黑了?
- 一个jce的问题
{
if (!IsOnDisc()) {
printf("程序不在光盘上。退出");
return;
}
//执行你的程序代码
}
Option Explicit
Public Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
Public Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
Public Const DRIVE_CDROM = 5
Public Const MMSYSERR_NOERROR = 0
Public Const SND_ASYNC = &H1
Public Const SND_NODEFAULT = &H2
Public Const SND_PURGE = &H40
Public Const SND_FILENAME = &H20000
Global MyVolume As String' 查找计算机的光驱号
Public Function FirstCDDrive() As StringConst ASC_A = 65
Const ASC_Z = ASC_A + 25Dim I As IntegerFor I = ASC_A To ASC_Z
If GetDriveType(Chr$(I) & ":\") = DRIVE_CDROM Then
FirstCDDrive = Chr$(I)
If getPicPath(FirstCDDrive) Then
Exit For
Else
FirstCDDrive = "No"
End If
End If
Next I
End Function