تبليغاتX
Iranian Technology
 
آموزش برنامه نویسی
 
 
آموزش ویژوال بیسیک و ... برای دیدن تمامی مطالب به آرشیو ماهانه مراجعه کنید
 

سلام خدمت تمام رفقا که به وبلاگ سر می زنن و نظر میدن . البته یه عده ای هم بی معرفتن و نظر نمی دن.در هر حال از این که دیر آپ کردم ببخشید .

دلم کلی واستون تنگ شده بود.

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

یه سؤال کوچولو ازتون دارم : دوست دارین از این به بعد در کنار آموزش های Visual Basic آموزش هایی از زبان C++ بزارم . اگه یه کم تحقیق کنید می فهمید که C++ قدرتش خیلی بیشتر از ویژوال بیسیک و امثال این زبون هاست.

یه خواهش بزرگ هم دارم : جواب سؤال بالا رو بدین . یا اصلآ بگین چه جور آموزش هایی بزارم؟

کسایی هم که عشق OpenGL و گرافیک هستند باید دور ویژوال بیسیک رو یه خط قرمز بکشن. چون ویژوال بیسیک برای نوشتن این جور برنامه ها به درد نمی خوره . کسی که OpenGL کار می کنه یه حرفه ای هست برای همین هم باید دو سه تا زبون برنامه نویسی رو حتمآ بلد باشه . از ما  گفتن...

از من میشنوین این آموزش ها رو از دست ندین.

برای دیدن آموزش ها و پاسخ به سؤالات به ادامه ی مطلب بروید ß


ادامه مطلب
 |+| نوشته شده در  سه شنبه بیست و نهم مرداد 1387ساعت 16:48  توسط علی  | 

با سلام خدمت تمام بروبچ گل ایران.
از اینکه یه چند روزی آپ نکردم شرمنده .

اول از همه یه فایل OCX برای دانلود براتون گذاشتم که خیلی به کارتون میاد. کار این فایل OCX اینه که شما میتوانید با اون برنامه های خودتون رو با ظاهری بسیار زیبا درست کنین.
اینم لینک دانلودش >> بفرماید دانلود کنید


معرفی یه تابع API کاربردی:

این تابع در هنگام بارگذاری فرم شما  برنامه شما را به صورت انیمیشن باز میکنه که خیلی جالبه.!!
برای مثال در قسمت جنرال پنجره کدها کدهای زیر رو بنویسید:

Private Declare Function AnimateWindow Lib "User32.dll"(ByVal  hWnd as Long ,ByVal_
dwTime As Long , Byval dwFlags as Long) as Boolean

Private Const  AW_HOR_POSITIVE = &H1
Private Const  AW_HOR_NEGATIVE = &H2
Private Const  AW_VER_POSITIVE = &H4
Private Const  AW_VER_NEGATIVE = &H8
Private Const  AW_CENTER = &H10
Private Const  AW_HIDE = &H10000
Private Const  AW_ACTIVATE = &H20000
Private Const  AW_SLIDE = &H40000
Private Const  AW_BLEND = &H80000

حالا در روال Form_Load کدهای زیر رو بنویسید.

Private Sub Form_Load

AnimateWindow  Me.hWnd , 1000 , AW_CENTER
Me.Cls

End Sub

حالا یک دکمه فرمان(Command1) روی فرم خودتون قرار بدین سپس کدهای زیر رو بنویسید.

Private Sub Command1_Click

AnimateWindow  Me.hwnd  , 1000 , AW_CENTER  OR  AW_HIDE

End

End Sub

حالا برنامتون رو اجرا کنین و حالشو ببرین.


بستن یک پنجره خاص با ویژوال بیسیک مثلا My Computer.
برنامه ویژوال بیسیک رو باز کنید . سپس روی فرم خودتون یک جعبه متن (TextBox) و یک تایمر(Timer1) ویک عدد دکمه فرمان(Command1) قرار دهید. خالا از منوی Project گزینه ViewCode را بزنید تا پنجره کدها باز شود. در قسمت جنرال کدهای زیر را بنویسید:

Private Declare Function FindWindowA Lib "User32.dll"(ByVal lpClassName as String , ByVal lpWinowName as String ) as Long

Private Declare Function SetForegroundWindow Lib "User32.dll"(byVal hWnd as Long)as Long

خوب حالا روی دکمه فرمان (Command1) دوبار کلیک کنید و کدهای زیر رو بنویسید:

Private Sub Command1_Click

Timer1.Interval = 250

End Sub

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

Private Sub Timer1_Timer

Temp = FindWindowA(vbNullString , Text1.Text)  'X
If Temp <> 0 Then
SetForegroundWindow Temp
SendKeys "%{F4}"        'X
End If

Timer1.Interval = 0
End Sub

خوب میدونید که ما در ابتدا دو تا تابع API رو معرفی کردیم که کار این توابع به این صورته:

تابع FindWindowA همان طور که از شکل و قیافش معلومه نام و عنوان یک پنجره (Window) رو میگیره و در عوضش هندل اون پنجره که یک عدد صحیح است رو به ما میده.
تابع SetforegroundWindow هندل یک پنجره رو میگیره و در عوض اون پنجره رو برای ما فعال میکنه.

شاید شما با تابع SendKeys آشنا نباشید ( مقدماتی ها). این تابع مانند صفحه کلید عمل میکنه به طوری که در مثال بالا علامت % به جای کلید Alt فشرده میشه و {F4} هم کلید F4 رو میزنه که نتیجه بسته شدن پنجره فعال است.

امید وارم با این توضیحات درهم برهم من مطلب و فهمیده باشین!!!

حالا برنمتون رو اجرا کنید و در جعبه متن عبارت My Computer رو وارد کنید . حالا یک پنجره از My Computer رو باز کنید . روی دکمه فرمان برنامتون کلیک کنید و حالشو ببرید.



دوباره میریم سراغ FileSystemObject یا همون FSO :

در پست های قبلی یه مقدار درباره شئ FSO صحبت کردم اما دراینجا دو تا موضوع دیگه رو میگم که قبلا نگفته بودم.!!

موضوع اول: چگونگی به دست آوردن مسیرهای Windows , Temp , System32 به کمک شئ FSO . شما اگه پست قبلی من رو خونده باشید میدونید که چطور میشه از امکانات (FSO(FileSystemObject استفاده کرد اما من در اینجا با ذکر یک مثال به شما آموزش میدم که چطور از امکانات FSO استفاده کنید.

ویژوال بیسیک رو باز کنید و یک پروژه جدید از نوع استاندارد درست کنید. حالا یک یک دکمه فرمان(Command1) روی فرم قرار دهید و بعد از دوبار کلیک کردن بر روی دکمه فرمان قطعه کد زیر رو بنویسید:

Private Sub Command1_Click

Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject") 'X
MsgBox  FSO.GetSpecialFolder(0)   'X
Set FSO = Nothing

End Sub

همون طور که می بینید در خط دوم یک متغیر به نام FSO تعریف کردیم . در خط سوم با کمک تابع CreateObject شئ FSO را برای دسترسی به امکاناتش فراخوانی کردیم. در خط چهارم با کمک جعبه پیام مسیر پوشه های مهم سیستم عامل را به نمایش گذاشتیم.در خط آخر نیز فضای اختصاص داده شده به شئ FSO را آزاد کردیم.

توجه: همان طور که در قطعه کد بالا مشاهده می کنید در خط MsgBox FSO.GetSpecialFolder عدد صفر(0) را با یک رنگ دیگر نوشتم . شما می توانید اعداد ۱ و ۲ را نیز امتحان کنید و حالشو ببرید.

 

موضوع دوم : پاک کردن فایل ها و فولدر ها به کمک شئ FSO که در ادامه توضیح خواهم داد.

۱ - پاک کردن فایل ها :
برای اینکه شما بتوانید با کمک شئ FSO فایلی را پاک کنید باید به این صورت عمل کنید:
یک TextBOX و یک Command روی فرم خود قرار دهید سپس بعد از دوبار کلیک کردن بر روی دکمه فرمان کدهای زیر رو به پروژه تون اضافه کنید:

Private Sub Command1_Click

Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")  'X
FSO.DeleteFile  Text1.Text 
set FSo = Nothing

End Sub

حالا برنامتون رو اجرا کنین و با وارد کردن مسیر یک فایل در تکست بوکسی که در روی فرمتون قرار داره و بازدن دکمه فرمان اون فایل رو از روی هارد دیسکتون محو نابود کنید.!!!

بازم توجه: مسیر فایلی که در TextBox می نویسید باید مثل این باشد: C:\Ali.txt یعنی حروف بزرگ و کوچک رعایت شود و فرمت نیز ذکر شود.


بازم یه کار جالب دیگه:

عوض کردن تصویر پشت زمینه با ویژوال بیسیک:

در اینجا ما به کمک یک تابع API به نام SystemParametersInfo تصویر پشت زمینه(یا همون Desktop )رو عوض میکنیم. خوب برای این کار به این صورت پیش برید:
ابتدا به پروژه جدید از نوع استاندارد باز کنید . یک عدد تکست بوکس (Text1) و یک عدد دکمه فرمان(Command1) به فرم خود اضافه کنید سپس کدهای زیر رو در پنجره کدها(منوی Project > ViewCode ) بنویسید:

Private Declare Function SystemParametersInfo Lib "User32" Alias "SystemParametersInfoA"(ByVal uAction As Long, ByVal uParam As Long , ByVal lpvParam as Any , ByVal fuWinIni as Long) as Long

Private Const SPI_SETDESKWALLPAPER = 20
Private Const SPIF_UPDATEINIFILE = &H1

Private Sub Command1_Click

If Text1.Text <> "" Then
SystemParametersInfo SPI_SETDESKWALLPAPER , 0 , Text1.Text , SPIF_UPDATEINIFILE
Else
MsgBox "Error" , vbCritical + vbOkOnly
End If

End Sub

خوب حالا برنامتون رو اجرا کنید. در تکست بوکس (Text1) روی فرم بنویسید:
C:\Windows\Web\Wallpaper\Bliss.bmp
و بعد دکمه فرمان (Command1) را کلیک کنید تا تصویر پشت زمینه (DeskTop) عوض بشه.

خوب چطور بود...

هی تو دلت نگو در قسمت نظرات وبلاگ بگو!!

 


پاک کردن سطل آشغال :

خوب در اینجا ما به کمک یه تابع API سطل زباله رو پاک میکنیم . نام تابع API تابع SHEmptyRecycleBin هست که جزء توابع کتابخانه قدرتمند Shell می باشد.
ابتدا یک پروژه حدید از نوع استاندارد باز کنید . حالا یک عدد دکمه فرمان (Command1)روی فرم خود قرار دهید سپس کدهای زیر رو در داخل پنجره کدها(View Code ) بنویسید.

Private Declare Function SHEmptyRecycleBin Lib "Shell32.dll" Alias "SHEmptyRecycleBinA"(Byval hWnd as Long , ByVal pszRootPath as String,ByVal dwFlags as Long) as Long

Private Sub Command1_Click

On Error Resume Next
SHEmptyRecycleBin 0 , "" , &H2

End Sub

حالا برنامه را اجرا کنید . بعد از زدن دکمه فرمان(Comand1) اخطار آیا مطمئن هستید فایل ها پاک شوند به شما نمایش داده میشود .


ساده ترین راه برای Always on Top ( فرم برنامه همیشه فعال باشد) کردن فرم برنامه:

در اینجا ما به کمک تنها یک خط کد فرم خود را در حالت Always On Top قرار می دهیم البته به غیر از تعریف تابع میشه یک خط!!

نام تابع هست :>:> BringWindowToTop که از جمله توابع کتابخانه User32 است.
برای این کار در روی فرم خود یک عدد تایمر قرار بدید و خاصیت Interval تایمر رو برابر ۵۰ کنید. حالا کدهای زیر رو در پنجره کدها بنویسید:

Private Declare Function BringWindowToTop Lib "User32.dll"(ByVal hWnd as Long)as Long

Private Sub Timer1_Timer

BringWindowToTop Form1.hWnd

End Sub

حال کردین ها !!

حال نکردین؟؟

 

 |+| نوشته شده در  پنجشنبه یازدهم مرداد 1386ساعت 12:2  توسط علی  | 
سلام بچه ها . از اینکه یه شیش هفت روزی آپدیت نکردم شرمنده کارهای زیاد و مهمی داشتم در هر صورت امیدوارم ناراحت نشده باشین.
نظر هارو خوندم . مثل اینکه برنامه جلسه قبل مشکل داشت که من سورس اون رو برای دانیود گذاشتم.
بفرمایید:دانلود کنید
نوش جونتون.

اگه احیانا بازم مشکلی پیش اومد فقط کافیه یه نظر کوچولو بدین.

در این جلسه به صورت موقت آموزش OpenGL رو کنار گذاشتم و میخوام آموزش های جالب دیگه ای به شما دوستان عزیز بدم . البته در جلسه بعدی آموزش OpenGL با خبرهای خوش میخوام براتون بزارم پس نگران آموزش OpenGL نباشید.

مطمئنم از این آموزش ها خوشتون میاد. میگی نه بخون!



پخش فایل های صوتی در ویژوال بیسیک:

شاید شما تا حالا کنترل MultiMedia ویژوال بیسیک رو دیده باشید و با اون کار کرده باشید اما در اینجا ما بدون کمک گرفتن از این کنترل میخواهیم چگونگی پخش فایل های صوتی رو بلد شیم.

برای پخش فایلهای صوتی باید از توابع API ویندوز استفاده کنیم که ما در ینجا از تابع sndPlaySound استفاده کرده ایم .
برای استفاده از توابع API ویندوز (همون طور که در جلسات قبل گفتم ) باید آنها را Declare کنیم .
کدهای زیر را در قسمت General فرم خود بنویسید:

Private Declare Function sndPlaySound lib "winmm.dll" Alias "sndPlaySoundA"(ByVal _
lpszSoundName as String , uFlags as Long) as Long

تابع sndPlaySound دارای دو آرگومان میباشد که ارگومان اول(lpszSoundName)مسیر و نام فایل صوتی است و آرگومان دوم (uFlags) با ثابت هایی که میگیرد چگونگی پخش را کنترل میکند. در زیر تعدادی از ثابت های آرگومان دوم توضیح داده شده است:

SND_ASYNC : در صورتی که این ثابت را انتخاب کنید در زمان پخش فایل صوتی می توانید کارهای عادی دیگر خود را انجام دهید.

SND_SYNC : با انتخاب این ثابت در زمان پخش فایل صوتی تا وقتی که فایل صوتیمان بپایان نرسیده کار دیگری نمی توانیم انجام دهیم.

SND_LOOP : با انتخاب این ثابت فایل صوتی به صورت مکرر پخش خواهد شد.

SND_NODEFAULT : با انتخاب این ثابت اگر فایل صوتی در مسیر تعیین شده وجود نداشت صوتی پخش نمی شود.

اگر بخواهید از دو یا چند ثابت به طور همزمان استفاده کنید باید با نوشتن OR دو ثابت را با هم بیاورید.

بعد از تعریف کردن تابع API در همان جا (یعنی قسمت General فرم) ثابت های بالا را تعریف کیند:

Private Const  SND_ASYNC = &H1
private Const  SND_LOOP = &H8
Private Const  SND_NODEFAULT = &H2
private Const  SND_SYNC = &H0

حالا در وسط فرم خود یک دکمه فرمان (Command1) قرار دهید و روی آن دوبار کلیک کنید تا به پنجره کدها بروید.سپس کدهای زیر را بنویسید:

Private Sub Command1_Click

sndPlaySound  "FileName" , SND_ASYNC  OR SND_NODEFAULT

End Sub

در قطعه کد بالا به جای "FileName" مسیر و نام فایل صوتی با فرمت Wav. را بنویسید.برنامه را اجرا کنید و حالشو ببرید.


جاسوسی از کیبورد:

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

یک پروژه جدید باز کنید و در فرم خود یک Label , Timer قرار دهید سپس در پنجره کد کدهای زیر را بنویسید:

Private Declare Function GetAsyncKeyState Lib "user32.dll"(Byval vKey as long)as Integer

Private Sub Timer1_Timer

Dim J
For I = 0 To 255
J = 0
J = GetAsyncKeyState(I)       'X
If J <> 0 Then
Label1.Caption = Label1.Caption  &  Chr(I)    'X
End If
Next

End Sub

برنامه خودتون رو اجرا کنید و با زدن کلیدهای کیبورد نتیجه رو ببینید.راستی خاصیت AutSize کنترل Label را برابر True کنید.


تغییر دادن زبان صفحه کلید:

مثل قبل یک پروژه جدید باز کنید و دو دکمه فرمان (Command1 , Command2 ) روی فرم قرار دهید . از منوی View گزینه Code را بزنید تا پنجره کدها باز شود. سپس کدهای زیر را در پنجره کدها بنویسید:

Private Declare Function LoadKeyboardLayout Lib "user32.dll" Alias "LoadKeyboardLayoutA"(Byval pwszKLID as String , ByVal Flags as long ) as Long

Private Sub Command1_Click

LoadKeyboardLayout  "00000429" , 1

End Sub

Private Sub Command2_Click

LoadKeyboardLayout  "" , 1

End Sub

در قطعه کد بالا با زدن دکمه فرمان ۱ (Command1)زبان صفحه کلید فارسی میشود و بازدن دکمه فرمان۲ زبان صفحه کلید به انگلیسی مبدل میشود.


انجام اعمالی از جمله کپی/انتقال/ساختن/حذف و نمایش  فایلها و فولدرها:

در اینجا  من یک شئ برای شما تعریف میکنم که کارهای زیادی بر روی فایل ها و فولدر ها انجام میده :

شئ FileSystemObject :
برای استفاده از این شئ و بهره بردن از امکاناتش ابتدا باید آن را به برنامه خود اضافه کنیم در زیر مثالی آمده است که باعث میشود تمامی درایوهای شما در یک لیست بوکس نمایش داده شود.

ابتدا یک پروژه جدید باز کنید . سپس یک لیست بوکس (ListBox ) از جعبه ابزار به فرم خود اضافه کنید. حال یک دکمه فرمان(Command1) را در فرم خود قرار دهید سپس روی دکمه فرمان خود دوبار کلیک کنید تا پنجره کدها باز شود.کدهای زیر را بنویسید:

Private Sub Command1_Click

Dim FSO , Drives

Set FSO = CreateObject("Scripting.FileSystemObject")        'X
Set Drives = FSO.Drives

For Each Drive in Drives
if Drive.isready Then
List1.AddItem  Drive
End If
Next

حالا برنامه خودتون رو اجرا کنید و با زدن دکمه فرمان لیست درایو های خودتان را ببینید.به همین سادگی شما خودتان یک کنترل DriveListBox ساختید!

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

در مثال زیر چگونگی ساختن فولدر را یاد میگیرید.

ابتدا یک پروژه جدید باز کنید . سپس یک دکمه فرمان روی فرم خود جاسازکنید! حالا کدهای زیر را در پنجره کدها بنویسید:

Private Sub Command1_Click

Dim FSO

Set FSO = CreateObject("Scripting.FileSystemObject")    'x
FSO.CreateFolder  "D:\Ali"   'Create A New Directory

End Sub

در قطعه کد بالا علت اینکه عبارت "CreateFolder" رو کمرنگ نوشتم اینه که شما میتونید به جای اینکه با این عبارت یک فولدر بسازید می توانید با تغییر دادن آن به صورت CreateTextFile یک فایل تکست ایجاد کنید به این صورت:

Private Sub Command1_Click

Dim FSO

Set FSO = CreateObject("Scripting.FileSystemObject")    'x
FSO.CreateTextFile  "D:\Ali.TXT"   'Create A New Text File

End Sub

و اما کپی کردن فایل برای کپی کردن یک فایل ما باید (در قطعه کد بالا) در خط چهارم به جای استفاده از FSO.CreateTextFile از FSO.CopyFile استفاده کنیم با این تفاوت که CopyFile داری دو آرگومان اجباری است که آرگومان اول مسیر فایل مبدا و آرگومان دوم مسیری است که فایل در آنجا کپی می شود. برای اینکه بهتر موضوع رو درک کنید یک مثال ساده برای شما می زنم:

یک پروژه جدید باز کنید و با قرار دادن یک دکمه فرمان(Command1) در پنجره کدها عبارات زیر را تایپ کنید:

Private Sub Command1_Click

Dim FSO

Set FSO = CreateObject("Scripting.FileSystemObject")    'x
FSO.CopyFile  "D:\Ali.TXT" , "C:\CopyAli.TXT"           'Copy Ali to Drive C

End Sub

برای انتقال فایل نیز باید همانند بالا عمل کنیم اما با این تفاوت که به جای عبارت FSO.CopyFile باید از عبارت MoveFile استفاده کنیم. همچنین آرگومان اول MoveFile مسیر فایل مبدا و آرگومان دوم مسیر فایل مقصد است.


خوب تا اینجا امیدوارم نظرتون رو جلب کرده باشم.

فعلا. خدانگهدارتون.

 |+| نوشته شده در  یکشنبه بیست و چهارم تیر 1386ساعت 13:2  توسط علی  | 
 
  بالا  

Free Counter