۱۳۸۷ بهمن ۱۰, پنجشنبه

windowfrompoint

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

مواد لازم:1 عدد فرم - 1 عدد تایمر - لیبل(label)به میزان لازم.

()Private Sub Timer1_Time
Dim wnd As Long
Getcursorpos pointapi
(wnd=Windowfrompoint (pointapi.x,pointapi.y
Label1.caption=wnd
End Sub

۱۳۸۷ بهمن ۷, دوشنبه

random files

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

منظور من اینکه میتونید یک تایپ(مثل تایپ توی 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 هم بزارید.

۱۳۸۷ دی ۲۹, یکشنبه

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)میشه.

Input Output

خب خیلی جاها من دیدم که گفتن نمیشه با ویژوال بیسیک ورودی خروجی هارو کنترل کرد. در صورتی که این حرف کاملآ اشتباه هست. ویژوال بیسیک قابلیت کنت...