در ویژوال بیسیک شما میتونید داده ای از نوع خودتون تعریف کنید.گیج نشید . ادامه بدید تا متوجه بشید چی میگم.
منظور من اینکه میتونید یک تایپ(مثل تایپ توی api ها)مثلآ با اسم phoneb مخفف phonebook تعریف کنید.
این تایپ phoneb شما دو خاصیت به نام های firstname و lastname و phonenumber دارد.
که مثلآ میتونید 1000 تا رکورد روی اون ذخیره کنید.پس به این ترتیب میتونیم یک data base از نوع داده ای خودمون تعریف کنیم.خیلی گیج کننده هست ولی یک بار امتحان کنید دیگه راحت میشه. خوب برای شروع یک پروژه جدید با یک ماژول باز کنید.اول از همه باید تایپ خودمون رو تعریف کنیم پس توی ماژول تایپ خودتون رو تعریف کنید.میتونید از کد پایین به عنوان الگو استفاده کنید.
public type phoneb
firstname as string
lastname as string
phonenumber as string
end type
حتمآ میدونید که در ویژوال بیسیک نمیشه بین اسامی از فضای خالی استفاده کرد.پس سعی کنید از اسامی مخفف استفاده کنید.
هر خاصیت باید یک طول مخصوص داشته باشد.به کد زیر توجه کنید.
public type phoneb
firstname as string *25
lastname as string *25
phonenumber as string *25
end type
همه ی تایپ ها باید به شکل بالا باشند.یعنی طول داشته باشند.مواظب باشید که کاربر نمیتواند بیش از اون چیزی که شما مشخص کردید توی یک تایپ بنویسد.و اگر بنویسد سیو نمی شود.
خب حالا باید یک فایل رو باز کنیدتا بتوانید با استفاده از تایپی که تعریف کردید توی فال بنویسید وسیو کنید.
شما میتوانید یک فایل رو به چند روش باز کنید ولی اینجا ما فایل رو به صورت رندم(random)یا اتفاقی باز میکنیم.
برای این کار از فرمول روبه رو استفاده میکنیم. open path for random as #number len=lenght
دستورات آبی مربوط به خود ویژال بیسیک هستند.و باید نوشته شوند.path(مسیر)مسیری هست که فایل در آنجا قرار دارد.number شماره ی فایل هست که اگر خواستید بتوانید چند فایل با هم باز و بسته بکنید.
len همون طول فایل هست که از شمارش طول prperty های تایپمون به دست میاد.مثلآ در اینجا طول فایل می 75 هست 25+25+25=75
به مثال زیر نگاه کنید.
open "c:\program files" for random as #1
به این ترتیب یک فایل رو باز کردید.یا اگر وجود نداشت به وجود آوردید(آخه وقتی یک فایل رو باز میکنید اگه وجود نداشته باشه اول اون رو به وجود میاره بعد بازش میکنه.)
خب حالا که بازش کردید میتونید توش اطلاعات بنویسید یا از توش بخونید.
قبل از هرکاری یک کار دیگه رو هم باید یاد بگیرید اون هم اینکه چند رکورد توی فایل نوشته شده.
۱۳۸۷ بهمن ۷, دوشنبه
۱۳۸۷ بهمن ۵, شنبه
getcursorpos
برای بدست آوردن محل کرسر ویندوز از تابع getcursorpos استفاده میکنیم.
برای این کار نیاز به یک تایپ داریم به اسم pointapi .
پس توی جنرال برنامه کد زیر رو کپی کنید.
Private Type POINAPI
x as integer
y as integer
End Type
Private Declare Function GetCursorPos Lib "user32.dll" (ByRef lpPoint As POINTAPI) As Long
dim POINTAPI as POINTAPI
حالا یک تایمر بزارید و توی روالش کد زیر رو بنویسید.(اول interval اون رو 100 بکنید)
getcursorpos POINTAPI
text1.text=POINTAPI.x
text2.text=POINTAPI.y
یادم رفت که بگم دوتا textbox هم بزارید.
برای این کار نیاز به یک تایپ داریم به اسم pointapi .
پس توی جنرال برنامه کد زیر رو کپی کنید.
Private Type POINAPI
x as integer
y as integer
End Type
Private Declare Function GetCursorPos Lib "user32.dll" (ByRef lpPoint As POINTAPI) As Long
dim POINTAPI as POINTAPI
حالا یک تایمر بزارید و توی روالش کد زیر رو بنویسید.(اول interval اون رو 100 بکنید)
getcursorpos POINTAPI
text1.text=POINTAPI.x
text2.text=POINTAPI.y
یادم رفت که بگم دوتا textbox هم بزارید.
۱۳۸۷ دی ۲۹, یکشنبه
windows
بحث پنجره ها مبحث بزرگی است.
برای شروع یک توزیح کلی میدم.
هر چیز در ویندوز یک پنجذه هست. هر پنجره یک هندل(handle) یا دستگیره دارد . هندل ها همیشه long هستند و متغیری که یک هندل به ان نسبت داده میشود باید از نوع long تعریف شده باشد.بریم سراغ اصل مطلب.
برای گرفتن هندل یک پنجره از تابعی به نام findwindow استفاده میکنیم.(چند تا دیگه هم هستن)
یاد گرفتن این تابع خیلی آسونه.این تابع از شما دو چیز میخواهد
1-نام پنجره
2-نام کلاس پنجره
شما باید فقت یکی رو پر کنید و در دیگری بنویسید VbNullString به مثال پایین نگاه کنید
findwindow(VbNullString,"visualbasic")
پس به روش زیر میتوان هندل یک پنجره رو گرفت.
dim a as long
a=findwindow(vbnullstring,windowname)
حالا با استفاده از تابع showwindow میشه پنجره رو دستکاری کرد.
این تابع هم ساده هست.چون فقت ندل پنجره و فلگ کاری که میخواد بکنه رو نیاز داره. فلگ هارو در زیر اوردم.
sw_show نمایش پنجره
sw_hide پنهان کردن پنجره
sw_maximize بزرگ کردن صفحه
sw_minimize کوچک کردن صفحه
این یکی جداّ نیاز به توزیح نداره ولی توزیح میدم واسه اوش گ...ها.
dim wnd as long
wnd=findwindow(vbnullstring)
showwindow wnd,sw_hide
به این ترتیب یک پنجره رو مخفی میکنیم.دقت داشته باشید که پنجره مخفی(hide)میشه.
برای شروع یک توزیح کلی میدم.
هر چیز در ویندوز یک پنجذه هست. هر پنجره یک هندل(handle) یا دستگیره دارد . هندل ها همیشه long هستند و متغیری که یک هندل به ان نسبت داده میشود باید از نوع long تعریف شده باشد.بریم سراغ اصل مطلب.
برای گرفتن هندل یک پنجره از تابعی به نام findwindow استفاده میکنیم.(چند تا دیگه هم هستن)
یاد گرفتن این تابع خیلی آسونه.این تابع از شما دو چیز میخواهد
1-نام پنجره
2-نام کلاس پنجره
شما باید فقت یکی رو پر کنید و در دیگری بنویسید VbNullString به مثال پایین نگاه کنید
findwindow(VbNullString,"visualbasic")
پس به روش زیر میتوان هندل یک پنجره رو گرفت.
dim a as long
a=findwindow(vbnullstring,windowname)
حالا با استفاده از تابع showwindow میشه پنجره رو دستکاری کرد.
این تابع هم ساده هست.چون فقت ندل پنجره و فلگ کاری که میخواد بکنه رو نیاز داره. فلگ هارو در زیر اوردم.
sw_show نمایش پنجره
sw_hide پنهان کردن پنجره
sw_maximize بزرگ کردن صفحه
sw_minimize کوچک کردن صفحه
این یکی جداّ نیاز به توزیح نداره ولی توزیح میدم واسه اوش گ...ها.
dim wnd as long
wnd=findwindow(vbnullstring)
showwindow wnd,sw_hide
به این ترتیب یک پنجره رو مخفی میکنیم.دقت داشته باشید که پنجره مخفی(hide)میشه.
۱۳۸۷ آذر ۲۹, جمعه
windows colors
خب حالا میخواهیم یکمی سیستم رنگ بندی کامپیوتر رو دست کاری کنیم.
برای این کار از یک api به نام setsyscolors استفاده میکنیم.
خیلی کارساده ای هست فقت باید نام یک فلگ و یک عدد از نوع long که همان رنگ هست رو بهش بدین.
Private Declare Function SetSysColors Lib "user32.dll" (ByVal nChanges As Long,_ ByRef lpSysColor As Long, ByRef lpColorValues As Long) As Long
و فلگ هاش هم در زیر اومده.
private Const COLOR_3DDKSHADOW As Long = 21
private Const COLOR_3DLIGHT As Long = 22
private Const COLOR_ACTIVEBORDER As Long = 10
private Const COLOR_ACTIVECAPTION As Long = 2
private Const COLOR_BACKGROUND As Long = 1
private Const COLOR_BTNSHADOW As Long = 16
private Const COLOR_BTNTEXT As Long = 18
private Const COLOR_CAPTIONTEXT As Long = 9
private Const COLOR_HIGHLIGHT As Long = 13
private Const COLOR_HIGHLIGHTTEXT As Long = 14
private Const COLOR_HOTLIGHT As Long = 26
private Const COLOR_MENU As Long = 4
private Const COLOR_MENUTEXT As Long = 7
private Const COLOR_SCHEMES As Long = 715
private Const COLOR_SCROLLBAR As Long = 0
private Const COLOR_WINDOW As Long = 5
private Const COLOR_WINDOWFRAME As Long = 6
private Const COLOR_WINDOWTEXT As Long = 8
توضیح دادن اینکه هرکدام از اینها چا کار میکنند کار سختی پس خودتون دونه دونه امتحانشون کنید.
(getsystemcolors(flag
دستور بالا هم رنگ کلمپوتر رو میگیرد
برای این کار از یک api به نام setsyscolors استفاده میکنیم.
خیلی کارساده ای هست فقت باید نام یک فلگ و یک عدد از نوع long که همان رنگ هست رو بهش بدین.
Private Declare Function SetSysColors Lib "user32.dll" (ByVal nChanges As Long,_ ByRef lpSysColor As Long, ByRef lpColorValues As Long) As Long
و فلگ هاش هم در زیر اومده.
private Const COLOR_3DDKSHADOW As Long = 21
private Const COLOR_3DLIGHT As Long = 22
private Const COLOR_ACTIVEBORDER As Long = 10
private Const COLOR_ACTIVECAPTION As Long = 2
private Const COLOR_BACKGROUND As Long = 1
private Const COLOR_BTNSHADOW As Long = 16
private Const COLOR_BTNTEXT As Long = 18
private Const COLOR_CAPTIONTEXT As Long = 9
private Const COLOR_HIGHLIGHT As Long = 13
private Const COLOR_HIGHLIGHTTEXT As Long = 14
private Const COLOR_HOTLIGHT As Long = 26
private Const COLOR_MENU As Long = 4
private Const COLOR_MENUTEXT As Long = 7
private Const COLOR_SCHEMES As Long = 715
private Const COLOR_SCROLLBAR As Long = 0
private Const COLOR_WINDOW As Long = 5
private Const COLOR_WINDOWFRAME As Long = 6
private Const COLOR_WINDOWTEXT As Long = 8
توضیح دادن اینکه هرکدام از اینها چا کار میکنند کار سختی پس خودتون دونه دونه امتحانشون کنید.
(getsystemcolors(flag
دستور بالا هم رنگ کلمپوتر رو میگیرد
۱۳۸۷ آذر ۱۵, جمعه
popup menu
اگر میخواهید وقتی کاربر بر روی فرم شما رایت کلیک میکنه یک منو باز بشه این مطلب رو بخونید.
اول یک منو درست کنید.
بعد visible اون رو false کنید.
(activex.poumpmenu(menu as object,flgas,x,y,defult menu
کد بالا برای اضافه کردن منو به یک ابزار است.
activex همون ابزاری هست که میخواهید منو رو به اون اضافه کنید.
menu as object که در این قسمت فقت اسم منو رو بنویسید.
بقیه هم فدا سرتون.
(private sub form1_mousedown(button as integer,shift as integer,x as string,y as string
If button=2 Then
form1.proumpmenu file
END IF
End Sub
۱۳۸۷ آذر ۱۴, پنجشنبه
LoadKeyboardLayout
برای عوض کردن زبان ویندوز از این api استفاده میکنیم .
Private Declare Function LoadKeyboardLayout Lib "user32.dll" Alias_ "LoadKeyboardLayoutA" (ByVal pwszKLID As String, ByVal flags As Long) As Long
و یک flag
Private Const LANG_FARSI As Long = &H29
()private sub form1_load
LoadKeyboardLayout "00000429", 1
end sub
LoadKeyboardLayout "00000429", 1
end sub
کد بالا زبان keyboard رو از انگلیسی به فارسی تغییر میده.
exitwindowex
امروز یه کد جالب میخوام بذارم که به وسیله ی اون میشه کارهای زیر رو انجام داد .
1- shut down
2- restart
3-log off
برای این کار نیاز به چهار فلگ و یک api داریم .
حالا api viewer رو بیارید و کد exitwindowex رو به دست بیارید .
Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal_ dwReserved As Long) As Long
و flag های زیر.
و flag های زیر.
EWX_FORCE
EWX_SHUTDOWN
EWX_REBOOT
EWX_LOGOFF
Const EWX_LOGOFF = 0
Const EWX_SHUTDOWN = 1
Const EWX_REBOOT = 2
Const EWX_FORCE = 4
حالا به کدهای زیر توجه کنید .
Const EWX_SHUTDOWN = 1
Const EWX_REBOOT = 2
Const EWX_FORCE = 4
حالا به کدهای زیر توجه کنید .
(ret&=exitwindowsex(EWX_FORCE + EWX_SHUTDOWN
(ret&=exitwindowsex(EWX_FORCE + EWX_LOGOFF
(ret&=exitwindowsex(EWX_FORCE + EWX_REBOOT
توجه : EWX_FORCE برای دستوری کردن و عملی کردن به کار میرود .
اشتراک در:
پستها (Atom)
Input Output
خب خیلی جاها من دیدم که گفتن نمیشه با ویژوال بیسیک ورودی خروجی هارو کنترل کرد. در صورتی که این حرف کاملآ اشتباه هست. ویژوال بیسیک قابلیت کنت...
-
خب خیلی جاها من دیدم که گفتن نمیشه با ویژوال بیسیک ورودی خروجی هارو کنترل کرد. در صورتی که این حرف کاملآ اشتباه هست. ویژوال بیسیک قابلیت کنت...
-
حتما شما هم تا حالا اسم رجیستری به گوشتون خورده و باهاش آشنایی دارید. رجیستری ویندوز رو میشه از طریق برنامه ی regedit درش تغییراتی به وجود آ...
-
خب امروز میخوام یه api رو معرفی کنم که با استفاده از اون میشه یکم شکل و شمایل فرم برنامه رو تغییر داد. فرمت تابع به شکل زیر میباشد Private D...