PDA

View Full Version : آموزش: نمایش شماره سریال پردازنده - خیلی راحت



hamidreza20
یک شنبه 27 دی 1388, 17:58 عصر
سلام دوستان عزیز.

توی یه پروژه ای ما و گروهمون نیاز داشتیم شماره سریال پردازنده رو در بیاریم تا برنامه کرک نشه.

یکی از دوستان خواسته بود فکر می کنم مفید باشه.

روی فرمتون یک تکست باکس و یک باتن اضافه کنید و توی باتن این کد رو اضافه کنید


private void button1_Click(object sender, EventArgs e)
{

/////بدست آوردن کد پردازنده
ManagementClass mc = new ManagementClass("Win32_Processor");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
foreach (PropertyData pd in mo.Properties)
{

if (pd.Name == "ProcessorId")
{
Cpuid = pd.Value.ToString();
textBox1.Text = Cpuid;
}
}
}


التماس دعا...
اگه مفید بود تشکر بزنید....

hamidreza20
یک شنبه 27 دی 1388, 18:04 عصر
البته دوستان using زیر رو اضافه کنید فراموش شد



using System.Management;

saied_genius
یک شنبه 27 دی 1388, 18:27 عصر
خيلي از پردازنده هاي جديد سريال ندارند !!!

اين راه هميشه مطمئن نيست.

hamidreza20
یک شنبه 27 دی 1388, 18:42 عصر
ولی شما در مورد هر پردازنده ای که خواستی تست کن ببین چه جوابی می گیری.

همه اونها یک ID دارن و اون رو کارخونه سازنده روی آنها می زاره.

ما بی ادعا هرچه بلدیم در اختیار دیگران قرار می دیم...

التماس دعا...

saied_genius
یک شنبه 27 دی 1388, 18:51 عصر
شما لطف مي کنيد ، ما هم همه براي همين اينجاييم ، تا هر چي بلديم بگيم.

ولي من زماني که براي نوشتن قفل دنبال پارامتر براي الگوريتم قفل مي گشتم ، توي جستجو هايم به اين مسئله برخورد کردم.

اتفاقاً روي يک سيستم هم تست کردم و هيچ ID بر نگرداند.

کد شما را تست مي کنم اگر جواب داد فبها ، در غير اينصورت همينجا نتيجه رو اعلام مي کنم.

موفق باشيد.

bghad1
دوشنبه 28 دی 1388, 01:35 صبح
سلام...خيلي ممنون...فقط ميشه لطفاً اون كلاس رو هم كدش رو بذارين؟؟
آخه اينجوري كه كلاس management class رو نداريم اجرا نميشه خوب!!!

hamidreza20
دوشنبه 28 دی 1388, 06:36 صبح
دوست محترم در بالا ذکر شد که using زیر رو هر جا کد رو می نویسید اضافه کنید:

using System.Management;

التماس دعا...

mir555
دوشنبه 28 دی 1388, 07:18 صبح
سلام
برنامه من رو یک سرور اجرا میشه که 16 تا cpu داره شماره سریال کدومشو میده؟؟

hamidreza20
دوشنبه 28 دی 1388, 12:00 عصر
سلام شما اگه این سیستم رو داری اول امتحان بکن و بعد نتیجه رو اینجا اعلام کن که منم یاد بگیرم .

نه اینکه بخوای با سوالتون اصل موضوع رو زیر سوال ببرید دوست محترم.

ما بی ادعاییم و عاشق آموختن...

التماس دعا...

saied_genius
دوشنبه 28 دی 1388, 12:19 عصر
ما هم ادعايي نداريم و سعيمان هميشه در آموزش دادن بوده است و هرچه بلد بوديم گفتيم و خدارا شکر هيچ وقت چيزي را دريغ نداشتيم.

همانطور هم که گفتم ، من براي قفل مي خواستم از اين روش استفاده کنم ، که بعد از کلي جست و جو به اين نتيجه رسيده بودم ، اين به نظر شما مخالفت با تاپيک و زير سوال بردن آن است ؟؟!!

من الان به اون سيستم دسترسي ندارم ولي روي سيستم هاي ديگر تست مي کنم و (همانطور که قبلاً هم گفتم) نتيجه را همينجا اعلام مي کنم.

موفق باشيد.

hamidreza20
دوشنبه 28 دی 1388, 12:39 عصر
سلام آقا سعید منظور من با mir555 بود نه شما دوست عزیز.
شما که اساتید بنده هستید به دلیل سابقه فعالیت شما در این بخش و تجربه ای که دارید.

من خاک پای همه دوستان برنامه نویس هستم. به دل نگیرید دوست خوب.

در مورد سوال mir555 هر سیستمی حتی سرور همیشه یک پردازنده به عنوان master می باشد من فکر کنم ID اون رو بده ولی اگه سیستم رو دارید تست کنید و جواب رو اینجا بزارید تا منم یاد بگیرم.

التماس دعا....

saied_genius
دوشنبه 28 دی 1388, 12:46 عصر
سلام
برنامه من رو یک سرور اجرا میشه که 16 تا cpu داره شماره سریال کدومشو میده؟؟

برنامه دوستمون داخلش یک حلقه foreach دارد پس به ترتیب از پردازنده 0 سیستم شروع به نوشتن می کند.

اگر طبق برنامه دوستمون اجرا کنید ، سریال آخرین cpu یعنی 16 شما (در اصل cpu با ایندکس 15) را در textbox نمایش می دهد ، چون با هر بار نمایش (در حلقه) متن textbox تغییر می کند و فقط آخرین cpu کدش باقی می ماند.

و اما یک سوال جناب حمیدرضا : این کد چه کدی است ، همان سریال منظورتان است یا چیز دیگری است ؟

موفق باشید.

saied_genius
دوشنبه 28 دی 1388, 12:48 عصر
يه سوال ديگه:

شما مطمئن هستيد که اين سريال بين سيستم هاي مشابه (cpu هاي مشابه) تکراري نمي شود يا نه ؟

و بي زحمت کد دريافتي خودتان را بگذاريد تا من ببينم چه خروجي مي دهد.

با تشکر

hamidreza20
دوشنبه 28 دی 1388, 12:52 عصر
تا جایی که من اطلاع دارم پردازنده ها توسط موسسه ansi شماره و برچسب می خورن تا از هم متمایز بشن حتی اگه مشابه و از یک خانواده باشن.

slashslash2009
دوشنبه 28 دی 1388, 13:16 عصر
اگر با
using System.Management;مشکلتون حل نشد system.management را به refrence اضافه کنید درست میشه در solution explorer

FastCode
دوشنبه 28 دی 1388, 13:58 عصر
سلام
برنامه من رو یک سرور اجرا میشه که 16 تا cpu داره شماره سریال کدومشو میده؟؟

همه ی سریال ها رو میده.


foreach (ManagementObject mo in moc)

mehdibarati
دوشنبه 28 دی 1388, 19:55 عصر
سلام
من

System.Management رو به refrence اضافه کردم ولی باز هم کلاس ManagementObject نمیاد!

HAMRAHSOFT.IR
دوشنبه 28 دی 1388, 20:26 عصر
سلام من روی لب تاب امتحان کردم
این دو خط حطا داد
Cpuid = pd.Value.ToString();
textBox1.Text = Cpuid;

slashslash2009
دوشنبه 28 دی 1388, 20:46 عصر
نمونه کامل این برنامه البته با کد دوستون hamidreza

saied_genius
سه شنبه 29 دی 1388, 13:46 عصر
سلام
من

System.Management رو به refrence اضافه کردم ولی باز هم کلاس ManagementObject نمیاد!

بعد از اينکه به reference اضافه کرديد ، بايد using آنرا هم اضافه کنيد.

Sajjad.Aghapour
سه شنبه 29 دی 1388, 21:14 عصر
بهتر بود کد رو به این صورت مینوشتید....



ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Processor");

foreach (ManagementObject mo in searcher.Get())
{
MessageBox.Show(mo["ProcessorId"].ToString());
}


قبلا یه مطلب در این مورد(البته در مورد مودم) تو وبلاگم نوشته بودم ولی برای کسب اطلاعات بیشتر میتونید WMI رو جستجو کنید...

...
موفق باشید/
...