⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 diskid32v2.00使用说明.txt

📁 磁盘序列号,CPU信息获取,C++开发
💻 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 + -