آموزش توابع 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




برچسب :