من برای گرفتن شماره سریال سخت افزار سیستم برنامه ای به زبان اسمبلی دارم که می خواهم از آن در #C استفاده کنم.
لطفا مرا راهنمایی کنید.
تشکر
من برای گرفتن شماره سریال سخت افزار سیستم برنامه ای به زبان اسمبلی دارم که می خواهم از آن در #C استفاده کنم.
لطفا مرا راهنمایی کنید.
تشکر
برنامه ات رو بذار اینجا ، اگه قابل inline کردن در C++ بود ، میتونیم از MC++ کمک گرفته و از C# اون رو فراخوانی کنیم
We work in the dark, we do what we can, we give what we have.
Our doubt is our passion and our passion is our task.
The rest is the madness of art
کد اسمبلی را به صورت زیر در دلفی اسفاده کردم.
var
_eax, _ebx, _ecx, _edx: Longword;
b: Byte;
s, s1, s2, s3 : string;
begin
asm
mov eax,1
db $0F,$A2
mov _eax,eax
mov _ebx,ebx
mov _ecx,ecx
mov _edx,edx
end;
s := IntToHex(_eax, 8);
asm //determine the serial number
mov eax,3
db $0F,$A2
mov _ecx,ecx
mov _edx,edx
end;
s1 := IntToHex(_edx, 8);
s2 := IntToHex(_ecx, 8);
Insert('-', s, 5);
Insert('-', s1, 5);
Insert('-', s2, 5);
edit1.text:=' - ' + 'Serial Number: '+s+ '-' + s1 + '-' + s2;
s2 := s2 + chr(b);
این کد شماره سریال CPU را به ما میدهد.
ممنون میشم اگر سریع پاسخ را ارسال کنید
با تشکر
یک راه حل : در دلفی تبدیلش کن به dll و در سی شارپ فراخوانی کن.
نوشته شده توسط anubis_ir
من دلفی زیاد کار نکردم . میشه بگی چطوری این کار را انجام بدم .
ممنون مهندس
پروژه dll دلفی:
library cpu;
uses
SysUtils;
{$R *.res}
function getCPUSerial():Pchar;
var
_eax, _ebx, _ecx, _edx: Longword;
s, s1, s2 : string;
begin
asm
mov eax,1
db $0F,$A2
mov _eax,eax
mov _ebx,ebx
mov _ecx,ecx
mov _edx,edx
end;
s := IntToHex(_eax, 8);
asm //determine the serial number
mov eax,3
db $0F,$A2
mov _ecx,ecx
mov _edx,edx
end;
s1 := IntToHex(_edx, 8);
s2 := IntToHex(_ecx, 8);
Insert('-', s, 5);
Insert('-', s1, 5);
Insert('-', s2, 5);
Result := Pchar(s+ '-' + s1 + '-' + s2);
end;
exports getCPUSerial name 'getCPUSerial';
begin
end.
نحوه استفاده در سی شارپ:
[DllImport("cpu.dll", CallingConvention = CallingConvention.StdCall, CharSet=CharSet.Ansi)]
static extern string getCPUSerial();
private void btnGet_Click(object sender, EventArgs e)
{
txtRes.Text = getCPUSerial();
}
خیلی ممنون .
راه حل خیلی خوبی بود!!!
-------------------------------
غافل مباش ار عاقلی دریاب گر صاحبدلی
باشد که نتوان یافتن دیگر چنین ایام را