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

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

شروع موضوع توسط hector2141 ‏10/9/12 در انجمن Visual Basic

  1. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,323
    تشکر شده:
    2,698
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    پاسخ : یه سری آموزش های فوق العاده جالب برای دوستان عزیز

    استفاده از منو در فرمها:

    لابد از اهميت فوق العاده زياد منوها در ويندوز مطلع هستيد. منوها علاوه بر تنوع و زيبايي فرم‌ها، به شلوغ نشدن يك فرم توسط دكمه هاي زياد نيز كمك مي‌كنند.

    براي درست كردن منو براي يك فرم از MenuEditor كه در منوي Tools قرار دارد استفاده مي كنيم. همچنين MenuEditor يك دكمه فوري نيز بر روي ميله ابزار استاندارد VB به شكل دارد كه با كليك بر روي آن نيز پنجره MenuEditor باز مي شود. اين پنجره مانند شكل 10 مي باشد:


    شکل 10

    در پنجره مذكور كافيست عنوان منوي اول (مثلاMenu1) را در كادر Caption بنويسيم و مانند ساير objectهاي VB به اين منو هم يك نام (مثلاmnuMenu1) در كادر Name وارد كنيم. حال براي وارد كردن نام و عنوان منوي بعدي كافيست كليد Next را بزنيم. اما معمولا منوي بعدي، آيتمي از منوي قبلي خواهد بود. اگر كليد را بزنيم، منوي جاري به عنوان زير منوي قبلي محسوب خواهد شد. پس از وارد كردن اولين آيتم كافيست بوسيله دكمه Next آيتم هاي بعدي اولين منو را نيز وارد كنيم. اگر يكي از آيتم ها خود شامل زير آيتم هايي بود باز هم مي توان از كليد سود برد. و بالاخره براي اينكه به سراغ منوي دوم برويم لازم است از كليد به تعدادي استفاده كنيم كه ديگر زيرمنوي يك منوي ديگر نباشد و به همين ترتيب ساير منوها و آيتمها را نيز نامگذاري و عنوان‌دهي مي‌كنيم و ساختار مورد نظرمان را براي منوها ايجاد مي‌كنيم.

    لذا اگر منوها را در MenuEditor طوري وارد كنيم كه پنجره پايين MenuEditor مطابق آنچه در شكل 10 مي‌بينيد، شود، انتظار داريم در هنگام اجرا، فرمی شبيه آنچه در شکل 11 می بينيد، حاصل شود:


    شکل 11

    توجه داشته باشيد كه در MenuEditor علاوه بر آنچه تابه‌حال گفته شد:

    • دكمه Delete براي پاك كردن يك منو (يا آيتم) استفاده مي شود.

    • دكمه Insert براي افزودن يك منو (يا آيتم) ميان دو منو (يا آيتم) ديگر استفاده مي شود

    • Check Boxهاي Visible و Enable به ترتيب اگر انتخاب نشده شوند، منوي مذكور ديده نمي شود و يا اينكه فقط غيرفعال (و به رنگ خاكستري) خواهد شد.

    • Check Box با عنوان Checked اگر انتخاب شود، باعث خواهد شد تا كنار آن منو (آيتم) يك "چك‌مارك" ديده شود. (معمولا اين مشخصه در Run Time و بر حسب نياز تنظيم مي شود)

    • توسط Shortcut مي توانيم يك ميانبر (Shortcut) براي يكي از آيتم‌ها درست كنيم..

    • توسط Index مي توانيم آرايه اي از منوها را طراحي نماييم ( همانطوری که آرايه ای ازساير کنترلها درست می کرديم، يعنی بايد نام دو يا چند منو را يک نام واحد بگذاريم و Index متفاوت به هريک بدهيم.)

    • و توسط NegotiatePosition مي‌توان نوع چيدن آيتم‌ها (راست چين، چپ چين، وسط چين) را تعيين نمود.

    چند تذكر:

    • براي دستيابي به مشخصه هاي منوها نيز مانند ساير كنترلها از نام آنها و يك نقطه(Dot) و سپس نام مشخصه مورد نظر استفاده مي كنيم. مثلا اگر منويي به نام mnuOpen داشته باشيم و بخواهيم آن را غيرفعال و يا مارك‌دار نماييم به ترتيب از دستورات زير استفاده خواهيم كرد:



    mnuOpen.Enable = False

    mnuOpen.Checked = True



    • مشخصه WindowList در بحث MDI Forms خواهد آمد و از مشخصه HelpContentID نيز تنها زماني كه يك فايل HLP داشته باشيم مي‌توانيم استفاده كنيم.

    • اگر بخواهيم بين دو آيتم از منويي يك خط جداكننده آورده شود (آنچه در ويندوز براي جداكردن بخشهاي مختلف يك منوي خاص معمول است) كافي است بين آن دو آيتم، يك آيتم Insert نماييم، نام آن را يك نام دلخواه (مثلا mnuLine) و عنوان (Caption) آن را يك منفي (كاراكتر "-" يا اصطلاحا Dash) بگذاريم.

    • اگر بخواهيم براي شي خاصی يك PopUpMenu طراحي كنيم (منوهاي بازشونده‌اي كه وقتي بر روي شي كليك راست شود از آن خارج مي‌شود) كافيست يك منو (با آيتمهاي مورد نظر براي آن) را طراحي كنيم (و حتي در صورت نياز Visible آن را False كنيم) و در رويداد MouseDown از آن شي خاص، پس از اينكه شرط كرديم كليد زده شده كليد راست ماوس باشد (با استفاده از شرط برابري پارامتر Button از اين رويداد با مقدار ثابت VbRightButton)، با استفاده از دستور PopUpMenu، نام منوي مورد نظر را فراخواني مي كنيم يعني بايد چنين داشته باشيم:



    Private Sub controlName_MouseDown (Button As Integer,…)

    IF Button = VbRightButton Then

    PopUpMenu mnuMenu1

    End IF

    End Sub



    كه بجاي controlName نام آن كنترلي كه قرار است كاربر روي آن كليك راست نمايد و بجاي mnuMenu1 نام آن منويي كه قرار است به صورت PopUp آورده شود را ذكر مي كنيم.
     
  2. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,323
    تشکر شده:
    2,698
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    پاسخ : یه سری آموزش های فوق العاده جالب برای دوستان عزیز

    شناسایی CD ROM در سیستم :
    دو تا لیبل بزارید توی فرمتون به نام های Lable1 و l1
    این کدها رو به فرمتون اضافه کنین :
    [TABLE]
    [TR]
    [TD="class: gutter"]1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    [/TD]
    [TD="class: code"]Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
    Private Declare Function GetLogicalDriveStrings Lib "kernel32" Alias "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long

    Private Const Drive_Removable = 2
    Private Const Drive_Fixed = 3
    Private Const Drive_Remote = 4
    Private Const Drive_CDRom = 5
    Private Const Drive_RamDisk = 6
    Private Sub Form_Load()
    Dim R As Long
    Dim AllDrives As String
    Dim JustOneDrive As String
    Dim Pos As Integer
    Dim DriveType As Long
    Dim CDFound As Boolean

    AllDrives = Space$(64)
    R = GetLogicalDriveStrings(Len(AllDrives), AllDrives)
    AllDrives = Left$(AllDrives, R)
    Do
    Pos = InStr(AllDrives, Chr$(0))
    If Pos Then
    JustOneDrive = Left$(AllDrives, Pos)
    AllDrives = Mid$(AllDrives, Pos + 1, Len(AllDrives))
    DriveType = GetDriveType(JustOneDrive)
    If DriveType = 5 Then
    CDFound = True
    Exit Do
    End If
    End If
    Loop Until AllDrives = "" Or DriveType = Drive_CDRom

    If CDFound Then
    L1 = UCase(JustOneDrive)
    Else
    L1 = "No CDRom"
    End If

    End Sub

    [/TD]
    [/TR]
    [/TABLE]
     
  3. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,323
    تشکر شده:
    2,698
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    پاسخ : یه سری آموزش های فوق العاده جالب برای دوستان عزیز

    با کد های زیر برنامه شما به Startup میرود : (از این نمونه خیلی دیدم اما 60% از آن اصلاً عمل نمیکند.)

    یه کامند بزارین تو فرمتون و این کد ها رو اضافه کنین :
    [TABLE]
    [TR]
    [TD="class: gutter"]1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    [/TD]
    [TD="class: code"]Private Sub Cmd_Run_Click()

    Dim hregkey As Long
    Dim subkey As String
    Dim stringbuffer As String

    subkey = "Software\Microsoft\Windows\CurrentVersion\Run "

    retval = RegOpenKeyEx(HKEY_CURRENT_USER, subkey, 0, KEY_WRITE, hregkey)
    If retval <> 0 Then
    Debug.Print "Can't open the subkey"
    Exit Sub
    End If
    stringbuffer = App.Path & "\" & App.EXEName & ".exe" & vbNullChar
    retval = RegSetValueEx(hregkey, "My App", 0, REG_SZ, ByVal stringbuffer, Len(stringbuffer))

    RegCloseKey hregkey

    End Sub

    [/TD]
    [/TR]
    [/TABLE]




    اینها رو هم تو یه ماژول کپی کنین :
    [TABLE]
    [TR]
    [TD="class: gutter"]1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    [/TD]
    [TD="class: code"]Public Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal _
    hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long

    Public Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long

    Public Declare Function RegSetValueEx Lib "advapi32.dll" _
    Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName _
    As String, ByVal Reserved As Long, ByVal dwType As Long, _
    lpData As Any, ByVal cbData As Long) As Long

    Public Const HKEY_CURRENT_USER = &H80000001
    Public Const KEY_WRITE = &H20006
    Public Const REG_SZ = 1

    [/TD]
    [/TR]
    [/TABLE]
     
  4. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,323
    تشکر شده:
    2,698
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    پاسخ : یه سری آموزش های فوق العاده جالب برای دوستان عزیز

    خیلی از دوستان دوست دارن کار با TreeView رو یاد بگیرن ، گفتم آموزششو بزارم :
    براي اضافه کردن اين کنترلها به جعبه ابزار ويژوال بيسيک اين کارا رو انجام بدين:
    ?- از منوي Project > Components را بزنيد يا کليدهاي crtl + T را بزنيد که در اين صورت کادر محاوره اي Components باز ميشود که در سربرگ(Tab) به نام Controls ليستي از کنترل هاي شناخته شده توسط ويژوال بيسيک مي آيد که شما بايد به دنبال Microsoft Windows Common Controls 6.0(SP4) a بگردين و تيک کنار اون رو فعال کنيد و بعد هم OK کنيد.
    شما حتمآ حالت نمايش درختي را ديده ايد و بسيار از امکانتش بهرهمند شده ايد.
    براي اينکه ياد بگيرين از اين کنترل چگونه استفاده کنيد ابتدا بايد بدانيد که ساختار درختي به صورتي است که در آن يک شاخه اصلي وجود دارد که شاخه هاي فرعي به آن منتصل شده اند. به شاخه هاي فرعي گره(Node)هم گفته مي شود. ما بايد ابتدا شاخه اصلي يا تنه را بسازيم و بعد گره ها را درست کنيم. براي يادگيري کامل به مثال زير توجه کنين:
    ابتدا يک کنترل TreeView از جعبه ابزار به فرم اضافه کنيد . حالا اندازه آن را به طور دلخواه تغيير دهيد . روي فرم دابل کليک کنيد تا پنجره کدها و روال Form_Load باز شود.
    حالا يک متغير از نوع Node به اسم MainNode تعريف مي کينم به اين صورت:
    Dim MainNode as Node
    و بعد هم یک متغیر دیگه به اسم ChidNode
    [TABLE]
    [TR]
    [TD="class: gutter"]1
    [/TD]
    [TD="class: code"]Dim ChildNode as Node

    [/TD]
    [/TR]
    [/TABLE]



    بعد هم باید شروع کنیم به ست کردن متغیر ها . برای درست کردن شاخه اصلی به این صورت عمل میکنیم:
    [TABLE]
    [TR]
    [TD="class: gutter"]1
    [/TD]
    [TD="class: code"]Set MainNode = TreeView1.nodes.add( , , "Main" , "Main") 'x

    [/TD]
    [/TR]
    [/TABLE]



    حالا ما شاخه اصلی رو ساختیم . بهتره الآن یه بار برنامه را اجرا کنید و نتیجه را ببینید.
    شما میتونید به تعداد دلخواه شاخه درست کنید فقط کافیه به جای Main یک اسم دیگه بزارید.
    برای ساختن گره ها یا شاخه های فرعی به جای ست کردن متغیر MainNode متغیر ChildNode را ست می کنیم . توجه داشته باشید که اگر بخواهید یک شاخه فرعی یا گره رو به یک تنه ( که در اینجا اسم تنه Main هست) متصل کنیم باید به صورت زیر عمل کنیم:
    [TABLE]
    [TR]
    [TD="class: gutter"]1
    [/TD]
    [TD="class: code"]Set ChildNode = TreeView1.Nodes.Add("Main" , tvwChild , "Node1" , "Node1") 'x

    [/TD]
    [/TR]
    [/TABLE]



    همون طور که در خط بالا می بینید آرگومان اول Nodes.Add را برابر اسم تنه گذاشتیم و در آرگومان دوم از ثابت tvwChild استفاده کردیم که نشان دهنده این است که گره ای که قرار است اضافه شود زیر شاخه Main است. آرگومان سوم کلمه کلیدی یا یک شناسه است که برای گره ای که ساخته ایم قرار میدهیم در آرگومان چهارم هم خاصیت Text یا به عبارت دیگر کلمه ای که قرار است نمایش داده شود را اضافه کردیم.

    در این حالت هم شما می تونید به تعداد دلخواه گره درست کنید فقط باید "Node1" رو در دو آرگومان آخر تغییر بدین.

    توضیحات بالا در کل به این صورت است:
    [TABLE]
    [TR]
    [TD="class: gutter"]1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [/TD]
    [TD="class: code"]Private Sub Form_Load() 'x

    Dim MainNode as Node
    Dim ChildNode as Node

    Set MainNode = TreeView1.Nodes.Add(,, "Main" , "Main") 'x
    Set ChildNode = TreeView1.Nodes.Add ( "Main" , tvwChild , "Node1" , "Node1") 'x

    End Sub

    [/TD]
    [/TR]
    [/TABLE]



    برای اینکه خوب بتونم آموزشم رو کامل کنم از یکی دو تا مثال استفاده می کنم.
    نمایش درایو های موجود در My Computer .
    یک پروژه جدید از نوع استاندارد باز کنید سپس یک کنترل TreeView به فرم برنام اضافه کنید و خاصیت آن را برابر TreeView1 قرار دهید .
    حالا روی فرم برنامه دابل کلیک کنید تا روال Form_Load باز شود . کدهای زیر رو بنویسید.
    [TABLE]
    [TR]
    [TD="class: gutter"]1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    [/TD]
    [TD="class: code"]Private Sub Form_Load()

    Dim N as Node
    Dim FSO , Drives
    Set N = TreeView1.Nodes.Add(, , "HD" , "My Computer") 'x
    set Fso = CreateObject("Scripting.FileSystemObject") 'x
    Set Drives = Fso.Drives

    For Each Drive In Drives
    If Drive.isready then Set N = TreeView1.Nodes.Add("HD" , tvwChild , drive , drive) 'x
    Next

    End Sub

    [/TD]
    [/TR]
    [/TABLE]
     
  5. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,323
    تشکر شده:
    2,698
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    پاسخ : یه سری آموزش های فوق العاده جالب برای دوستان عزیز

    این هم یه پروپرتی Override شده برای سایه دار کردن فرم ها . زمانی که یه کنترل خواستید بسازید این تکه کد خیلی به دردتون میخوره :
    [TABLE]
    [TR]
    [TD="class: gutter"]1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [/TD]
    [TD="class: code"]Private Const CS_DROPSHADOW As Integer = 131072
    ' Override the CreateParams property
    Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams
    Get
    Dim cp As CreateParams = MyBase.CreateParams
    cp.ClassStyle = cp.ClassStyle Or CS_DROPSHADOW
    Return cp
    End Get
    End Property

    [/TD]
    [/TR]
    [/TABLE]
     
  6. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,323
    تشکر شده:
    2,698
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    پاسخ : یه سری آموزش های فوق العاده جالب برای دوستان عزیز

    فضانام My در Visual Basic

    Visual Basic همواه خصوصیات و امکانات جدیدی به منظور توسعه سریع نرمافزار که باعث بهبود بهرهوری، سهولت در استفاده و بالا بردن قدرت برنامه­نویسان میشود، ارائه مینماید. یکی از این امکانات My نام دارد. My امکان دسترسی به اطلاعاتی در مورد پروژه در حال اجرا و همچنین محیطی که پروژه در آن در حال اجرا میباشد را فراهم میسازد. مزیت مهم دیگر My در این است که به راحتی میتوان در قالب لیستهای پیشنهادی « IntelliSense » با امکانات آن کار کرد.
    بالاترین سطح My، توسط اشیائی نشان داده میشود. هر کدام از این Objectها مانند یک فضانام و یا یک کلاس با اعضای Shared عمل مینمایند. در جدول زیر اشیاء سطح اول My و ارتباطات داخلی آنها مشخص شده است:



    اعضای My عبارتند از:

    Application: حاوی اطلاعاتی جامع و کاربردی در مورد پروژه جاری.

    Computer: با این گزینه میتوان به خصوصیات و اطلاعات جامعی در مورد سخت افزارهای متصل به سیستم دست یافت.

    Forms: با استفاده از این گزینه میتوان به تمامی فرمهای موجود در پروژه و طبعاً اطلاعات درونی آنها دست پیدا کرد.

    Settings: از متدهای موجود در این گزینه میتوان تنظیمات پروژه را دستکاری نمود.

    User: از این خصوصیت برای بدست آوردن اطلاعات در مورد کاربر جاری سیستم استفاده میشود.

    Webservices: این خصوصیت برای فراهم کردن امکاناتی به منظور ایجاد و دستیابی به یک نمونه از وب سرویسهای XML که توسط پروژه جاری به آنها ارجاع شده است استفاده میکنیم.

    Computer

    این خصوصیت یکی از پرکاربردترین خصوصیات My می باشد. با به کارگیری این گزینه میتوان به راحتی هر چه تمامتر به اطلاعاتی در مورد وضعیت سخت­افزارهای متصل به سیستم درست پیدا کرد. این کار در یک خط کد و بدون انجام کارهای اضافی توسط برنامهنویس، صورت میپذیرد. به عنوان مثال برای اینکه متوجه شویم ماوس متصل به سیستم اسکرولدار است به راحتی میتوان از کد زیر استفاده کرد:

    MsgBox(My.Computer.Mouse.WheelScrollLines)

    از طریق Computers میتوان به سختافزارهایی مانند KeyBoard، Mouse، Audio و ... به راحتی دست پیدا کرد.

    در ادامه چندین خصوصیت از computers را بررسی می كنیم:

    1. Mouse: این شئ دارای 3 خصوصیت به شرح زیر میباشد:

    ButtonsSwapped: تعیین جابجا شدن کلیک چپ و راست ماوس.

    WheelExists: تعیین اسکرولدار بودن ماوس.

    WheelScrollLines: تعیین تعداد سطوری که با یک بار حرکت ماوس رد می­شوند.

    2. Keyboard: این شئ دارای 6 خصوصیت و یک متد می باشد:

    AltKeyDown: تعیین میکند که آیا کلید Alt پایین نگه داشته شده است یا نه؟!

    CtrlKeyDown: پایین بودن کلید Ctrl را بررسی می کند.

    ShiftKeyDown: تعیین پایین و یا بالا بودن کلید Shift.

    NumLock، CapsLock و ScrollLock: تعیین فعال یا غیرفعال بودن کلیدهای مرتبط.

    متد ()SendKeys: از این متد برای ارسال ضربات کلید به محیط سیستم عامل استفاده میشود. به عنوان مثال ("+%")My.Computer.Keyboard.SendKeys باعث ارسال ضربات کلید Alt و Shift به سیستم میگردد. لذا زبان سیستم شما تغییر میکند. البته اگر بیش از یک زبان وجود داشته باشد.

    3. Name: این خصوصیت از شئ Computer حاوی نام کامپیوتر است.

    4. Screen: اطلاعات در مورد صفحه نمایش را در اختیار برنامهنویس قرار میدهد. این کلاس حاوی خصوصیات متعددی است که عبارتند از:

    BitsPerPixel: میزان Color فعلی ویندوز را نشان میدهد. به عنوان مثال اگر این گزینه در ویندوز بر روی True Color (32 Bit) تنظیم باشد، عدد 32 و اگر بر روی High Color (16 Bit) تنظیم باشد عدد 16 برگشت داده می شود.

    Bounds: حاوی خصوصیاتی به منظور تعیین محدوده کاری تنظیم شده می­باشد.

    DeviceName: نامی که در سیستم برای مانیتور در نظر گرفته شده است را نمایش میدهد.

    Primary: اگر دستگاه نمایش فعلی، دستگاه پیشفرض باشد true برگشت می دهد

    WorkingArea: این گزینه اطلاعاتی راجع به میزان محیط کاری فعال در ویندوز را در بر دارد. تفاوت این گزینه با Bounds در این است که در Bounds مختصات کلی نمایش داده میشود اما در این گزینه، محیطی که واقعا میتوان از آن به عنوان Desktop استفاده کرد برگشت داده میشود. مثلاً در این گزینه ارتفاع نوار TaskBar از ارتفاع صفحه کسر میشود.

    5. Clock: با استفاده از این شئ میتوان اطلاعات مفیدی در مورد ساعت سیستم بدست آورد. خصوصیات این شئ عبارتند از:

    LocalTime: زمان جاری سیستم را برگشت میدهد.

    GmtTime: زمان جاری سیستم را براساس زمان جاری GMT بیان میکند.

    TickCount: مدت زمانی سپری شده از روشن بودن سیستم براساس میلی ثانیه را برگشت میدهد.

    6. Audio: از این شئ برای پخش صوت دلخواه و همچنین صوتهای پیش فرض ویندوز میتوان استفاده کرد. این شئ فقط دارای 3 متد است:

    Play: این متد دارای 4 سربارگذاری بوده و با آن میتوان یک فایل صوتی استاندارد را پخش نمود. برای این متد میتوان اطلاعات مسیر ذخیره سازی فایل را ارسال کرد و یا اطلاعات باینری موسیقی را ارسال نمود و یک Stream حاوی موسیقی ارسال نمود. همچنین نحوه پخش شدن را میتوان تنظیم کرد. میتوان کاری کرد که تا اتمام آهنگ فعالیتی صورت نگیرد و یا اینکه موسیقی در پس زمینه اجرا شود و کاربر بتواند به تعامل با برنامه ادامه دهد.

    PlaySystemSound: از این متد برای پخش یکی از صداهای پیش فرض در ویندوز استفاده میکنیم. این متد دارای یک پارامتر است و برای مقداردهی آن از لیست پیشنهادی که باز میشود میتوانید استفاده کنید و یا اینکه یکی از اعضای Media.SystemSounds را ارسال کنید. به عنوان مثال Media.SystemSounds.Beep باعث پخش صدای بوقی از سیستم میشود.

    Stop: پخش موسیقی را کنسل میکند.

    7. FileSystem: این شئ حاوی متدهای فراوانی برای مدیریت فایلها و پوشه­ها میباشد. به علت سادگی و همخوانی نام متدها با عملی که انجام میدهند از ذکر آنها خودداری میکنیم. در این فایل چندین خصوصیت کاربردی به منظور یافتم مسیر جاری اجرای برنامه و ... نیز گنجانده شده است. مثلا My.Computer.FileSystem.CurrentDirectory مسیر جاری اجرای برنامه را برمی­گرداند. و یا از شئ Drives در این شئ برای مدیریت درایوهای کامپیوتر استفاده میشود. همچنین خصوصیت تحت عنوان SpecialDirectories در این شئ وجود دارد که آدرس پوشههای مهم سیستم مانند Desktop، ProgramFiles، Windows، Temp، Programs و ... را برگشت میدهد.

    8. Network: این شئ حاوی متدها و خصوصیاتی برای کنترل شبکه می­باشدو با متدهای موجود در این شئ میتوانید اقدام به دانلود و ... نیز بکنید.

    9. Port: حاوی اطلاعات راجع به پورتهای سیستم و همچنین تعامل با آنها.

    10. ClipBoard: حاوی متدهایی برای کنترل و دستکاری کلیپ بورد سیستم. مثلا با متد ContainsText() میتوان پی برد که اگر گزینه Paste در برنامه فشار داده شود آیا متن در حافظه وجود دارد یا خیر؟ متدهای این کلاس به صورت خلاصه عبارتند از:

    ()Clear: پاک کردن حافظه کلیپبورد.

    ContainsText()، ContainsAudio و متدهایی که با Contains آغاز میشوند: بررسی اینکه شئ موجود در حافظه از نوع مد نظر می باشد یا نه؟

    متدهای Get: از این متدها برای دریافت اطلاعات موجود در حافظه متناسب با نوع متد برگشت میدهد

    متدهای Set: میتوان حافظه را از درون برنامه در حال اجرا ست نمود.

    11. Info: این شئ حاوی اطلاعاتی کلی در مورد سیستم است. اطلاعاتی از قبیل نام کامل سیستم عامل، میزان کل حافظه Ram و حافظه مجازی، میزان در دسترس این حافظهها، نوع سیستم عامل و ورژن سیستم عامل و ... . به عنوان مثال (MsgBox(My.Computer.Info.OSFullName نام کامل سیستم عامل را نمایش میدهد

    12. Registery: حاوی متدهایی برای کار با رجیستری میباشد. از متدها و اشیاء درونی این شئ برای دستکاری قسمتهای مختلف Registery میتوان استفاده کرد.
     
  7. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,323
    تشکر شده:
    2,698
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    پاسخ : یه سری آموزش های فوق العاده جالب برای دوستان عزیز

    با این کد می تونید یک فایل رو در شبکه با استفاده از وینسوک ارسال کنید :
    [TABLE]
    [TR]
    [TD="class: gutter"]1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    [/TD]
    [TD="class: code"]Public Sub SendData(ByVal sFile As String, ByVal sSaveAs As String, ByVal tcpSend As Winsock)

    On Error GoTo ErrHandler

    Dim sSend As String, sBuf As String

    Dim ifreefile As Integer

    Dim lRead As Long, lLen As Long, lThisRead As Long, lLastRead As Long

    Dim strData As String

    tcpSend.GetData(strData)

    ifreefile = FreeFile



    ' Open file for binary access:

    Open sFile For Binary Access Read As #ifreefile

    lLen = LOF(ifreefile)



    ' Loop through the file, loading it up in chunks of 64k:

    Do While lRead < lLen

    lThisRead = 65536

    If lThisRead + lRead > lLen Then

    lThisRead = lLen - lRead

    End If

    If Not lThisRead = lLastRead Then

    sBuf = Space$(lThisRead)

    End If

    Get #ifreefile, , sBuf

    lRead = lRead + lThisRead

    sSend = sSend & sBuf

    sBuf = Space$(0)

    Loop

    lTotal = lLen

    Close(ifreefile)

    bSendingFile = True

    '// Send the file notification

    tcpSend.SendData("FILE" & sSaveAs)

    DoEvents()

    '// Send the file

    tcpServer.SendData(sSend)

    DoEvents()

    '// Finished

    tcpSend.SendData("FILEEND")

    bSendingFile = False

    MMControl1.FileName = "FileDone.wav"

    MMControl1.Command = "Open"

    MMControl1.Command = "Play"

    Exit Sub

    ErrHandler:

    MsgBox "Err " & Err & " : " & Error

    End Sub



    Private Sub tcpServer_DataArrival(ByVal bytesTotal As Long)

    Dim strData As String

    Dim ifreefile



    ' DoEvents

    tcpServer.GetData(strData)

    If Right$(strData, 7) = "FILEEND" Then

    bFileArriving = False

    lblProgress = "Saving File to " & App.Path & "\" & sFile

    sArriving = sArriving & Left$(strData, Len(strData) - 7)

    ifreefile = FreeFile

    MMControl1.FileName = "File.wav"

    MMControl1.Command = "Open"

    MMControl1.Command = "Play"

    Open sFile For Binary Access Write As #ifreefile

    Put #ifreefile, 1, sArriving

    Close #ifreefile

    ShellExecute 0, vbNullString, App.Path & "\" & sFile,

    vbNullString, vbNullString, vbNormalFocus

    lblProgress = "Complete"

    ElseIf Left$(strData, 4) = "FILE" Then

    bFileArriving = True

    sFile = Right$(strData, Len(strData) - 4)

    ElseIf bFileArriving Then

    lblProgress = "Receiving " & bytesTotal & " bytes for " & sFile & ""

    >from " & tcpServer.RemoteHostIP

    sArriving = sArriving & strData

    MMControl1.FileName = "FileDone.wav"

    MMControl1.Command = "Open"

    MMControl1.Command = "Play"

    End If

    End Sub

    [/TD]
    [/TR]
    [/TABLE]
     
  8. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,323
    تشکر شده:
    2,698
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    پاسخ : یه سری آموزش های فوق العاده جالب برای دوستان عزیز

    با این آموزش شما میتونید یه سری اطلاعات رو یه جای خاص از رجیستری ذخیره کنید که مثلا برای ثبت تنظیمات کاربر میتونید مورد استفاده قرار بدید. به نظر من خیلی کاربردی هست :
    ذخیره اطلاعات :
    [TABLE]
    [TR]
    [TD="class: gutter"]1
    2
    3
    4
    [/TD]
    [TD="class: code"]FontName=GetSetting(My.Application.Info.AssemblyNa me, "Appearance", "Font","")

    ColorName=GetSetting(My.Application.Info.AssemblyN ame, "Appearance", "Color","")

    [/TD]
    [/TR]
    [/TABLE]



    بازیابی اطلاعات :
    [TABLE]
    [TR]
    [TD="class: gutter"]1
    2
    3
    4
    [/TD]
    [TD="class: code"]FontName=GetSetting(My.Application.Info.AssemblyNa me, "Appearance", "Font","")

    ColorName=GetSetting(My.Application.Info.AssemblyN ame, "Appearance", "Color","")

    [/TD]
    [/TR]
    [/TABLE]





    مکان ذخیره :
    HKEY_CURRENT_USER\Software\VB and VBA Program Settings
     
  9. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,323
    تشکر شده:
    2,698
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    پاسخ : یه سری آموزش های فوق العاده جالب برای دوستان عزیز

    تولید اعداد تصادفی در بازه خاص :
    [TABLE]
    [TR]
    [TD="class: gutter"]1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    [/TD]
    [TD="class: code"]Public Command As String
    Public Permission As String
    Public DB1 As Database
    Public RS1 As Recordset
    Public SL As String 'Select Lesson
    Public Cl As String 'Code of Collegian
    Public asd As String
    Option Explicit

    '//===============================================
    '//This function create Random number in special range
    '//Count ==> count of number that must created
    '//Min ==> Minimume of number that can be created
    '//Max ==> Maximume of number that can be created
    '//Result() ==> A byref array for put result in it and return to user

    Public Function Random_X(ByVal Count As Long, ByVal Min As Long, ByVal Max As Long, ByRef Result() As Long, ByVal Sort_Array As Boolean) As Boolean
    Dim i As Long
    Dim Top_Array As Long
    Dim Rand_Num As Long
    Randomize '//Randomize Timer
    '//============================
    '//First check that count in range (MAX-MIN)
    If Count > (Max - Min) Then
    Random_X = False
    Exit Function
    Else
    Random_X = True
    End If
    '//============================
    Top_Array = 0
    ReDim Result(Count - 1) '//Redim Empty Array and Fit it to Count
    For i = LBound(Result) To UBound(Result)
    Repeat:
    Rand_Num = Rnd() * Max
    Rand_Num = Rand_Num + Max '//Go Number larger than max
    Do While (Rand_Num < Min Or Rand_Num > Max)
    Rand_Num = Rand_Num - (Max - Min) '// IF Rand number is out of range , come it in range
    Loop
    If In_Array_X(Result, Rand_Num, i) = False Then '//IF Not exist then push it into array
    Result(i) = Rand_Num
    Else
    GoTo Repeat
    End If
    Next
    If Sort_Array = True Then Sort Result '//If Sort =True then Sort result array
    End Function

    '//=======================================
    '//This function get a byref array and a num
    '//Check the num exist in array

    Public Function In_Array_X(ByRef Arr_Name() As Long, ByVal Num As Long, ByVal Top_Arr As Long) As Boolean

    Dim i As Long

    In_Array_X = False

    If Top_Arr > UBound(Arr_Name) Then Top_Arr = UBound(Arr_Name)

    For i = LBound(Arr_Name) To Top_Arr

    If Arr_Name(i) = Num Then

    In_Array_X = True
    Exit For

    End If

    Next

    End Function
    '//=======================================
    '//This Function get a byref array and sort it

    Public Sub Sort(ByRef Sort_Arr() As Long)
    Dim i As Long, j As Long
    Dim Temp As Long
    For i = UBound(Sort_Arr) - 1 To LBound(Sort_Arr) Step -1
    For j = 0 To i Step 1
    If Sort_Arr(j) > Sort_Arr(j + 1) Then
    Temp = Sort_Arr(j)
    Sort_Arr(j) = Sort_Arr(j + 1)
    Sort_Arr(j + 1) = Temp
    End If
    Next
    Next
    End Sub

    [/TD]
    [/TR]
    [/TABLE]



    طرز استفاده از تابع :
    [TABLE]
    [TR]
    [TD="class: gutter"]1
    2
    3
    4
    5
    6
    [/TD]
    [TD="class: code"]Dim IfSuccess As Boolean
    Dim Result() As Long

    IfSuccess = Random_X(1, 100, 1000, Result, True)
    Text1.Text = Result(0

    [/TD]
    [/TR]
    [/TABLE]
     
  10. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,323
    تشکر شده:
    2,698
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    پاسخ : یه سری آموزش های فوق العاده جالب برای دوستان عزیز

    انجام اعمال متداول در رجیستری خیلی جالبه :
    [TABLE]
    [TR]
    [TD="class: gutter"]1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    [/TD]
    [TD="class: code"]Imports Microsoft.Win32





    Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click

    ' // Create SubKey

    Registry.LocalMachine.CreateSubKey("Software\Sinpi n", RegistryKeyPermissionCheck.ReadWriteSubTree)



    '//Create Key and Set Value

    Dim reg As RegistryKey = Registry.LocalMachine.OpenSubKey("Software\Sinpin" , True)

    reg.SetValue("DWord", "1", RegistryValueKind.DWord)

    reg.SetValue("ExpandString", "1", RegistryValueKind.ExpandString)

    reg.SetValue("QWord", "1", RegistryValueKind.QWord)

    reg.SetValue("String", "1", RegistryValueKind.String)

    reg.SetValue("Unknown", "1", RegistryValueKind.Unknown)



    '// Delete Key

    reg.DeleteValue("DWOrd")



    '// Delete SubKey

    Registry.LocalMachine.DeleteSubKey("Software\Sinpi n")



    '// Read Key Value

    Dim val As String = reg.GetValue("QWord").ToString()



    '// Retrieve All Keys

    For Each s As String In reg.GetValueNames()

    MessageBox.Show(s)

    Next



    End Sub

    [/TD]
    [/TR]
    [/TABLE]