PDA

View Full Version : چگونه شماره سریال پردانده را در دلفی پیدا کنم ؟ - خیلی مهم



deljavan
دوشنبه 23 آذر 1383, 11:43 صبح
سلام
لطفا من را در این مورد راهنمایی کنید
برای استفاده در قفلهای نرم افزاری می خواهم. cpu id - serial number for Cpu

دلیل یافتن : منحصر بفرد بودن شماره سریال هر cpu می باشد


hamid_delj@yahoo.com حمید دلجوان
:گیج:

میتی دات نت
سه شنبه 24 آذر 1383, 16:31 عصر
به نام خدا

یک جستجو بکنی پیدا می کنی من از همین جا پیدا کردم :موفق:

va_amanzadeh
یک شنبه 19 شهریور 1385, 07:44 صبح
با سلام
من هم گشتم ولی در دلفی یافت نکردم
دوست دارم هر چه سریعتر به نتیجه برسم

Valadi
یک شنبه 19 شهریور 1385, 08:08 صبح
از طریق ریجستری می تونی همه کار کنی و قفل های نرم افزاری که کد فعالسازی دارند همهشون با ریجستری کار می کنند

shobair
یک شنبه 19 شهریور 1385, 08:36 صبح
سلام
لطفا من را در این مورد راهنمایی کنید
برای استفاده در قفلهای نرم افزاری می خواهم. cpu id - serial number for Cpu

دلیل یافتن : منحصر بفرد بودن شماره سریال هر cpu می باشد

:گیج:

سلام
این رو تست کن

شبیر

Valadi
یک شنبه 19 شهریور 1385, 09:14 صبح
سلام
این رو تست کن

شبیر

شما می توانید از ریجستری استفاده کنی و از آن فراخوانی و بدست آوردن تابع و قرار دادن در فرمول و خیلی کارهای دیگر

mzjahromi
یک شنبه 19 شهریور 1385, 09:20 صبح
رجیستری یه وجه کاره

dkhatibi
یک شنبه 19 شهریور 1385, 15:12 عصر
من قبلا تو سایت یک کامپوننت دیدم که به خوبی سربال ... را نشان می داد.

Valadi
یک شنبه 19 شهریور 1385, 21:19 عصر
من قبلا تو سایت یک کامپوننت دیدم که به خوبی سربال ... را نشان می داد.
نمونه برنامه ایت بد نبود حالا این ها سریال ها به عدد و به داخل یک فرمول و به یک رشته تبدیل و دوباره در رجیستری یک متد قرار بده اگر عدد بود برنامه اجرا شود اگر نیود پیغام و خروج از برنامه

vesal
دوشنبه 20 شهریور 1385, 01:02 صبح
این نمونه سورس کد برای دریافت مشخصات CPU

این کد یونیت



unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Bevel1: TBevel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

const
ID_BIT = $200000; // EFLAGS ID bit
type
TCPUID = array[1..4] of Longint;
TVendor = array [0..11] of char;

function IsCPUID_Available : Boolean; register;
asm
PUSHFD {direct access to flags no possible, only via stack}
POP EAX {flags to EAX}
MOV EDX,EAX {save current flags}
XOR EAX,ID_BIT {not ID bit}
PUSH EAX {onto stack}
POPFD {from stack to flags, with not ID bit}
PUSHFD {back to stack}
POP EAX {get back to EAX}
XOR EAX,EDX {check if ID bit affected}
JZ @exit {no, CPUID not availavle}
MOV AL,True {Result=True}
@exit:
end;

function GetCPUID : TCPUID; assembler; register;
asm
PUSH EBX {Save affected register}
PUSH EDI
MOV EDI,EAX {@Resukt}
MOV EAX,1
DW $A20F {CPUID Command}
STOSD {CPUID[1]}
MOV EAX,EBX
STOSD {CPUID[2]}
MOV EAX,ECX
STOSD {CPUID[3]}
MOV EAX,EDX
STOSD {CPUID[4]}
POP EDI {Restore registers}
POP EBX
end;

function GetCPUVendor : TVendor; assembler; register;
asm
PUSH EBX {Save affected register}
PUSH EDI
MOV EDI,EAX {@Result (TVendor)}
MOV EAX,0
DW $A20F {CPUID Command}
MOV EAX,EBX
XCHG EBX,ECX {save ECX result}
MOV ECX,4
@1:
STOSB
SHR EAX,8
LOOP @1
MOV EAX,EDX
MOV ECX,4
@2:
STOSB
SHR EAX,8
LOOP @2
MOV EAX,EBX
MOV ECX,4
@3:
STOSB
SHR EAX,8
LOOP @3
POP EDI {Restore registers}
POP EBX
end;

procedure TForm1.Button1Click(Sender: TObject);
var
CPUID : TCPUID;
I : Integer;
S : TVendor;
begin
for I := Low(CPUID) to High(CPUID) do CPUID[I] := -1;
if IsCPUID_Available then begin
CPUID := GetCPUID;
Label1.Caption := 'CPUID[1] = ' + IntToHex(CPUID[1],8);
Label2.Caption := 'CPUID[2] = ' + IntToHex(CPUID[2],8);
Label3.Caption := 'CPUID[3] = ' + IntToHex(CPUID[3],8);
Label4.Caption := 'CPUID[4] = ' + IntToHex(CPUID[4],8);
Label5.Caption := IntToStr(CPUID[1] shr 12 and 3);
Label6.Caption := IntToStr(CPUID[1] shr 8 and $f);
Label7.Caption := IntToStr(CPUID[1] shr 4 and $f);
Label8.Caption := IntToStr(CPUID[1] and $f);
S := GetCPUVendor;
Label5.Caption := 'Vendor: ' + S; end
else begin
Label5.Caption := 'CPUID not available';
end;
end;

end.




اینم کد یونیت



object Form1: TForm1
Left = 192
Top = 114
Width = 330
Height = 284
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object Label1: TLabel
Left = 32
Top = 16
Width = 32
Height = 13
Caption = 'Label1'
end
object Label2: TLabel
Left = 32
Top = 40
Width = 32
Height = 13
Caption = 'Label2'
end
object Label3: TLabel
Left = 32
Top = 64
Width = 32
Height = 13
Caption = 'Label3'
end
object Label4: TLabel
Left = 32
Top = 88
Width = 32
Height = 13
Caption = 'Label4'
end
object Label5: TLabel
Left = 32
Top = 112
Width = 32
Height = 13
Caption = 'Label5'
end
object Label6: TLabel
Left = 32
Top = 136
Width = 32
Height = 13
Caption = 'Label6'
end
object Label7: TLabel
Left = 32
Top = 160
Width = 32
Height = 13
Caption = 'Label7'
end
object Label8: TLabel
Left = 32
Top = 184
Width = 32
Height = 13
Caption = 'Label8'
end
object Bevel1: TBevel
Left = 16
Top = 8
Width = 289
Height = 201
end
object Button1: TButton
Left = 232
Top = 216
Width = 75
Height = 25
Caption = 'Get CPU Info'
TabOrder = 0
OnClick = Button1Click
end
end

Mahdi_S_T
دوشنبه 20 شهریور 1385, 14:57 عصر
برای قفل نرم افزاری روی برنامه ها . بهترین انتخاب استفاده از سریال هارددیسک است چون این امکان برای شخص باشد که بتواند دستگاه خود را ارتقا دهد و برنامه اش باز هم اجرا بشه

dkhatibi
دوشنبه 20 شهریور 1385, 19:04 عصر
منظور سریالی است که هنگام فرمت شدن هارد می گیرد میباشد؟

Mahdi_S_T
سه شنبه 21 شهریور 1385, 12:02 عصر
هر هارد یه شماره سریال منحصر به فرد دارد که با سریالی که هنگام فرمت کردن میدهد تفاوت دارد و هیچ موقع تغییر نمی کند حتی با فرمت یا پارتیشن بندی مجدد

محمد علی
چهارشنبه 22 شهریور 1385, 04:23 صبح
امکان تعویض هارد خیلی بیشتر از cpu است . نیما mohammad_nikoie2005@yahoo.com