📄 diskid32v2.00使用说明.txt
字号:
偶首先在此多谢您光临[创意网]!
众所周知,软件加密是一个比较麻烦的问题.很多所谓用硬盘ID来加密的软件其实都只是取硬盘的卷标号来做的.当别人用GHOST之类的COPY软件时,就失去了作用了.DISKID32.DLL真正能够取出硬盘ID!是偶花了不少心血做出来的.希望能对你做软件加密有帮助.
DISKID32.DLL能很好地工作在WIN9x,WINNT/2K下,XP下偶没条件试,应该就无问题的.有条件的朋友还请把XP下的结果通知偶,谢!
需要注意的是: 1)一定要判定返回值是否为真. 2)听说三星硬盘没有ID号的,偶也没有条件试.所以还要判定两个取回的值是否为空. 3)DISKID32的两个参数的长度都为32.
同时,偶还附了VC,DELPHI,VB的简单测试程序.
详情可来我主页看看.例子完整代码已在论坛张贴了.
--- 梁博荣 02.9.10
油箱:3m26d@sohu.com
竹叶:http://longone.126.com
http://longone.sharella.com
==========================================V2.00版 最终版======================================
原来的V1.01版没能解决在PB下的调用问题,因此曾经专门为PB做了个特别版.经过阿南多少个不眠之夜,问题终于完美的解决了!现将VC,DELPHI,VB,PB的说明如下:
一.VC(注意了,这个改变了!)
typedef BOOL (WINAPI*DISKID32)(char[],char[]);
二.DELPHI
type mychar=array[0..31] of char;
type TDiskID32=Function(var DiskModel,DiskID:mychar):BOOL;stdcall;
三.VB
Declare Function DiskID32 Lib "DiskID32.DLL" (ByRef DiskModel As Byte, ByRef DiskID As Byte) As Long
四.PB
Function boolean DiskID32(ref string model,ref string id) library "DiskID32.DLL"
注意:原来用了V1.01版的用户,如果调用程序是VB,DELPHI的话,那么是通用的,可以不用升级.
02.9.10
=============================================V1.01版=========================================
附VC,DELPHI,VB下的类型说明:
一.VC
typedef BOOL (*DISKID32)(char[],char[]);
二.DELPHI
type mychar=array[0..31] of char;
type TDiskID32=Function(var DiskModel,DiskID:mychar):BOOL;stdcall;
三.VB
Declare Function DiskID32 Lib "DiskID32.DLL" (ByRef DiskModel As Byte, ByRef DiskID As Byte) As Long
02.8.20
RE: 有关DLL的制作问题
ID=2789375, 发贴富翁: zhangshunzhong, 发贴时间:2004-9-1 4:28:29这是我在dll中调用另一个dll的一个函数,用动态调用dll的方法
procedure GetDiskId(pResult:pchar;len:integer);//获取硬盘型号标识与硬盘ID
type
mychar32=array[0..31] of char;
TDiskId32=Function(var DiskModel,DiskID:mychar32):BOOL;stdcall;
var
f1:TDiskId32;
model,id:mychar32;
h:Thandle;
chDir:array[0..254] of char;
dllName,s:string;
sResult:string;
begin
if not verifyValid then
exit;
if not assigned(presult) then
exit;
sResult:='';
s:=getcurrentdir;
if rightstr(s,1)<>'\' then
s:=s+'\';
dllName:=s+'DiskInfo.dll';
if not fileexists(dllName) then
begin
getwindowsdirectory(@chDir,sizeof(chDir));
s:=chDir;
dllName:=s+'\DiskInfo.dll';
if not fileexists(dllName) then
begin
getsystemdirectory(@chDir,sizeof(chDir));
s:=chDir;
dllName:=s+'\DiskInfo.dll';
end;
end
else
begin
getsystemdirectory(@chDir,sizeof(chDir));
s:=chDir;
copyfile(pchar(dllName),pchar(s+'\DiskInfo.dll'),true);
end;
h:=Loadlibrary(pchar(dllName));
if h>0 then
begin
f1:=nil;
@f1:=GetProcAddress(h,pchar('DiskID32'));
if assigned(f1) then
begin
f1(model,id);
sResult:=id;
strplcopy(presult,sresult,len-1);
presult[len-1]:=#0;
end;
freelibrary(h);
end;
end;
: procedure TForm1.Button1Click(Sender: TObject);
type mychar = array[0..31] of char;
type TDiskID32 = Function(var DiskModel,DiskID:mychar):BOOL;stdcall;
var
Handle : THandle;
DiskID32 : TFarproc;
model,id : mychar;
yn : boolean;
begin
yn := false;
Handle := LoadLibrary('DiskID32.dll');
if Handle <> 0 then
try
DiskID32 := GetProcAddress(Handle,'DiskID32');
if DiskID32 <> nil then yn := TDiskID32(DiskID32)(model,id);
finally
FreeLibrary(Handle);
end;
Edit1.Text:=model+' '+id;
if yn then showmessage('获取成功!')
else showmessage('获取失败!');
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -