
З.Ы. Программа написана на Лазаре под Виндовс, использоваться будет предположительно только в Украине в лечебно-профилактических заведениях (формирование тарификационных списков медецинских работников + некоторые дополнительные возможности).
Модератор: Модераторы
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Windows;
function GetHSN(const DriveLetter: Char): DWord;
implementation
function GetHSN(const DriveLetter: Char): DWord;
var
VolumeLabel, FileSystem: Array[0..$FF] of Char;
SerialNumber, DW, SysFlags: DWord;
D: Char;
strDrive: string;
begin
GetHSN := 0;
D := UpCase(DriveLetter);
if (D >= 'A') and (D <= 'Z') then
begin
strDrive := (D + ':\');
GetVolumeInformation(@strDrive[1], VolumeLabel, SizeOf(VolumeLabel),
@SerialNumber, DW, SysFlags, FileSystem,
SizeOf(FileSystem));
GetHSN := SerialNumber;
end
end;
лучше всего железная защита типа хасп или подобное. но про 30 запусков тут надо забыть.
аппаратный счетчик у нормальных ключей работает нормально
Сергей Смирнов писал(а):Функция возвращает номер HDD с указанной буквой. Ясен пень, что работать будет только в винде. Наверное, есть и кроссплатформенные решения. Если кто найдёт/сделает, плиз, не держите в себе
Сергей Смирнов писал(а):Функция возвращает номер HDD с указанной буквой. Ясен пень, что работать будет только в винде. Наверное, есть и кроссплатформенные решения. Если кто найдёт/сделает, плиз, не держите в себе
#include <linux/hdreg.h>
...
int fd;
struct hd_driveid id;
...
fd = open ("/dev/hda", O_RDONLY);
ioctl (fd, HDIO_GET_IDENTITY, &id);
close (fd);
printf ("%s\n", id.serial_no);
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4