آموزش توابع api ویندوز در ویژوال بیسیک 6
ساخت اسکرین سیور
Private Sub Timer1_Timer()
Me.Cls
Scale (1, -1)-(-1, 1)
Me.ForeColor = RGB(Rnd * 255, Rnd * 255, Rnd * 255)
a = Rnd
For i = 1 To 10000 Step 0.1
b = Sin(i * a)
c = b * Cos(i) * 10
d = b * Sin(i) * 10
Me.PSet (c, d)
Next
End Sub
چاپ بر روی فرم:
کد:
Private
Declare Function TextOut Lib "gdi32" Alias "TextOutA" (ByVal hdc As
Long, ByVal x As Long, ByVal y As Long, ByVal lpString As String, ByVal
nCount As Long) As Long
Private Sub Form_Load()
Dim strHamid As String
Me.Font = "Times New Roman"
Me.FontBold = True
Me.FontSize = 24
Me.FontItalic = True
Me.AutoRedraw = True
strHamid = "farshad hatami kya"
TextOut Me.hdc, 50, 100, strHamid, Len(strHamid)
End Sub
در این مثال با استفاده از گزینه های مختلف فونت و استفاده از AutoRedraw برای اینکه هنگامی که فرم load میشود متن بر روی فرم نمایش داده شود و استفاده از تابع TextOut رشته hamid ahmadi را برروی فرم در موقعیت x = 50 و y = 100 نشان دادیم ضمن آنکه با استفاده از خاصیت len خروجی تعداد کاراکترهای strhamidرا که همان متن hamid Ahmadi می باشد را بر روی فرم مشخص کردی
دو تابع API به نام BlockInput و Sleep
بچه ها آیا پیش آمده که بخواهید ماوس و صفحه کلید را قفل کنید. راهی که اینک بر شما فاش میکنم BlockInput یکی دیگر از توابع API
می باشد. لازم به ذکر است از آنجا که بعد از قفل شدن صفحه کلید و ماوس می
بایست راهی برای گریز از آن باشد من به شما یکی دیگر از توابع API را که تابع Sleep می باشد را معرفی میکنم
مواد لازم
یک فرم
یک دکمه
کد:
Private Declare Function BlockInput Lib "user32" (ByVal fBlock As Long) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Command1_Click()
BlockInput True
Sleep 5000
BlockInput False
End Sub
تابع دیگری از API به نام AnimateWindow
هیچ
به فکرتان افتاده که شما هم مانند بسیاری از برنامه نویسان از حالت
انیمیشن استفاده کنید و برای باز و بسته کردن فرمهایتان و یا اجزای داخل آن
متوسل به کارهای زیبایی هم بشوید من به شما تابع AnimateWindow یکی دیگر از توابع API را معرفی میکنم
مواد لازم
یک فرم
یک تکست
یک دکمه
کد:
Private Const AW_HOR_HOSTIVE = &H1
Private Const AW_VER_NEGATIVE = &H8
Private Declare Function AnimateWindow Lib "user32" (ByVal hwnd As Long, ByVal dwtime As Long, ByVal dwflags As Long) As Boolean
Private Sub Command1_Click()
AnimateWindow Text1.hwnd, 2000, AW_VER_NEGATIVE
End Sub
Private Sub Form_Load()
Text1.Visible = False
AnimateWindow Me.hwnd, 2000, AW_HOR_HOSTIVE
End Sub
بهترین برنامه های ویژوال بیسیک ۶ به صورت پیشرفته
Stretch کردن تصاویر در PictureBox و Form
Private Sub Form_Load()
Picture1.AutoRedraw = True
Picture1.PaintPicture Picture1.Picture, 0, 0, Picture1.Width, Picture1.Height
End Sub
Private Sub Form_Load()
Me.AutoRedraw = True
Picture1.Visible = False
End Sub
Private Sub Form_Resize()
Me.PaintPicture Picture1.Picture, 0, 0, Me.Width, Me.Height
End Sub
بدست آوردن کد RGB رنگ مورد نظر
یک پروژه جدید باز کنید و یک شی CommonDialog از قسمت Components ها به فرمتون اضافه کنید و کد زیر رو تو قسمت جنرال فرمتون کپی کنید
Private Sub Form_Click()
CommonDialog1.ShowColor
Red = ConvertToRGB(CommonDialog1.Color, 0)
Green = ConvertToRGB(CommonDialog1.Color, 1)
Blue = ConvertToRGB(CommonDialog1.Color, 2)
Me.Cls
Print "R = " & Red
Print "G = " & Green
Print "B = " & Blue
End Sub
Private Sub Form_Load()
Me.AutoRedraw = True
CommonDialog1.Flags = 2
End Sub
Public Function ConvertToRGB(ByVal Colors As Long, ByVal Index As Integer) As Long
Dim Red As Integer, Green As Integer, Blue As Integer
Dim lngColor As Long
lngColor = Colors
Red = lngColor Mod &H100 ' &H100 = 256
Green = (lngColor \ &H100) Mod &H100
Blue = lngColor \ &H10000 ' &H10000 = 65536 = (256*256)
If Index = 0 Then ConvertToRGB = Red
If Index = 1 Then ConvertToRGB = Green
If Index = 2 Then ConvertToRGB = Blue
End Function
درگ کردن فرم به وسیله یک کنترل
اینکار که با توابع API به روش ویندوز انجام میشه، بهترین، مطمئن ترین، ساده ترین و سریع ترین روش برای درگ (Drag) کردنه فرمه. در ضمن در این روش بوسیله یک کنترل هم میشه فرم رو درگ کرد.
یک پروژه جدید باز کنید و توش یک Command Button و یک Label بذارید و کد زیر رو قسمت جنرال فرمتون کپی کنید :
Private Declare Function ReleaseCapture Lib "user32.dll" () As Long
Private
Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA"
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As
Any) As Long
Private Sub Command1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim lngReturnValue As Long
If Button = 1 Then
Call ReleaseCapture
lngReturnValue = SendMessage(Me.hWnd, &HA1, 2, 0&)
End If
End Sub
اعمال مشخصه RightToLeft به کنترلهایی که فاقد این مشخصه اند
در این روش شما میتونید به هر کنترلی این مشخصه رو اعمال کنید، حتی کنترلهایی که فاقد این مشخصه هستند مثل DirListBox به صورت از راست به چپ در میان. درضمن اگه با فرمتون اینکارو بکنید میبینید که واقعاً به صورت از راست به چپ درمیاد یعنی دکمه Close، Minimize و Maximize از سمت راست فرم به سمت چپ فرم انتقال پیدا میکنن.
یک پروژه جدید باز کنید و یک DirListBox به فرمتون اضافه کنید و کد زیر رو تو قسمت جنرال فرمتون کپی کنید :
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 Sub Form_Load()
SetWindowLong Me.hWnd, -20, GetWindowLong(Me.hWnd, -20) Or &H400000
SetWindowLong Dir1.hWnd, -20, GetWindowLong(Dir1.hWnd, -20) Or &H400000
End Sub
قرار دادن فرم بر روی تمام پنجره ها
با این کد فرم شما بر روی همه پنجره های قرار میگیره، مانند 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
با علامت دار کردن CheckBox فرم همیشه رو قرار میگیره و با برداشتن علامت فرم به حالت عادی برمیگرده. موفق باشید.
شفاف کردن فرم به صورت شیشه ای و مات
یک پروژه جدید باز کنید و تو قسمت جنرال فرمتون کدهای زیر رو کپی کنید :
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 استقاده کنید. موفق باشید.
نامرئی کردن قسمتهای اضافی فرم
این
کد خیلی کاربردیه، حتماً به دردتون مبخوره. این کد باعث میشه که گوشه ها و
قسمتهای اضافی فرم حذف بشه و فقط جاهایی که شما میخواید، قابل رویت باشه.
مانند اسکین های Windows Media Player که بسیار زیباست.
یک پروژه جدید باز کنید و داخل فرمتون یک شئ Shape بذارید و کد زیر رو تو قسمت جنرال فرمتون کپی کنید :
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.dll" (ByVal
hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags
As Long) As Long
Const LWA_COLORKEY = &H1
Const GWL_EXSTYLE = (-20)
Const WS_EX_LAYERED = &H80000
Const BM_SETSTATE = &HF3
Private Sub Form_Load()
Dim Ret As Long
Dim CLR As Long
Me.BackColor = RGB(1, 1, 1) '
CLR = Me.BackColor
Ret = GetWindowLong(Me.hWnd, GWL_EXSTYLE)
Ret = Ret Or WS_EX_LAYERED
SetWindowLong Me.hWnd, GWL_EXSTYLE, Ret
SetLayeredWindowAttributes Me.hWnd, CLR, 0, LWA_COLORKEY
End Sub
بستن برنامه ها یا همون End Task کردن برنامه ها
براین بستن برنامه ها باید بدونید که عنوان (Title) برنامه چیه. مثلاً عنوان برنامه ماشین حساب Calculator هستش و عنوان برنامه Task Manager هست .Windows Task Manager در واقع این قطعه کد هر برنامه ای رو از روی عنوان اون میبنده.
یک پروژه جدید باز کنید و تو فرمتون یک Command Button و یک TextBox بذارید و کد زیر رو تو قسمت جنرال فرمتون کپی کنید :
Private
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal
hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any)
As Long
Private
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal
lpClassName As String, ByVal lpWindowName As String) As Long
Private Sub CloseProgram(ByVal Caption As String)
On Error Resume Next
Handle = FindWindow(vbNullString, Caption)
If Handle = 0 Then Exit Sub
SendMessage Handle, &H10, 0&, 0&
End Sub
Private Sub Command1_Click()
Call CloseProgram(Text1.Text)
End Sub
حالا برنامه رو اجرا کنید، بعد برنامه Task Manager رو اجرا کنید (Alt + Ctrl + Del) و تو TextBox تایپ کنید Windows Task Manager و کلید Command1 رو بزنید، میبینید که برنامه Task Manager بسته شد، به همین سادگی. موفق باشید.
حالا برنامه رو اجرا کنید و با کلیک روی Option Button ها و بعد کلیک روی Command1 جای کلیک چپ و راست موس رو عوض کنید. به همین سادگی. موفق باشید.
امکان شماره گیری تلفن با برنامه شما
اینکار خیلی آسونه. یک پروژه جدید باز کنید و تو فرمتون یک Command Button و یک TextBox بذارید و کد زیر رو تو قسمت جنرال فرمتون کپی کنید :
Private
Declare Function tapiRequestMakeCall Lib "TAPI32.DLL" (ByVal Dest As
String, ByVal AppName As String, ByVal CalledParty As String, ByVal
Comment As String) As Long
Private Sub Command1_Click()
tapiRequestMakeCall Text1.Text, "", "", ""
End Sub
حالا برنامه رو اجرا کنید و تو TextBox شماره تلفن رو وارد کنید و کلید Command1 رو بزنید، میبینید که شماره گیری توسط خود ویندوز انجام میشه و احتیاجی نیست که شما کاری انجام بدید. موفق باشید.
ثبت تنظیمات و اطّلاعات برنامه در رجیستری
خب اوّل یک مثال میزنم و بعد میرم سره آموزش تا بهتر یاد بگیرید.
یک پروژه جدید باز کنید و یک Command Button و یک TextBox بذارید تو فرمتون و کد زیر رو تو قسمت جنرال فرمتون کپی کنید :
Private Sub Command1_Click()
SaveSetting App.Title, "Setting", "Value", Text1.Text
End Sub
Private Sub Form_Load()
Text1.Text = GetSetting(App.Title, "Setting", "Value", "Hello")
End Sub
برنامه رو اجرا کنید و هر چی دلتون میخواد تو TextBox وارد کنید و بعد کلید Command1
رو بزنید و از برنامه خارج بشید. حالا اگه دوباره برنامه رو اجرا کنید
میبینید متنی که دفعه قبل وارد کرده بودید سره جاشه و پاک نشده
مطالب مشابه :
سورس های ویژوال بیسیک 6 قسمت 12
پروژه های برنامه نویسی - سورس های ویژوال بیسیک 6 قسمت 12 - ویژوال بیسیک 6 -#c - ویژوال بیسیک 2008
آموزش توابع api ویندوز در ویژوال بیسیک 6
آموزش توابع api ویندوز در ویژوال بیسیک 6. نویسنده : فرشاد حاتمی کیا | تاریخ : 1:28 - یکشنبه سی ام
آشنایی با عملگرهای ویژوال بیسیک .نت
عملگرهای ویژوال بیسیک .نت. عملگرها نمادهایی (ابزارهایی) هستند که برای ترکیب و کار کردن بر
سورس های رایگان ویژوال بیسیک
پروژه های برنامه نویسی - سورس های رایگان ویژوال بیسیک - ویژوال بیسیک 6 -#c - ویژوال بیسیک 2008
خرید نرم افزار مدیریت پارکینگ به زبان ویژوال بیسیک 6
خرید نرم افزار مدیریت پارکینگ به زبان ویژوال بیسیک 6. نویسنده : فرشاد حاتمی کیا | تاریخ : 15:29
سورس کدهای ویژوال بیسیک
سورس کدهای ویژوال بیسیک قسمت دوم برنامه اول: این برنامه فرم را به صورت انیمیشن باز کرده و
پروژه ویزوال بیسیک
از لینک زیر می توانید برنامه های مختلفی (بازی ، پروزه مدیریتی ،شبیه سازی و )به زبان ویژوال
خرید امکانات نرم افزار فروشگاه پوشاک به زبان ویژوال بیسیک 6
خرید امکانات نرم افزار فروشگاه پوشاک به زبان ویژوال بیسیک 6. نویسنده : فرشاد حاتمی کیا
خرید نرم افزار فروشگاه ورزشی به زبان ویژوال بیسیک 6
پروژه های برنامه نویسی - خرید نرم افزار فروشگاه ورزشی به زبان ویژوال بیسیک 6 - ویژوال بیسیک 6
برچسب :
پروژه ویژوال بیسیک 6