Различия
Здесь показаны различия между двумя версиями данной страницы.
Следующая версия | Предыдущая версия | ||
запуск_с_флешки [2015/02/17 18:53] root создано |
запуск_с_флешки [2018/08/07 02:51] (текущий) will |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | |||
FSC, ну логично слямздить идею у работающих проэктов. Не помню где но встречал прогу которая запускалась при наличие флэшки с файлами. Но там был не перезаписуемый флэш накопитель. Ну а вам можно просто в обычную флэш закинуть файлик и проверять дату его изменения (что бы не накопировали гору таких флэш) или спрятать на флэшке какой нибудь файлик и всё. А потом при запуске проги сканировать все корневые каталоги дисков на наличие вашего файла. | FSC, ну логично слямздить идею у работающих проэктов. Не помню где но встречал прогу которая запускалась при наличие флэшки с файлами. Но там был не перезаписуемый флэш накопитель. Ну а вам можно просто в обычную флэш закинуть файлик и проверять дату его изменения (что бы не накопировали гору таких флэш) или спрятать на флэшке какой нибудь файлик и всё. А потом при запуске проги сканировать все корневые каталоги дисков на наличие вашего файла. | ||
Строка 4: | Строка 5: | ||
но одна проблема встала: как мне серийный номер привязать к букве флешки? | но одна проблема встала: как мне серийный номер привязать к букве флешки? | ||
+ | <file> | ||
Код C++ | Код C++ | ||
- | |||
- | 1 | ||
- | 2 | ||
- | 3 | ||
- | 4 | ||
- | 5 | ||
- | 6 | ||
- | 7 | ||
- | 8 | ||
- | 9 | ||
- | 10 | ||
- | 11 | ||
- | 12 | ||
- | 13 | ||
- | 14 | ||
- | 15 | ||
- | 16 | ||
- | 17 | ||
- | 18 | ||
- | 19 | ||
- | 20 | ||
- | 21 | ||
- | 22 | ||
- | 23 | ||
- | 24 | ||
- | 25 | ||
- | 26 | ||
- | 27 | ||
- | 28 | ||
- | 29 | ||
- | 30 | ||
- | 31 | ||
- | 32 | ||
- | 33 | ||
- | 34 | ||
- | 35 | ||
- | 36 | ||
- | 37 | ||
- | 38 | ||
- | 39 | ||
- | 40 | ||
- | 41 | ||
- | 42 | ||
- | 43 | ||
- | 44 | ||
- | 45 | ||
- | 46 | ||
- | 47 | ||
- | 48 | ||
- | 49 | ||
- | 50 | ||
- | 51 | ||
- | 52 | ||
- | 53 | ||
- | 54 | ||
- | 55 | ||
- | 56 | ||
- | 57 | ||
- | |||
Строка 124: | Строка 67: | ||
//--------------------------------------------------------------------------- | //--------------------------------------------------------------------------- | ||
+ | |||
+ | </file> | ||
программа возвращает VID, PID и серийный номер в виде USB\VID_XXXX_PID_YYYY\ZZZZ, где XXXX-VID, YYYY-PID, ZZZZ-Серийный номер (Аппаратный!!!!!! который я так долго искал) | программа возвращает VID, PID и серийный номер в виде USB\VID_XXXX_PID_YYYY\ZZZZ, где XXXX-VID, YYYY-PID, ZZZZ-Серийный номер (Аппаратный!!!!!! который я так долго искал) | ||
Программный серийный номер можно легко достать функцией GetVolumeInformation | Программный серийный номер можно легко достать функцией GetVolumeInformation | ||
Строка 130: | Строка 75: | ||
+ | <file> | ||
Код C++ | Код C++ | ||
- | |||
- | 1 | ||
- | 2 | ||
- | 3 | ||
- | 4 | ||
- | 5 | ||
- | 6 | ||
- | 7 | ||
- | 8 | ||
- | 9 | ||
- | 10 | ||
- | 11 | ||
- | 12 | ||
- | 13 | ||
- | 14 | ||
- | 15 | ||
- | 16 | ||
- | 17 | ||
- | 18 | ||
- | 19 | ||
- | 20 | ||
- | 21 | ||
- | 22 | ||
- | 23 | ||
- | 24 | ||
- | 25 | ||
- | 26 | ||
- | 27 | ||
- | 28 | ||
- | 29 | ||
- | 30 | ||
- | 31 | ||
- | 32 | ||
- | 33 | ||
- | 34 | ||
- | 35 | ||
- | 36 | ||
- | 37 | ||
- | 38 | ||
- | 39 | ||
- | 40 | ||
- | 41 | ||
- | 42 | ||
- | 43 | ||
- | 44 | ||
- | 45 | ||
- | 46 | ||
- | 47 | ||
- | 48 | ||
- | 49 | ||
- | 50 | ||
- | 51 | ||
- | 52 | ||
- | |||
Строка 240: | Строка 132: | ||
} | } | ||
+ | </file> | ||
Строка 264: | Строка 157: | ||
DRIVE_RAMDISK - 6 : виртуальный диск, созданный в оперативной памяти | DRIVE_RAMDISK - 6 : виртуальный диск, созданный в оперативной памяти | ||
+ | |||
+ | <file> | ||
C/C++ | C/C++ | ||
Строка 275: | Строка 170: | ||
lpRootPathName: PChar //путь к диску | lpRootPathName: PChar //путь к диску | ||
): UINT; stdcall; | ): UINT; stdcall; | ||
+ | |||
+ | </file> | ||
Замечание: Если в качестве параметра указать для С/С++ NULL, а для Delphi - nil то тип устройства будет определяться для текущего диска (с которого была запущена программа). | Замечание: Если в качестве параметра указать для С/С++ NULL, а для Delphi - nil то тип устройства будет определяться для текущего диска (с которого была запущена программа). | ||
Строка 281: | Строка 178: | ||
C/C++ | C/C++ | ||
+ | |||
+ | <file> | ||
BOOL WINAPI GetVolumeInformation( | BOOL WINAPI GetVolumeInformation( | ||
LPCTSTR lpRootPathName, //путь к сетевому или локальному | LPCTSTR lpRootPathName, //путь к сетевому или локальному | ||
Строка 308: | Строка 207: | ||
nFileSystemNameSize: DWORD //размер буфера под название ФС | nFileSystemNameSize: DWORD //размер буфера под название ФС | ||
): BOOL; stdcall; | ): BOOL; stdcall; | ||
+ | |||
+ | |||
+ | </file> | ||
Замечание: Если в качестве первого параметра указать для С/С++ NULL, а для Delphi - nil то функция будет выполняется для текущего диска (с которого была запущена программа). | Замечание: Если в качестве первого параметра указать для С/С++ NULL, а для Delphi - nil то функция будет выполняется для текущего диска (с которого была запущена программа). | ||
Строка 313: | Строка 215: | ||
Ну а теперь собственно для пущего интересу приведу пример, как привязать программу к устройству. В данном примере будем привязывать программу к флешке. Смотрим пример: | Ну а теперь собственно для пущего интересу приведу пример, как привязать программу к устройству. В данном примере будем привязывать программу к флешке. Смотрим пример: | ||
C/C++ | C/C++ | ||
+ | |||
+ | |||
+ | <file> | ||
#include | #include | ||
Строка 385: | Строка 290: | ||
readln; | readln; | ||
end. | end. | ||
+ | |||
+ | |||
+ | </file> | ||
Замечание: Может возникнуть вопрос, а как узнать серийник диска, чтобы знать с чем сравнивать? Очень просто, для этого пишем тестовую прогу, в которой пишем следующий код: | Замечание: Может возникнуть вопрос, а как узнать серийник диска, чтобы знать с чем сравнивать? Очень просто, для этого пишем тестовую прогу, в которой пишем следующий код: |