1. مهمان گرامی، جهت ارسال پست، دانلود و سایر امکانات ویژه کاربران عضو، ثبت نام کنید.
    بستن اطلاعیه

دست آوردن اطلاعاتی محیطی از سیستم در vb.net

شروع موضوع توسط minaaa ‏22/10/11 در انجمن .Net

  1. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    در این مقاله روش بدست آوردن اطلاعات محیطی از سیستم مانند نام کاربر، نام
    کامپیوتر، اندازه آیکون‌ها، تعداد مانیتور، اندازه قاب پنجره، درایوهای
    موجود و آدرس پوشه‌های مخصوص سیستم در زبان Visual Basic .NET بررسی
    می‌شود.

    اینگونه اطلاعات را می‌توان از فضانام
    System.Windows.Forms.SystemInformation بدست آورد. برای مثال چند نمونه
    از اینگونه اطلاعات را با کد زیر در کنترل ListView وارد می کنیم. نام این
    کنترل lvwSystemInformation است. توجه داشته باشید که خصوصیت View این
    کنترل در حالت Details قرار گرفته باشد.



    کد:

    With lvwSystemInformation.Items.Add("BorderSize") .SubItems.Add(SystemInformation.BorderSize.ToString()) End With With lvwSystemInformation.Items.Add("ComputerName") .SubItems.Add(SystemInformation.ComputerName.ToString()) End With With lvwSystemInformation.Items.Add("CursorSize") .SubItems.Add(SystemInformation.CursorSize.ToString()) End With With lvwSystemInformation.Items.Add("DoubleClickTime") .SubItems.Add(SystemInformation.DoubleClickTime.ToString()) End With With lvwSystemInformation.Items.Add("IconSize") .SubItems.Add(SystemInformation.IconSize.ToString()) End With With lvwSystemInformation.Items.Add("MonitorCount") .SubItems.Add(SystemInformation.MonitorCount.ToString()) End With​
    </pre>

    بدست آوردن نام درایوها

    متد Environment.GetLogicalDrives آرایه‌ای از نام درایوها برمی‌گرداند.
    می‌توان این آرایه را به عنوان Data Source یک لیست برای نمایش درایوها
    بکار برد. پس از بدست آوردن لیستی از درایوها، شما ممکن است بخواهید که
    اطلاعاتی نیز در مورد فایل‌ها و دایرکتوری‌های موجود در این درایوها بدست
    آورید. جهت این کار بهتر است که به کلاسهای System.IO.File و
    System.IO.Directory مراجعه کنید.

    پوشه‌های مخصوص سیستم

    در ویندوز پوشه‌هایی با نام پوشه‌های مخصوص یا Special Folders وجود دارد.
    پوشه‌های System ،Startup ،My Documents و Program Files از این
    نمونه‌اند. در بسیاری از مواقع لازم است که برنامه نویس آدرس این پوشه‌ها
    را بداند تا برای مثال بتواند فایلی را در آن‌ها کپی کند. اما از آنجایی
    که در هر سیستم آدرس این پوشه‌ها متفاوت است، VB</acronym>.NET متدهایی را جهت بدست آوردن این آدرسها ارائه میدهد.

    مهمترین پوشه هر ویندوز، شاخه System می‌باشد. برای بدست آوردن آدرس این پوشه می‌توان از کد زیر استفاده کرد:

    کد:

    lblSystemFolder.Text = GetFolderPath(SpecialFolder.System)</pre>

    تابع GetFolderPath تابعی از کلاس System.Environment می‌باشد که
    آدرس اینگونه پوشه‌ها را برمی‌گرداند. تعریف این تابع به صورت زیر است:



    کد:

    Public Shared Function GetFolderPath (ByVal folder As System.Environment.SpecialFolder) As String</pre>



    تکنیک دیگری نیز وجود دارد که به کمک آن می‌توان لیست کاملی از تمامی این
    پوشه‌ها را بدست آورد. در این روش نه چندان آسان از تابع GetNames از کلاس
    System.Enum استفاده می‌شود. این تابع یک مجموعه شمارشی را بعنوان
    پارامتر ورودی می‌گیرد و آرایه‌ای از اسامی ثابت‌های این مجموعه شمارشی
    برمی‌گرداند. تعریف تابع را در زیر مشاهده می‌کنید:

    کد:

    Public Shared Function GetNames(ByVal enumType As System.Type) As String()</pre>

    پس از نوشتن تابعی مانند زیر، در یک رویداد مانند رویداد Load فرم این تابع با پارامتر Environment.SpecialFolder صدا زده می‌شود.



    کد:

    Private Sub LoadList(ByVal lst As ListBox, ByVal typ As Type) lst.DataSource = System.Enum.GetNames(typ) End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load LoadList(lstFolders, GetType(Environment.SpecialFolder)) End Sub​
    </pre>

    حال می‌خواهیم کاری کنیم که پس از کلیک بر روی نام هر پوشه،
    آدرس آن نیز نمایش داده شود. به رویداد SelectedIndexChanged رفته و کدهای
    زیر را می‌نویسیم:



    کد:

    Private Sub lstFolders_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstFolders.SelectedIndexChanged Dim sf As Environment.SpecialFolder = GetSpecialFolderFromList() lblSpecialFolder.Text = GetFolderPath(sf) End Sub</pre>

    در این تابع ابتدا متغیری با نام sf از نوع
    Environment.SpecialFolder می‌سازیم که نگهدارنده مقدار خروجی تابع
    GetSpecialFolderFromList می‌باشد. این تابع با استفاده از گزینه انتخاب
    شده از لیست پوشه‌های مخصوص نام آنرا برمی‌گرداند و آن را بصورت زیر تعریف
    می کنیم:



    کد:

    Private Function GetSpecialFolderFromList() As Environment.SpecialFolder Return CType(System.Enum.Parse(GetType(Environment.SpecialFolder), _ lstFolders.SelectedItem.ToString), Environment.SpecialFolder) End Function</pre>

    تابع Parse از کلاس System.Enum یک رشته یا مقدار عددی از
    یک مجموعه شمارشی را به یک شئ شمارشی تبدیل می‌کند. تعریف این تابع را در
    زیر می‌بینید:

    Public Shared Function Parse(ByVal enumType As System.Type, ByVal value As String) As Object

    سپس مقدار برگشتی آن با استفاده از CType به نوع
    Environment.SpecialFolder تبدیل می‌شود. بدین صورت پس از آنکه بر روی هر
    یک از آیتم‌های لیست کلیک می کنیم، آدرس آن در Label مقابل نمایش داده
    می‌شود.

    VN:F [1.8.3_1051
     
  2. عضو جدید

    تاریخ عضویت:
    ‏23/5/12
    ارسال ها:
    2
    تشکر شده:
    0
    امتیاز دستاورد:
    0
    پاسخ : دست آوردن اطلاعاتی محیطی از سیستم در vb.net

    با سلام

    خوب بود البته بهتر بود سایت امکانات نوشتن کد ها به صورت رنگی رو داشت که دوستان تازه کار گیج نشن ...