От къде се стартира програмата ми?
6 отговора
369 прегледа
От къде се стартира програмата ми?
Здравейте на всички
как мога да определя дали програмата ми се стартира от физическо оптично устройство (DVD/CD-ROM) или от виртуален симулатор (Alchohol 120%,
Daemon Tools ...)? Благодаря ви предварително!
как мога да определя дали програмата ми се стартира от физическо оптично устройство (DVD/CD-ROM) или от виртуален симулатор (Alchohol 120%,
Daemon Tools ...)? Благодаря ви предварително!
Re: От къде се стартира програмата ми?
С ExtractFilePath(Application.ExeName) получаваш пътя от който е стартирана програмата ти. След това вземаш буквата на у-вото и я подаваш като параметър на ф-ята GetDriverType() от Win32 API, но не знам тя, какво ще каже при употреба на алкохол над 5-11 % 
Re: От къде се стартира програмата ми?
Когато пусна тая джаджа:
var drive: Char;
begin
listbox1.Clear;
for drive := 'A' to 'Z' do { iterate through all possible drives }
begin
case GetDriveType(pansichar(Drive + ':/')) of
DRIVE_REMOVABLE:
listbox1.Items.Add(drive+' FLOPPY');
DRIVE_FIXED:
listbox1.Items.Add(drive+' FIXED');
DRIVE_REMOTE:
listbox1.Items.Add(drive+' NETWORK');
end;
end;
защо не ми се появява CD-ROM-a?
var drive: Char;
begin
listbox1.Clear;
for drive := 'A' to 'Z' do { iterate through all possible drives }
begin
case GetDriveType(pansichar(Drive + ':/')) of
DRIVE_REMOVABLE:
listbox1.Items.Add(drive+' FLOPPY');
DRIVE_FIXED:
listbox1.Items.Add(drive+' FIXED');
DRIVE_REMOTE:
listbox1.Items.Add(drive+' NETWORK');
end;
end;
защо не ми се появява CD-ROM-a?
Вероятно защото не си му казал :-)
За функцията GetDriveType в хелпа пише:
За CD-ROM-а обикновено връщания тип е DRIVE_CDROM, освен в изключително редки случаи, когато компютъра си е накривил шапката и му е все тая какво го питаме
Та допиши си case-а и с останалите константи и ще се появи.
Return Values
The return value specifies the type of drive. It can be one of the following values:
Value Meaning
0 The drive type cannot be determined.
1 The root directory does not exist.
DRIVE_REMOVABLE The drive can be removed from the drive.
DRIVE_FIXED The disk cannot be removed from the drive.
DRIVE_REMOTE The drive is a remote (network) drive.
DRIVE_CDROM The drive is a CD-ROM drive.
DRIVE_RAMDISK The drive is a RAM disk.
За CD-ROM-а обикновено връщания тип е DRIVE_CDROM, освен в изключително редки случаи, когато компютъра си е накривил шапката и му е все тая какво го питаме
Та допиши си case-а и с останалите константи и ще се появи.
Re: Вероятно защото не си му казал :-)
В кои случаи CD-ROM не се показва, като се използва DRIVE_CDROM?
И как мога да различа физическото от виртуалното CD?
И как мога да различа физическото от виртуалното CD?
Re: Вероятно защото не си му казал :-)
С тази функция не можеш да различиш дали е хардуерно или виртуално. Като цяло задачата е малко сложна (то това им е целта на вируалните CD-та - да не можеш да разбереш, че са виртуални). Сещам се за две неща, които можеш да направиш:
1) Да проверяваш дали има стартирано някое от известните ти приложения за емулация на CD-та - Alcohol 120%, CloneCD, VirtualCD, FantomCD и т.н. и т.н. Търси по списъка на процесите и/или по прозорците.
2) Да провериш информацията за драйвера на CD-ROM-а. Какъв модел е например. Аз ползвам FantomCD и неговия драйвер се среща стринга "Fantom".
Сега нямам много време, но довечера ще гледам да се поровя малко да видя как точно да провериш информацията за драйвера.
1) Да проверяваш дали има стартирано някое от известните ти приложения за емулация на CD-та - Alcohol 120%, CloneCD, VirtualCD, FantomCD и т.н. и т.н. Търси по списъка на процесите и/или по прозорците.
2) Да провериш информацията за драйвера на CD-ROM-а. Какъв модел е например. Аз ползвам FantomCD и неговия драйвер се среща стринга "Fantom".
Сега нямам много време, но довечера ще гледам да се поровя малко да видя как точно да провериш информацията за драйвера.
Какви CD-та има на компютъра
Малко се позабавих с отговора, но имах доста ангажименти тия дни.
Вземи и виж това. На С++ е, но такива неща на Делфи се срещат сравнително рядко. Има и компилирано ехе, което работи. Преведено Setup API можеш да си изтеглиш от джедаите. Опитах се да го подкарам на Делфи. С класовете на устройствата всичко е наред, но за самите устройства функцията SetupDiGetDeviceRegistryProperty ми връщаше "The data is invalid.". Нямам време да го гледам, така че ако имаш желание - успех!
Вземи и виж това. На С++ е, но такива неща на Делфи се срещат сравнително рядко. Има и компилирано ехе, което работи. Преведено Setup API можеш да си изтеглиш от джедаите. Опитах се да го подкарам на Делфи. С класовете на устройствата всичко е наред, но за самите устройства функцията SetupDiGetDeviceRegistryProperty ми връщаше "The data is invalid.". Нямам време да го гледам, така че ако имаш желание - успех!