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

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

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

  1. hector2141

    hector2141 کاربر ارشد

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

    چطور مي توان از Desktop عكس گرفت
    اين خط رو در اولين خط كد فرم بنويسيد-براي مبتدي ها

    Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
    Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
    Private Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long

    طريقه استفاده
    Private Sub Form_load()
    Dim W, H
    W = Screen.Width / 15
    H = Screen.Height / 15
    StretchBlt hdc, 0, 0, W, H, GetDC(0&), 0, 0, W, H, vbSrcCopy
    End Sub

    كشيدن يك دايره روي فرم با كد نويسي-نمودار دايره اي-بيضي
    Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    PI = 3.14159265
    For i = 0 To 161 Step 10
    Me.Circle (219, 167), i, RGB(0, 0, 0), 360 * (PI / 180), 360 * (PI / 180), 1
    Next
    End Sub

    آنرا به 3 تغيير دهيد.داشتم مي گفتم پارامتر سوم براي شعاع دايره -اندازه آن-پارامتر چهارمscalmode توضيحات: پارامتر اول ودوم مكان ترسيم دايره اگر دايره در فرم شما رسم نشد خاصيت
    براي رنگ پنجم براي نقطعه شروع وششم براي نقطه ي پايان اين دو تا براي رسم نمودار دايره اي بكار مي روند.پارامتر آخر هم براي رسم بيضي استفاده مي شود

    چگونه مي توان يك مداد درست كرد مانند برنامه نقاشي ويندوز
    كد زير را در MouseMove بنويسيد
    If Button <> vbright Then Me.PSet (X, Y)

    چطور مي توان يك قطره چكان درست كرد كه روي هر گزينه رفت رنگ پيش فرض رنگ انجا شود
    عكس بنويسيدMouseMoveبه فرم اضافه كنيد يك عكس داخل كادر عكس قرار دهيد و كدزير را در رويدادPictureويكLabelيك

    Label1.BackColor=Picture1.Point(X,Y)

    چطور مي توان يك عكس را معكوس كرد
    منظورت ازمعكوس اگه معكوس خود عكس در طراحي باشه كد زير جوابش هست

    With Picture1
    .PaintPicture .Picture, 0, .Height, .Width, -.Height
    End With

    ولي اگه منظورت معكوس رنگ باشه كد زير جوابش هست
    With Picture1
    .PaintPicture .Picture, 0, 0, , , , , , , vbDstInvert
    End With

    يراي موقعي به كار مي رود كه از يك اسم زياداستفاده مي كنيم.اسم را جلوي آن مينويسيم وهر وقت يك دات بزنيم قابل استفاده استWithتوضيحات:ِ
    پارامتر اول يراي عكسي كه ميخواهيم از آن براي ترسيم استفاده كنيم.دوم و سوم براي نقطه شروع ترسيم .چهارم و پنجم براي اندازه تصوير ترسيمي.ششموهفتم براي نقطه پايان ترسيم.هشتم ونهم براي اندازه هاي پاياني ترسيم وپارامتر آخر براي نوع ترسيم
     
  2. hector2141

    hector2141 کاربر ارشد

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

    کنترل CPU خیلی جالبه

    يک فرم ايجاد كنيد و يه هفت تا ليبل بزارين روش با يه تايمر و يه HScroll
    خاصيت Max مربوط به اسكرول رو روي 100 بزارين
    خاصيت Interval تايمر رو روي 50 بزارين

    اين كدها رو اولين خط فرم بنويسيد

    '----------Type New Data For Memory------------------
    Private Type MEMORYSTATUS
    dwlength As Long
    dwMemoryLoad As Long
    dwTotalPhys As Long
    dwAvailPhys As Long
    dwTotalPageFile As Long
    dwAvailPageFile As Long
    dwTotalVirtual As Long
    dwAvailVirtual As Long
    End Type '------------------Declear API Of Kernal Windows Librery-------------
    Private Declare Sub GlobalMemoryStatus Lib "KERNEL32" (lpBuffer As MEMORYSTATUS)
    Dim Mem As MEMORYSTATUS

    روي تايمر دابل كليك كنيد و كد زير را بنويسيد

    GlobalMemoryStatus Mem
    Me.Caption = Mem.dwMemoryLoad & "% used"
    Label1.Caption = "Memory used: " & Mem.dwMemoryLoad & "%"
    Label2.Caption = "Total Physical Memory: " & Mem.dwTotalPhys
    Label3.Caption = "Available Physical Memory: " & Mem.dwAvailPhys
    Label4.Caption = "Page File Bytes: " & Mem.dwTotalPageFile
    Label5.Caption = "Available bytes of Page File: " & Mem.dwAvailPageFile
    Label6.Caption = "Total Virtual bytes: " & Mem.dwTotalVirtual
    Label7.Caption = "Available Virtual Bytes: " & Mem.dwAvailVirtual
    HScroll1.Value = Mem.dwMemoryLoad

    با كداي بالا مي تونين كاركرد CPU و RAM رو مشاهده كنيد مثل خود ويندوز
     
  3. hector2141

    hector2141 کاربر ارشد

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

    چطور ميتوان سطل آشغال ويندوز رو خالي كرد

    اگه بخوايد يك برنامه تقويت ويندوز بنويسيد به گزينه خالي كردن سطل آشغال ويندوز نياز خواهيد داشت
    سري قبل اين اموزش رو در مورد كنترل سي پي يو (تاكس منيگر)ويندوز نوشتم
    براي اين كار بايد از تابعي موجود در كتابخانه قدرتمند شل كه در آرشيو اموزشهاي زيادي راجع به اين كتابخانه هست استفاده كنيد

    شيوه ي تعريف كتابخانه

    Private Declare Function SHEmptyRecycleBin Lib "shell32.dll" Alias "SHEmptyRecycleBinA" (ByVal hWnd As Long, ByVal pszRootPath As String, ByVal dwFlags As Long) As Long
    Const SHERB_NOPROGRESSUI = &H2

    شيوه ي استفاده

    Private Sub Command1_Click()
    Dim retvaL
    retvaL = SHEmptyRecycleBin(Form1.hWnd, "", SHERB_NOPROGRESSUI)
    End Sub
     
  4. hector2141

    hector2141 کاربر ارشد

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

    چطور مي توان كادر خصوصيات Propertis مربوط به يك فايل را ظاهر كرد

    كادر خصوصيات اكثرآ در نوشتن يك كاد آرشيو يا ليست فايل كاربرد دارد كه شما روي نام فايل راست كليك مي كنيد و اين گزينه را معمولآ در انتهاي ليست انتخاب مي كنيد واين كادر ظاهر ميشود نوشتن چنين كد هايي باعث حرفه شدن برنامه ي شما مي گردد

    به ماژولمان كد هاي زير را اضافه كنيد

    '------Typing New data For Propertis File---------------------
    Type SHELLEXECUTEINFO
    cbSize As Long
    fMask As Long
    hwnd As Long
    lpVerb As String
    lpFile As String
    lpParameters As String
    lpDirectory As String
    nShow As Long
    hInstApp As Long
    lpIDList As Long
    lpClass As String
    hkeyClass As Long
    dwHotKey As Long
    hIcon As Long
    hProcess As Long
    End Type
    '---------------Conset For Propertis Dialog-------------------
    Public Const SEE_MASK_INVOKEIDLIST = &HC
    Public Const SEE_MASK_NOCLOSEPROCESS = &H40
    Public Const SEE_MASK_FLAG_NO_UI = &H400
    Public Const ATTR_NORMAL = 0
    Public Const ATTR_READONLY = 1
    Public Const ATTR_HIDDEN = 2
    Public Const ATTR_SYSTEM = 4
    Public Const ATTR_VOLUME = 8
    Public Const ATTR_DIRECTORY = 16
    Public Const ATTR_ARCHIVE = 32
    '-----------------------Declareing API------------------------------------------
    Declare Function ShellExecuteEX Lib "shell32.dll" Alias _
    "ShellExecuteEx" (SEI As SHELLEXECUTEINFO) As Long

    '-----------------------------------------------------------------------------------------

    Public Function ShowFileProperties(filename As String, OwnerhWnd As Long) As Long
    Dim SEI As SHELLEXECUTEINFO
    With SEI
    .cbSize = Len(SEI)
    .fMask = SEE_MASK_NOCLOSEPROCESS Or SEE_MASK_INVOKEIDLIST Or SEE_MASK_FLAG_NO_UI
    .hwnd = OwnerhWnd
    .lpVerb = "properties"
    .lpFile = filename
    .lpParameters = vbNullChar
    .lpDirectory = vbNullChar
    .nShow = 0
    .hInstApp = 0
    .lpIDList = 0
    End With
    ShellExecuteEX SEI
    ShowFileProperties = SEI.hInstApp
    End Function

    حالا هر فايلي را كه مي خواهيد خصوصيياتش نمايش داد شود به اين تابع به صورت زير ارسال كنيد-پاس دهيد
    ShowFileProperties(FileName,Me.hwnd)
     
  5. hector2141

    hector2141 کاربر ارشد

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

    اموزش یک کار جالب با فرم ها
    تنها با دو خط كد ميتونيد جلوه اي رو بوجود بياريد كه فكرشم نمي كرديد. يك فرم رو توي يك فرم ديگه جابديد. استفاده هاي زيادي ميشه ازش كرد. مثلا ساخت نوار ابزارهايي مثل اوني كه فتوشاپ داره. راجع بهش فكر كنيد
    اين هم كدش

    Private Declare Function SetParent Lib "user32" ( _
    ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long

    Private Sub Form_Load()
    SetParent Form2.hWnd, hWnd
    Form2.Show
    End Sub
     
  6. hector2141

    hector2141 کاربر ارشد

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

    با اين تابع مي تونيد آيكون هاي روي دسكتاپ رو مخفي و ظاهر كنيد

    اول فراخواني توابع

    Option Explicit
    Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
    Private Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long

    بعد سه تا كامند براي ظاهر كردن آيكون ها مخفي كردن آنها و خروج از فرم بنويسيد

    كد هر كدام اينطور است

    Private Sub cmdDHide_Click()
    Dim hWnd As Long
    hWnd = FindWindowEx(0&, 0&, "Progman", vbNullString)
    ShowWindow hWnd, 0
    End Sub'--------------------------------
    Private Sub cmdDShow_Click()
    Dim hWnd As Long
    hWnd = FindWindowEx(0&, 0&, "Progman", vbNullString)
    ShowWindow hWnd, 5
    End Sub'---------------------------------
    Private Sub cmdExit_Click()
    Me.Hide
    End
    End Sub'-------------------------------------
     
  7. hector2141

    hector2141 کاربر ارشد

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

    مخفي كردن منوي Start
    براي مخفي كردن منوي Start به يك تابع از كتابخانه user32.dll احتياج داريد

    Option Explicit

    Dim hwnd1 As Long
    Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, _
    ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, _
    ByVal cy As Long, ByVal wFlags As Long) As Long
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
    (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

    Const SWP_HIDEWINDOW = &H80
    Const SWP_SHOWWINDOW = &H40

    حالا بايد دو تا دكمه براي مخفي و آشكار كردن منوي Startبه فرم اضافه كنيد

    كد مخفي كردن Start
    Hwnd1=FindWindow("Shell_traywnd","")
    call SetWindowPos(Hwnd1,0,0,0,0,0,SWP_HIDEWINDOW)

    كد ظاهر كردن Start
    call SetWindowPos(Hwnd1,0,0,0,0,0,SWP_SHOWWINDOW)
     
  8. hector2141

    hector2141 کاربر ارشد

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

    با اين برنامه مي تونين دو تا تصوير رو روي هم بندازيد و حركت بدين
    تصاويرتون بايد JPG باشه و بزرگ نباشه.دستورات زير رو در قسمت General فرم بنويسيد

    Dim Image1 As IPictureDisp
    Dim Image2 As IPictureDisp

    Private Type Location
    X As Integer
    Y As Integer
    End Type

    Dim Image1Move As Integer
    Dim Image2MoveX As Integer
    Dim Image2MoveY As Integer
    Dim Image1Local As Location
    Dim Image2Local As Location
    Const Operation = vbSrcAnd

    دو تا عكس رو در مسير برنامه كپي كنيد اسمشون هم 1 و 2 باشه

    كد زير برای Form_Load هست

    ("Set Image1 = LoadPicture(App.Path & "\Image1.jpg
    ("Set Image2 = LoadPicture(App.Path & "\Image2.jpg
    With me
    .Show
    Refresh.
    .AutoRedraw = True
    .ScaleMode = vbPixels
    End With

    Image1Move = 1
    Image2MoveX = 3
    Image2MoveY = 3

    Do
    me.PaintPicture Image1, Image1Local.X, Image1Local.Y
    me.PaintPicture Image1, Image1Local.X + me.ScaleWidth, Image1Local.Y
    me.PaintPicture Image1, Image1Local.X, Image1Local.Y + me.ScaleHeight
    me.PaintPicture Image1, Image1Local.X + me.ScaleWidth, Image1Local.Y + me.ScaleHeight

    me.PaintPicture Image2, Image2Local.X, Image2Local.Y, , , , , , , Operation
    me.PaintPicture Image2, Image2Local.X + me.ScaleWidth, Image2Local.Y, , , , , , , Operation
    me.PaintPicture Image2, Image2Local.X, Image2Local.Y + me.ScaleHeight, , , , , , , Operation
    me.PaintPicture Image2, Image2Local.X + me.ScaleWidth, Image2Local.Y + me.ScaleHeight, , , , , , , Operation

    With Image1Local
    .X = .X - Image1Move
    .Y = .Y - Image1Move

    If .X < -me.ScaleWidth Then .X = 0
    If .Y < -me.ScaleHeight Then .Y = 0
    End With

    With Image2Local
    .X = .X - Image2MoveX
    .Y = .Y - Image2MoveY

    If .X < -me.ScaleWidth Then .X = 0
    If .Y < -me.ScaleHeight Then .Y = 0

    If .X + me.ScaleWidth > me.ScaleWidth Then .X = -me.ScaleWidth
    If .Y + me.ScaleHeight > me.ScaleHeight Then .Y = -me.ScaleWidth
    End With

    DoEvents
    Loop

    براي اينكه دستورات بالا داخل يک حلقه بي پايان قرار مي گيره بايد در رويداد كليك فرم بنويسيد
    End

    فرم رو زياد بزرگ نكنيد سعي كنيد تصويرها هم اندازه باشند و فرم هم اندازه تصوير ها
    براي اينكه در حركت عكس ها تنوع ايجاد كنيم در رويداد MouseMove فرم دستور زير رو بنويسيد

    Image2MoveX = Int(me.ScaleWidth \ 2 - X) \ 10
    Image2MoveY = Int(me.ScaleWidth \ 2 - Y) \ 10
     
  9. hector2141

    hector2141 کاربر ارشد

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

    بدست آوردن IP و نام سيستم ميزبان

    برای امروز قصد دارم يک پروژه ساده را به شما معرفی کنم.

    شما ظرف چند دقيقه ميتوانيد اين پروژه را در ويژوال بيسيک بسازيد.

    ابتدا ويژوال بيسيک را باز کنيد سپس کنترلر های زير را روی فرم قرار دهيد :

    دو عدد TextBox و دو عدد WinSock

    حالا روی فرم دو بار کليک کرده و در رويداد لود فرم کدهای زير را وارد کنيد :

    Text1.Text = Winsock1.LocalIP
    Text2.Text = Winsock2.LocalHostName

    برنامه را اجرا کنيد . اين برنامه آی پی و پورت سيستم ميزبان را در اختيار شما قرار ميدهد.
     
  10. hector2141

    hector2141 کاربر ارشد

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

    بستن پنجره با گرفتن عنوان ان

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

    در اینجا ما از دو تا تابع API استفاده می کنیم که عبارتند از : FindWindowA برای پیدا کردن پنجره مورد نظر و SetForegroundWindow برای فعال کردن پنجره مورد نظر که هر دوی این توابع در فایل user32.dll تعریف شده اند.

    اول برای تعریف توابع فوق خطوط زیر رو در قسمت General وارد کنید :

    Private Declare Function FindWindowA Lib "user32.dll" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
    Dim Temp As Long

    حالا روی فرمتون یه Timer قرار بدین و خاصیت Interval اون رو به 50 تغییر بدید، بعد روی اون دابل کلیک کنید و کد های زیر رو در Sub مربوط به Timer قرار بدین:

    Temp = FindWindowA(vbNullString, "My Computer")
    If Temp <> 0 Then
    SetForegroundWindow (Temp)
    SendKeys "%{F4}"
    End If

    دستور اول هندل ( لازم به ذکر است که سیستم عامل به هر کنترلی و به هر فرمی شماره ای اختصاص می ده که به این شماره میگن هندل) پنجره ای رو که ( در اینجا ) عنوانش My Computer باشد رو در متغیر Temp می ریزد. شرط بعدی چک می کند که پنجره مورد نظر پیدا شده یا نه که در صورت برقراری این شرط با تابع SetForegroundWindow (که آرگومانش همون شماره ای باید باشه که با تابع FindWindowA پیدا کردیم) پنجره پیدا شده رو فعال می کنه و در نهایت تابع SendKeys زهر خودش رو می ریزه و با ارسال یک کلید میانبر به نام Alt+F4 کاربر عزیز رو در باز کردن پنجره مورد نظرش ناکام می کنه!