تبليغاتX
آموزش رایگان ویژوال بیسیک 6

آموزش رایگان ویژوال بیسیک 6

آموزش حرفه اي ويژوال بيسيک 6 ، اکتيوايکس ( OCX ) ، سورس کد ، پروژه هاي کامل ، پايگاه داده ، مقاله

کار با فايل در ويژوال بيسيک

کار با فايل در ويژوال بيسيک

ساير عمليات کار با فايل :

۱ - حذف فايل : برای حذف يک يا چند فايل از دستور Kill استفاده می شود :
Kill "C:\Temp\MyFile.txt"x
Kill "C:\Temp\*.txt"x

۲ - انتقال فايل : برای انتقال يک فايل از يک دايرکتوری به دايرکتوری ديگر از دستور Name استفاده می شود . مبدا و مقصد بايستی روی يک درايو باشند . اگر دايرکتوری مبدا و مقصد يکی باشد فايل تغيير نام داده می شود :
Name "C:\Temp\File1.txt" To "C:\Temp2\File2.txt"x

۳ - کپی کردن فايل : برای کپی کردن يک فايل از يک دايرکتوری به دايرکتوری ديگر از دستور FileCopy استفاده می شود :
FileCopy "\File1.txt\ To "C:\Temp\File2.txt"x

۴ - بدست آوردن تاريخ و زمان آخرين تغيير فايل و يا زمان ايجاد فايل : برای اين کار از دستور FileDateTime استفاده می شود . ابتدا بايستی يک متغير از نوع Variant تعريف کرده و سپس توسط اين دستور تاريخ و زمان موردنظر را استخراج کنيم :
Dim FileInfo As Variant
FileInfo=FileDateTime("C:\Temp\MyFile.txt")x

۵ - استخراج طول فايل : برای بدست آوردن طول يک فايل بر حسب بايت از دستور FileLen استفاده می شود :
FileSize=FileLen("C:\MyFile.txt")x

۶ - تغيير صفت يک فايل : برای تغيير صفت يک فايل از دستور SetAttr استفاده می شود . پارامترهای اين دستور عبارتند از :
0 : فايل معمولی
2 : فايل مخفی
4 : فايل سيستمی

SetAttr FileNumber,FileAttrib

مقابله با خطاهای کار با فايل :

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

۵۲ : شماره يا نام فايل صحيح نيست
۵۳ : فايل پيدا نشد
۵۴ : حالت فايل صحيح نيست
۵۵ : فايل قبلاً باز شده
۵۸ : فايل از قبل وجود دارد
۵۹ : طول رکورد صحيح نيست
۶۱ : ديسک پر است
۶۲ : عبور از انتهای فايل
۶۳ : شماره رکورد صحيح نيست
۷۰ : دسترسی ممنوع است
۷۱ : ديسک آماده نيست
۷۶ : مسير پيدا نشد

در هنگام مقابله با خطا بهتراست از يک ساختار Select-Case استفاده کنيد :
Select Case Err
Case 71
MsgBox "Drive is Not Ready"x
.
.
.
End Select

+ نوشته شده در  ساعت 20:5  توسط مسعود تنگستانی  | 

شفاف کردن فرم به صورت شیشه ای و مات

شفاف کردن فرم به صورت شیشه ای و مات

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


Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As

Long, ByVal nIndex As Long) As Long

Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As

Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hWnd As Long, ByVal

crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long

Private Sub Command1_Click()
   

Dim Retval As Long
   

Retval = GetWindowLong(hWnd, -20)
   

Retval = Retval Or 524288
   

 SetWindowLong hWnd, -20, Retval
   

 SetLayeredWindowAttributes hWnd, 0, Val(Text1.Text), 2

End Sub

Private Sub Form_Load()
   

Text1.Text = 100
   

 Command1_Click

End Sub

تو TextBox یک عدد از 0 تا 255 وارد کنید و کلید Command1 رو بزنید و شاهد شفاف شدن فرم باشید. فقط توجه داشته باشید که اگه از اعداد پایین مثل 1 استفاده کنید فرمتون تقریباً نامرئی میشه پس بهتون پیشنهاد میکنم تا حد امکان از اعداد بالای 50 استقاده کنید

+ نوشته شده در  ساعت 19:47  توسط مسعود تنگستانی  | 

قرار دادن فرم بر روی تمام پنجره ها (حالت Always On Top برای فرم)

قرار دادن فرم بر روی تمام پنجره ها (حالت Always On Top برای فرم)

با این کد فرم شما بر روی همه پنجره های قرار میگیره، مانند Windows Task Manager که همیشه رو قرار میگیره.

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


Const HWND_TOPMOST = -1

Const HWND_NOTOPMOST = -2

Const SWP_NOSIZE = &H1

Const SWP_NOMOVE = &H2

Const SWP_NOACTIVATE = &H10

Const SWP_SHOWWINDOW = &H40

Private Declare Sub 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)

Private Sub SetTopMost(frm As Form, ByVal blnMod As Boolean)
    If blnMod Then
        SetWindowPos frm.hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
   

Else
        SetWindowPos frm.hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
    End If

End Sub

Private Sub Check1_Click()
    Call SetTopMost(Me, Check1.Value)
End Sub

+ نوشته شده در  ساعت 19:43  توسط مسعود تنگستانی  | 

تبدیل تاریخ میلادی به تاریخ شمسی

تبدیل تاریخ میلادی به تاریخ شمسی

خیلی از شما دوستان دنبال این کد هستید ولی پیدا نمیکنید، خب حالا یک پروژه جدید باز کنید و از منوی Project گزینه ی

Add Module رو انتخاب کنید تا یک Module به فرمتون اضافه بشه و بعد کد زیر رو توش کپی کنید :


Option Explicit

Private Const mcDayOff = 226894
Private mvarGDayTab
Private mvarJDayTab
Private mcSolar As Double

Public Sub GetJalaliDate(ByVal vGYear As Integer, ByVal vGMonth As Integer, ByVal vGDay As Integer, pJYear As Integer, pJMonth As Integer, pJDay As Integer, pDayName As String)

    Dim mGTotalDay As Long
  
    SetConstants
   
    mGTotalDay = GetDayFromFirstGregorianDay(vGYear, vGMonth, vGDay)
    pDayName = GetWeekDayName(mGTotalDay)
    GetJalaliYearMonthDay mGTotalDay, vGYear, vGMonth, vGDay
    pJDay = vGDay
    pJMonth = vGMonth
    pJYear = vGYear
End Sub

Private Sub SetConstants()
   
    mvarGDayTab = Array(Array(0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31), Array(0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31))
    mvarJDayTab = Array(Array(0, 31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29), Array(0, 31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 30))
    mcSolar = 365.25 - 0.25 / 33
   
End Sub

Private Function GetDayFromFirstGregorianDay(ByVal vGYaer As Integer, ByVal vGMonth As Integer, ByVal vGDay As Integer) As Long
   
    Dim mGYearDiv4 As Integer, mGYearDiv100 As Integer, mGYearDiv400 As Integer
    Dim mGTotalDays As Long
   
    mGYearDiv4 = vGYaer \ 4
    mGYearDiv100 = vGYaer \ 100
    mGYearDiv400 = vGYaer \ 400
   
    mGTotalDays = GetGDayFromBeginOfYear(vGYaer, vGMonth, vGDay)
    mGTotalDays = CLng(vGYaer - 1) * 365 + mGTotalDays + mGYearDiv4 - mGYearDiv100 + mGYearDiv400
   
    GetDayFromFirstGregorianDay = mGTotalDays
End Function


 


ادامه مطلب
+ نوشته شده در  ساعت 19:39  توسط مسعود تنگستانی  | 

ترفند های ريجستري

ترفند های ريجستري

در این پست تعدادی از ترفند های رجیستری را در اختیار شما قرار می دهم.

در آینده مجموعه ای از این کد ها را در وبلاگ قرار خواهم داد. 

1 . بدون دسك تاپ:

به زير كليد زير برويد:
[HKEY_USERS\_DEFAULT\Software\Microsoft\Windows\Cur rentVersion\Policies\Explorer]
و يك مقدار باينري به نام NoDesktop بسازيد و به آن مقدار 01 بدهيد.

دسك تاپ غير فعال:
به زير كليد زير برويد:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\Curre ntVersion\Policies\Explorer]
و يك مقدار DWORD به نام NoActiveDesktop بسازيد و براي فعال كردن آن مقدار صفر و براي غير فعال كردن آن مقدار يك بدهيد.

2 . بهينه سازي سرعت مودم

فايل win.ini را پيدا كنيد به port رفته portmodem خود را پيدا كنيد
و آن را به صورت زير تغيير بدهيد
COM3:=921600,n,8,1,p

3 . مخفي كردن Device Manager :

به زير كليد زير برويد:

[HKEY_USERS\DEFAULT\Software\Windows\CurrentVersion \Policies\System]

و يك مقدار DWORD به نام NoDevMgrPage بسازيد و به آن مقدار يك بدهيد.

4 . كاغذديواري ثابت :

به زير كليد زير برويد:

[HKEY_USERS\DEFAULT\Software\Windows\CurrentVersion \Policies\ActiveDesktop]

و يك مقدار DWORD به نام NoChangingWallpaper بسازيد و به آن مقدار يك بدهيد.


5 . ويرايش يا حذف آخرين دستورات Run :

به زير كليد زير برويد:

[HKEY_CURRENT_USER\Software\Microsoft\Windows\Curre ntVersion\Explorer\RunMRU]

و هر تغييري را كه دوست داريد بدهيد.


6 . برداشتن فلش كوچك در سمت چپ در پايين آيكون:

به 2 زير كليد زير برويد:

[HKEY_CLASSES_ROOT\Inkfile]

[HKEY_CLASSES_ROOT\piffile]

و مقدار IsShortcut را حذف كنيد.


7 . تغييرعنوان مرورگر اينترنت:

مرورگر Internet Explorer به طور پيش فرض داراي عنوان Microsoft Internet Explorer است. براي تغيير آن به زير كليد زير برويد:ِ

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main]

و يك مقدار رشتهاي به نام Window Title بسازيد و به آن هر عبارتي را كه دوست داريد بدهيد.


8 . تغيير نام Recycle Bin

Registry Editor را اجرا كنيد

كليد f3 را زده و در قسمت find عبارت Recycle Bin را تايپ كنيد
بعد از پيدا شدن Recycle Bin آن را به عبارت مورد نظر تغيير دهيد

+ نوشته شده در  ساعت 11:55  توسط مسعود تنگستانی  | 

کدهای API

کدهای API 

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

۱– تغییر برچسب درایو ها                                                                     SetVolumeLabelA

Public Declare Function SetVolumeLabelA Lib "kernel32.dl ")ByVal lpRootName As String, ByVal lpVolumeName As String)As Long

 

lpRootName : نام ریشه درایو   مثل : C:\

lpVolumeName : برچسب یا نام جدید درایو

مثال :

Dim A As Long

Private sub command1_click()

A = SetVolumeLabelA("C:\" , " Visual Basic")

End sub

توجه: اگه تابع درست کار کند مقدار A عددی غیر صفر ، در غیر این صورت A=0 خواهد بود.

 

 

 

۲-Hide TaskBar

Public Hwnd1 As Long

Public Const SWP_HIDEWINDOW = &H80

Public Const SWP_SHOWWINDOW = &H40

Public 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

Public Declare Function FindWindow Lib "user32" Alias "FindWindowA")ByVal lpClassName As String, ByVal lpWindowName As String( As Long

 

Private Sub HideTask_Click()

Hwnd1 = FindWindow("Shell_Traywnd("" ,"

Call SetWindowPos(Hwnd1, 0, 0, 0, 0, 0, SWP_HIDEWINDOW)

End Sub

Private Sub ShowTask_Click()

Call SetWindowPos(Hwnd1, 0, 0, 0, 0,0, SWP_SHOWWINDOW(

End sub

 

+ نوشته شده در  ساعت 20:33  توسط مسعود تنگستانی  | 

نحوه به کار بردن توابع API در ویژوال بیسیک

نحوه به کار بردن توابع API در ویژوال بیسیک

برای استفاده از توابع API در وی بی ابتدا باید آنها را در وی بی تعریف نمود که اصطلاحاً به آن Declare گفته می شود. صورت یک Declare به این صورت است

Declare Function FnName Lib LibName [Alias RealName] (Parameters )As ReturnType

 

  • FnName       :  نام تابع ( نامی که قرار است در برنامه استفاده شود ).

  • LibNam       :  نام کتابخانه ( فایل با پسوند DLL ).

  • RealName     :  نام واقعی تایع در فایل کتابخانه. اگر نام واقعی تابع و نامی که در برنامه استفاده می شود یکی باشند آنگاه نیازی به این قسمت نیست .

  • Parameters   :  پارامتر های تابع.

  • ReturnType   :  نوعی که تابع قرار است بر گرداند.

 توجه : در نوشتن نام واقعی تابع ( یا اگر نام واقعی و مجازی تابع یکی باشد ، نام مجازی آن ) بزرگ و کوچک بودن حروف اهمیت دارد .

+ نوشته شده در  ساعت 20:11  توسط مسعود تنگستانی  | 

توابع API چیست؟

توابع API چیست؟

    API مخفف Application Programming Interface است و به معنای رابط برنامه نویسی کاربردی است.API مجموعه ای از توابع برنامه نویسی است که هم مورد استفاده سیستم عامل واقع می سود و هم یک برنامه کاربردی می تواند از آن استفاده کند. توابع API در قالب فایل های DLL عرضه میشود. در سیستم عامل ویندوز فایل هایی مثل : Kernel32.dll ، gdi32.dll ، user32.dll و چندین فایل دیگر شامل این توابع هستند. این توابع معمولاً با زبان برنامه نویسی C نوشته شده اند. ولی در زبان های دیگر مثل دلفی ، ویژوال سی پلاس پلاس و ویژوال بیسیک هم می توان از آنها استفاده کرد.

    توابع API بر دو دسته اند :

  • 16 بیتی : این توابع در ویندوز های قدیمی کاربرد داشته اند و در سیستم ها ی کنونی به تدریج جای خود را از دست داده اند. و فقط برای حفظ سازگاری ویندوز با برنامه های قدیمی این توابع هنوز هم با ویندوز عرضه می شوند. توابع 16 بیتی ویندوز در حدود 730 عدد می باشد.

  • 32 بیتی : این توابع نمونه های پیشرفته تر توابع قدیمی 32 بیتی هستند. همانطور که گفته شد توابع 16 بیتی قدیمی شده اند و نمونه های 32 بیتی اکثر آنها در ویندوز موجود است. برای آنکه این گونه توابع با نمونه های 16 بیتی شان اشتباه گرفته نشود در انتهای آنها یک کاراکتر A وجود دارد که نشان دهندهء 32 بیتی بودن آنهاست. توابع 32 بیتی بالغ در 6500 عدد هستند.

+ نوشته شده در  ساعت 20:4  توسط مسعود تنگستانی  | 

ساخت Notepad

 ساخت یک note pad
ما میخوایم یک دفترچه یادداشت کاملا ساده شبیه به NotePad ویندوز بسازیم. خب شروع میکنیم:


- یک فولدر در یک جایی از هارد به اسم MyNotes0.1 می سازیم.
- وی بی 6 رو باز می کنیم، از صفحه New Project که ظاهر میشه - قابل دسترسی از منوی File
Standard EXE رو انتخاب میکنیم و بعد Open!
- Project1 رو به mynotes تغییر نام میدیم. فرم پیش فرض رو هم از Form1 به frmNotes تغییر نام میدیم.
- Caption فرم رو به MyNotes تغییر نام میدیم.
- دکمه Save رو میزنیم و همه فایلهای برنامه رو توی فولدر MyNotes0.1 ذخیره میکنیم.

خب! ما الان یک فرم خالی داریم که میخوایم یک چیزی شبیه به NotePad بشه!
یه TextBox به فرم اضافه میکنیم با این خصوصیات:


Code:

Name: txtNotes
Left: 0
Top: 0
Multiline: True
ScrollBars: 3-Both
Font: Tahoma , size: 12 , Boldخصوصیت Text رو هم که الان برابر Text1 هست، پاک میکنیم. بر روی فرم رفته و دابل کلیک میکنیم تا کد ادیتور ظاهر بشه ویا F7 رو میزنیم.

ابتدا به قسمت General Declarations با تنظیم دو منوی داخل ادیتور، میریم و کلمه کلیدی و مهم Option Explicit رو تایپ می کنیم.

این دستور باعث میشه که ما بعدا در هنگام اجرا خیالمون از بابت تعریف شده بودن متغییر ها راحت باشه چون در غیر این صورت خطای زمان اجرا میگیریم و یا با مقادیر اشتباهی دست و پنجه نرم می کنیم.

بسیاری از باگهای یک برنامه وی بی، بخاطر تناقض و یا نبودن متغییرهای صحیح هست. همونطور که میدونیم اگر متغییری در وی بی 6 تعریف نشه، از نوع Variant در نظر گرفته میشه که این ممکن هست ایجاد مشکل کنه و اگر هم مشکلی بوجود نیاد حداقل حافظه بیشتری مصرف شده. وارد جزئیات ماجرا نمیشیم، اینکه حالا بماند!....

خب، کجا بودیم؟
Option Explicit رو تایپ میکنیم. حالا Form رو از منوی Object (اولی از چپ) در ادیتور کد انتخاب میکنیم و سپس Resize رو از منوی Procedure انتخاب میکنیم.

حالا ساب (پروسیجر) Form_Resize ساخته شد. کد زیر رو داخلش تایپ می کنیم:


Code:

Private Sub Form_Resize()
txtNotes.Width = frmNotes.ScaleWidth
txtNotes.Height = frmNotes.ScaleHeight
End Subچه کار کردیم؟ این ساب که در واقع یک event (رخداد) از خوده فرم (frmNotes) هست با کوچکترین تغییر اندازه فرم صدا زده میشه. ما میخوایم که txtNotes با تغییر اندازه فرم تغییر کنه و خودش رو کیپ به کیپ اندازه فرم نگه داره. پس اونرو به همون اندازه فرم در میارم. اگر هم قبلا توجه کرده باشید Left و Top کنترل تکست باکس مون صفر هست، پس اگر پهنا و درازای اون رو مساوی با پهنا و درازای فرم قرار بدیم، کافیه.
البته "frmNotes." ها در این کد اضافی هستند. چون در خود فرم کد رو مینویسیم لازم نیست برای صدا زدن خصوصیاتش از "frmNotes." استفاده کنیم.

چرا از ScaleWidth, ScaleHeight بجای Width, Height استفاده کردیم؟
خب، Width و Height اندازه فرم + عنوان و گوشه های فرم رو برمیگردونه. یعنی همه جای پنجره یک فرم، ولی ScaleWidth و ScaleHeight فقط اندازه قسمت داخلی فرم (خاکستری) برمی گردونه. تکست باکس ما فقط در همون محیط میتونه باشه، پس ما هم از همون مقادیر استفاده کردیم.
+ نوشته شده در  ساعت 21:36  توسط مسعود تنگستانی  |