PDA

View Full Version : سوال: ایجاد یک عدد



aapalireza
یک شنبه 28 شهریور 1389, 17:58 عصر
سلام
من می خواهم یک button بگذارم که با زدن آن یک عدد ایجاد شود با خصوصیات زبر:

من یک عدد 5- 6 یا 4 رقمی می خواهم(فقط عدد و نه حروف)
که برنامه نسبت به سخت افزار موجود در سیستم یا ... ایجاد کند که
در خیلی از سیستم ها متفاوت باشد ولی آن عدد در خود همان سیستم همیشه یکسان باشد.

hamid.shekasteh
یک شنبه 28 شهریور 1389, 21:28 عصر
از کد های گرفتن اطلاعات برای سیستم استفاده کنید، مثل :
برای هارد :


public string GetHDDSerialNumber()
{
string Serial = String.Empty;
ManagementObjectSearcher searcher;
string query2 = "SELECT * FROM Win32_PhysicalMedia";
searcher = new ManagementObjectSearcher(query2);
foreach (ManagementObject wmi_HD in searcher.Get())
if (wmi_HD["SerialNumber"] != null)
{
Serial = wmi_HD["SerialNumber"].ToString();
}
frmRegister.Hdd = Serial;
if (Serial == String.Empty)
return "";
else
return Serial;
}


وبرای cpu سیستم :


public string GetCPUId()
{
string CpuId = String.Empty;
ManagementClass mgmt = new ManagementClass("Win32_Processor");
ManagementObjectCollection objCol = mgmt.GetInstances();
foreach (ManagementObject obj in objCol)
{
if (CpuId == String.Empty)
{
CpuId += obj.Properties["ProcessorId"].Value.ToString();
}
}
frmRegister.Cpu = CpuId;
if (CpuId == String.Empty)
return "";
else
return CpuId;
}


بعد با یه الگوریتم این رشته ها رو به یه عدد یکتا تبدیل کنید این کارو می تونید با یه حلقه for انجام بدید و از کد اسکی کاراکترها استفاده کنید، این قسمت رو من سلیقه ای می نویسم. دقت کنید هر چه الگوریتم بهتر و عدد طولانی تر (نه لزوما) عدد تکراری کمتر.
راستی ابتدا باید اینو با رفرنسش اضافه کنید.


using System.Management;

hamid.shekasteh
دوشنبه 29 شهریور 1389, 14:02 عصر
این مظلب رو هم اضافه کنم که می تونید از رشته بدست اومده با تابع زیر یه عدد int خیلی خوب برای مقصودتون بگیرین.


GetHashCode()