آموزش Api در ویژوال بیسیک

saalek110

Well-Known Member
آموزش Api در ویژوال بیسیک

جناب آقای حمید احمدی لطف کردند و از پست 193 تاپیک آموزش مصور ويژوال بيسيك visual basic در مجيد آنلاين بحث api را گفتند.
من می خواهم در این تاپیک به نقل قول آنها بپردازم و سپس موارد دیگری را اضافه کنم. مواردی که از آن تاپیک نقل می کنم را در اول پست لینک پست را می گذارم.
 

saalek110

Well-Known Member
پست 193 :



نقل از :
دوستان عزیز شاید برایتان جالب باشد بدانید که ویژوال بیسیک از یک سری روالها و توابع داخلی ویندوز به نام API استفاده میکند که شیرینی یادگیری ویژوال بیسیک را دوچندان میکند . این روالها و توابع در فایلهایی با پسوند .DLL ذخیره می شوند و سه فایل معروفی که اکثر روالها و توابع API در آنها می باشند عبارتند از :

USER32.DLL
شامل توابعی است که محیط ویندوز و واسط کاربر مثل مکان نماها ،
منوها و پنجره ها را کنترل میکند.

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

KERNEL32.DLL
شامل توابعی است که سخت افزار و واسط نرم افزار داخلی ویندوز را کنترل میکند.


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

از آنجا که توابع API خیلی زیاد می باشند در ویژوال بیسیک ابزاری به نام API Viewer معرفی شده است که با آن میتوان این روالها و توابع را پیدا کرد و فرمت دستوری آنها به همراه آرگومانهای آنها را از این ابزار کپی کرد و در ویژوال بیسیک استفاده کرد. برای اضافه کردن API Viewer کافی است از منوی پنجره Add-Ins در ویژوال بیسیک گزینه Add-In Manager را انتخاب کرده و روی گزینه VB 6 API Viewer دو بار کلیک کرده تا به گزینه Add-In Manager اضافه شود و بعد با انتخاب آن API Viewer را فعال کنیم. از آنجا که اکثر روال های API در فایلی به نام Win32api.txt نوشته شده اند با بارکردن این فایل در API Viewer میتوان به اکثر توابع API دسترسی پیدا کرد. البته ما میتوانیم ثابتها – اعلانها و همه انواع داده ها را با انتخاب Constants و Declares و Types درون گزینه API Type پیدا کنیم ( لازم به ذکر است که فایلهای .DLL در زمان اجرا بطور دینامیکی به برنامه شما پیوند می خورند نه در زمان ترجمه )

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

saalek110

Well-Known Member
پست 193 :


نقل از :


بعضی مواقع میخواهید که برنامه اتان فایلهای اضافی خود را در پوشه Temp بگذارد در آن موقع میتوان از توابع GetTempPath() به این صورت استفاده کنید.

ملزومات:
یک فرم
یک تکست باکس
یک دکمه

سالک : آقای احمدی نام هم داده بود به ابزارها ولی من نام نمی دهم.

با استفاده از API Viewer و در قسمت Declares تایپ می کنیم GetTempPath (توجه کنید که حروف کاملا" از نظر بزرگی و کوچکی مطابق باشد) متنی را که در قسمت Selected Items می آید را با استفاده از گزینه copy کپی کرده و در قسمت بالای کدهای ویژوال بیسیک ( البته در حالت Private ) می گذاریم
حال به کد مربوطه توجه کنید :

کد:
Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long

Private Sub Command1_Click()

Dim intBuffer As Integer
Dim strHamidahmadi As String * 255

intBuffer = GetTempPath(255, strHamidahmadi)
Text1.Text = Left(strHamidahmadi, intBuffer)

End Sub

توجه کنید که در قسمت معرفی کردن یک رشته از نوع string می بایست طول رشته را که من در اینجا 255 معرفی کردم حتما" بنویسید تا ویژوال بیسیک بتواند طول رشته را داشته باشد هرچند که بعید به نظر میرسد که یک مسیر بیشتر از 255 کاراکتر داشته باشد.
 
آخرین ویرایش:

saalek110

Well-Known Member
در 2 پست قبل من پست 193 را نقل کردم . حالا کمی با شکل محیط کار را شرح می دهم.

از آنجا که توابع API خیلی زیاد می باشند در ویژوال بیسیک ابزاری به نام API Viewer معرفی شده است که با آن میتوان این روالها و توابع را پیدا کرد و فرمت دستوری آنها به همراه آرگومانهای آنها را از این ابزار کپی کرد و در ویژوال بیسیک استفاده کرد. برای اضافه کردن API Viewer کافی است از منوی پنجره Add-Ins در ویژوال بیسیک گزینه Add-In Manager را انتخاب کرده و روی گزینه VB 6 API Viewer دو بار کلیک کرده تا به گزینه Add-In Manager اضافه شود و بعد با انتخاب آن API Viewer را فعال کنیم. از آنجا که اکثر روال های API در فایلی به نام Win32api.txt نوشته شده اند با بارکردن این فایل در API Viewer میتوان به اکثر توابع API دسترسی پیدا کرد. البته ما میتوانیم ثابتها – اعلانها و همه انواع داده ها را با انتخاب Constants و Declares و Types درون گزینه API Type پیدا کنیم ( لازم به ذکر است که فایلهای .DLL در زمان اجرا بطور دینامیکی به برنامه شما پیوند می خورند نه در زمان ترجمه )



b1.gif



b2.gif



b3.gif



b4.gif



b5.gif



b6.gif



b7.gif




در عکس یکی مانده به آخر من GetTempPath را paste کردم و add را زدم. ولی اشتباهی زدم چون باید اول از زیر دکمه add گزینه private را می زدم. اگر public را در کد خود انتخاب کنید خطا می دهد برنامه.

کد:
Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long

Private Sub Command1_Click()

Dim intBuffer As Integer
Dim strHamidahmadi As String * 255

intBuffer = GetTempPath(255, strHamidahmadi)
Text1.Text = Left(strHamidahmadi, intBuffer)

End Sub

نتیجه اجرا:

b8.gif


در درایوی که ویندوز نصب کرده اید در پوشه داکیومنت ستینگ و بعد نام یوزر و بعد Local Settings پوشه temp هست که فایلهایی آنجا ذخیره می شوند.
 
آخرین ویرایش:

saalek110

Well-Known Member
پست 194:



نقل از :


آیا وقتی بر روی صفحه مانیتور راست کلیک میکنید توجه کرده اید چه گزینه هائی برای شما آماده می شود
حال ما میخواهیم برای شما توسط API این مورد را توضیح دهیم.

ملزومات لازم :
یک فرم – یک تکست برای نشان دادن برگشتی توابع API

کد:
Private Const MF_SEPARATOR = &H800&
Private Const MF_STRING = &H0&

Private Const TPM_HORIZONTAL As Long = &H0&
Private Const TPM_RETURNCMD As Long = &H100&
Private Const TPM_VCENTERALIGN As Long = &H10&

Private Type POINTAPI
    X As Long
    Y As Long
End Type



Private Declare Function CreatePopupMenu Lib "user32" () As Long
Private Declare Function TrackPopupMenuEx Lib "user32" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal X As Long, ByVal Y As Long, ByVal hWnd As Long, lptpm As Any) As Long
Private Declare Function AppendMenu Lib "user32" Alias "AppendMenuA" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As Any) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Declare Function DestroyMenu Lib "user32" (ByVal hMenu As Long) As Long

Dim lngMenu As Long

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim ptiHamid As POINTAPI
Dim lngAhmadi As Long

lngMenu = CreatePopupMenu()

AppendMenu lngMenu, MF_STRING, 1, "Open"
AppendMenu lngMenu, MF_STRING, 2, "Close"
AppendMenu lngMenu, MF_SEPARATOR, 3, ByVal 0&
AppendMenu lngMenu, MF_STRING, 4, "Properties"

GetCursorPos ptiHamid

lngAhmadi = TrackPopupMenuEx(lngMenu, TPM_RETURNCMD, ptiHamid.X, ptiHamid.Y, Me.hWnd, ByVal 0&)

DestroyMenu lngMenu

If (lngAhmadi = 0) Then
Text1.Text = "BaBa Click Kon"
ElseIf (lngAhmadi = 1) Then
Text1.Text = "Open"
ElseIf (lngAhmadi = 2) Then
Text1.Text = "Close"
Else
Text1.Text = "Properties"
End If

End Sub

تابع CreatePopupMenu یک Popupmenu می سازد و یک اشاره گر از آن را بر میگرداند در ابتدا خالی است و توسط تابع AppendMenu پر میشود.


تابع TrackPopupMenuExمنوی ساخته شده توسط تابع AppendMenu را نمایش میدهد و ID آن را برمیگرداند.

تابع GetCursorPos ماوس را در منطقه ای محبوس میکند.

تابع DestroyMenu اشاره گر ساخته شده توسط CreatePopupMenu را از حافظه پاک می کند.

MF_STRING یک منوی عادی ساخته میشود.

MF_SEPARATOR یک خط جدا کننده می سازد.

TPM_RETURNCMD اگر مقدار این تابع را به متغیر Wflage اختصاص دهیم مقدار برگشتی تابع ID منویی است که بر روی آن کلیک میکنیم.
 
آخرین ویرایش:

saalek110

Well-Known Member
پست 195:



نقل از :

بچه ها این دفعه میخواهم درباره تابع API ، TextOut برای شما بگویم هیچ میدانید که وقتی در ویژوال بیسیک دستور Form1.print را صادر میکنید در حقیفت از تابع API ، TextOut استفاده میکنید درحقیقت این تابع یک متن را در مکانی دلخواه ترسیم میکند ضمن آنکه میتوان تعداد کاراکترهائی را که تابع باید از متن ترسیم کند را تعیین کنیم
این مثال را با ایجاد یک فرم جدید دنبال میکنیم

کد:
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 = "hamid Ahmadi"
TextOut Me.hdc, 50, 100, strHamid, Len(strHamid)
End Sub

در این مثال با استفاده از گزینه های مختلف فونت و استفاده از AutoRedraw برای اینکه هنگامی که فرم load میشود متن بر روی فرم نمایش داده شود و استفاده از تابع TextOut رشته hamid ahmadi را برروی فرم در موقعیت x = 50 و y = 100 نشان دادیم ضمن آنکه با استفاده از خاصیت len خروجی تعداد کاراکترهای strhamidرا که همان متن hamid Ahmadi می باشد را بر روی فرم مشخص کردیم

b9.gif
 
آخرین ویرایش:

saalek110

Well-Known Member
CharLower تابع دیگری از API

پست 196:


نقل از :


[/URL]
بچه ها ، گاهی پیش آمده که متنی را به صورت حروف بزرگ نوشته باشید و بخواهید آن را به حروف کوچک تبدیل کنید. خوب با استفاده از این تابع شما میتوانید تمام حروف در یک رشته را به حروف کوچک تبدیل کنید.
مواد لازم
یک فرم جدید
یک دکمه
دو تکست باکس

لطفا" به این کد توجه کنید

کد:
Private Declare Function CharLower Lib "user32" Alias "CharLowerA" (ByVal lpsz As String) As String

Private Sub Command1_Click()
Dim strHamid As String
strHamid = Text1.Text
CharLower strHamid
Text1.Text = strHamid
End Sub
 
آخرین ویرایش:

saalek110

Well-Known Member
CharUpper تابع دیگری از API

پست 197:


نقل از :

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

لطفا" به این کد توجه کنید

کد:
Private Declare Function CharUpper Lib "user32" Alias "CharUpperA" (ByVal lpsz As String) As String

Private Sub Command1_Click()
Dim strHamid As String
strHamid = Text1.Text
CharUpper strHamid
Text1.Text = strHamid
End Sub
 
آخرین ویرایش:

saalek110

Well-Known Member
دو تابع API به نام BlockInput و Sleep

پست 198:



نقل از :

بچه ها آیا پیش آمده که بخواهید ماوس و صفحه کلید را قفل کنید. راهی که اینک بر شما فاش میکنم 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
 
آخرین ویرایش:

saalek110

Well-Known Member
تابع دیگری از API به نام AnimateWindow

پست 199:



نقل از :

هیچ به فکرتان افتاده که شما هم مانند بسیاری از برنامه نویسان از حالت انیمیشن استفاده کنید و برای باز و بسته کردن فرمهایتان و یا اجزای داخل آن متوسل به کارهای زیبایی هم بشوید من به شما تابع 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
 
آخرین ویرایش:

saalek110

Well-Known Member
در تاپیک (( آموزش API )) نمونه ای شبیه پست 199 هست.
چون برنامه پست 199 یک فرم را به حالت کشویی باز می کند و عکس زیاد مفید نیست و باید انیمیشن بگذاریم این برنامه را نگاه کنید در این تاپیک با این تصویر:

sw.gif

البته برنامه عکس بالا فرق دارد. دو دکمه و یک تکست باکس به فرم بیافزایید با کد زیر:

کد:
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'@@@                              @@@
'@@@     HidenSoft Group          @@@
'@@@     [email protected]      @@@
'@@@     HidenSoft.co.Sr          @@@
'@@@                              @@@
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

' áíÓÊ ãÊÛíÑ åÇ
Const AW_HOR_POSITIVE = &H1
Const AW_HOR_NEGATIVE = &H2
Const AW_VER_POSITIVE = &H4
Const AW_VER_NEGATIVE = &H8
Const AW_CENTER = &H10
Const AW_HIDE = &H10000
Const AW_ACTIVATE = &H20000
Const AW_SLIDE = &H40000
Const AW_BLEND = &H80000
' ÊÚÑíÝ ÊÇÈÚ
Private Declare Function AnimateWindow Lib "user32" (ByVal hwnd As Long, ByVal dwTime As Long, ByVal dwFlags As Long) As Boolean

Private Sub Command1_Click()
  Command2.Enabled = True
  Command1.Enabled = False
  AnimateWindow Text1.hwnd, 5000, AW_HOR_POSITIVE       'Or AW_HIDE
End Sub

Private Sub Command2_Click()
    Command2.Enabled = False
    Command1.Enabled = True
    AnimateWindow Text1.hwnd, 5000, AW_VER_POSITIVE Or AW_HIDE
End Sub

Private Sub Form_Load()
  Text1.Visible = False
  AnimateWindow Me.hwnd, 2000, AW_CENTER     'Or AW_ACTIVATE
 'AnimateWindow Me.hwnd, 500, AW_VER_POSITIVE Or AW_HOR_NEGATIVE
  Me.Cls
End Sub
 

saalek110

Well-Known Member
از همین تاپیک در پست 9 برنامه مفیدی داریم به نام AlwaysOnTop . یعنی فرم زیر پنجره های دیگر نرود و همیشه رو باشد.

دو دکمه به فرم اضافه کنید و کد زیر:

کد:
Option Explicit
'All these Private's can be changed to Public when it is placed in a module
Private Const HWND_TOPMOST = -1
Private Const HWND_NOTOPMOST = 1
Private Const SWP_NOMOVE = &H2
Private Const SWP_NOSIZE = &H1

Private Declare Function 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) _
As Long
Private Sub Command1_Click()  ' activate
    SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, _
    SWP_NOMOVE Or SWP_NOSIZE
End Sub

Private Sub Command2_Click()  ' deactivate
    SetWindowPos Me.hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, _
    SWP_NOMOVE Or SWP_NOSIZE
End Sub
 

Parthia

Member
بابا Saalek جان خسته نباشی
یه خسته نباشی اساسی برا اینکه این همه آموزش خوب اینجا گذاشتی
واقعا وقتی آدم VB بلد باشه ولی نتونه با API کار کنه انگار یه نفر که میدونه شطرنج چیه ولی بلد نیست بازی کنه دقیقا من هم یکی دو ماه پیش همین وضعیت رو داشتم
 

saalek110

Well-Known Member
قربونت Parthia جان.


منبع :
http://forum.p30world.com/showthread.php?t=140405
--------------------------------------------
شاید مطلب زیر مربوط به این تاپیک نباشد یا باشد. بهرحال بسیار مفید است.
============================================
ميخاستم بپرسم يك فايل dll چيه و چيكار ميكنه؟ آيا ميشه dllي رو كه با يك زبان نوشته شده در ساير زبان ها به كار برد؟ اصلاً از كجا بفهميم كه محتويات يك dll چيه و چيكار ميكنه؟ وتفاوت فايل dll با فايل cab چيه؟


نویسنده : _H2_

سلام
dll مخفف dynamic link library به معنای "کتابخانه پیوند پویای دینامیکی"، گرچه جدیداً کمی از نامش فاصله گرفته ولی اصل بنیانش فرقی نکرده، به نوعی dll خیلی شبیه exe است و میتواند هر کاری در رایانه انجام دهد و باید با یک زبان برنامه نویسی ساخته شود و برایش کد نویسی کرد.

برنامه نویسان دستورات و بلوک کدهای پرکاربرد را در dll بسته بندی میکنیم تا بتوانیم در برنامه های مختلف از آن استفاده کنیم و نیاز به copy و paste کدها نداشته باشیم و یا اگر کد ایرادی داشت و اصلاحش کردیم مجبور نشویم به تمام برنامه ها بریم و کد را در آن اصلاح کنیم، فقط dll را اصلاح میکنیم!!
یا مورد دیگر اهمیت آنها در پلاگین های پیچیده و خاص است که با وجودی که برنامه ای تهیه شده و تمام شده اجازه میدهد بخش هایی به برنامه در آینده اضافه شوند! بدون نیاز به پاک کردن یا نصب مجدد برنامه و فقط با کپی dll جدید.

مثلاً تا حالا به پنجره Open و Save اغلب برنامه های ویندوز دقت کرده اید؟ چرا همه شکل هم هستند؟ آیا همه از روی هم کپی زده اند؟ نه! دستورات نشان دادن دیالوگ استاندارد Open و Save در فایل comdlg32.dll در System32 قرار دارد تا همه برنامه ها از ان استفاده کنند.
یا فایلهای فوق اعلده معروف و اصلی:
ntdll.dll یکی از ریشه ای و بنیانی ترین بخش های ویندوز در ضمینه مدیریت حافظه و هسته ویندوز، و در شوکت این dll همان بس که kernel32.dll مستقیماً از این dll استفاده میکند.
kernel32.dll مدیریت حافظه و هسته اصلی ویندوز.
gdi32.dll مدیر گرافیکی ویندوز و مسئول بخش اعظم هر آنچه در مانیتور دیده میشود.
user32.dll مدیر ارتباط با کاربر که کنترل و سازمان دهی فرامین را بر اعهده دارد.
advapi32.dll مدیر بانک اطلاعاتی معروف Registry ویندوز.
shell32.dll مدیریت پوسته دیداری و ارتباط با کاربر ویندوز و فرامین سطحی کاربر.
comctl32.dll مدیریت مستقیم تمام کنترلرهای عمومی ویندوز.
(یعنی هر Buttom یا TextBox یا ComboBox و... را که می بینید مدیریت زیربنایی اش توسط این dll صورت میگیرد.)
امیدوارم dll های دیگه که به علت کمی وقت یا فراموشی اسمشان را ننوشتم ناراحت نشوند! ما دوستدارشان هستیم! (dll نیستیم و dll ها را دوست داریم !!!!! از شوخی گذشته من واقعاً dll ها را بیشتر از exe ها دوست دارم و هر زبانی که یاد گرفتم، اول چند و چون dll سازیش را یاد گرفتم و بعد exe !)
هرکدام از این فایلها برای خودشان دنیایی تکنولوژی هستند!!!! و برخیشان شاهکار برنامه نویسی هستند!
اگر به System32 ویندوز نگاهی بیاندازید، در اصل دارید به هسته اصلی مغز ویندوزتان نگاه میکنید!!
به عنوان مثال بهترین برنامه برای دیدن محتویات و روابط این فایلها وجود دارد و نیازی به نصب هم ندارد، Depends.exe است که یک برنامه خیلی کوچک است که با خود VS کپی میشود (ولی نه آخرین ورژنش!)
ونیز اقلب میشود dll را با یک زبان نوشت و در دیگری استفاده کرد. و در محیط دات نت همیشه میشود!

تشخیص محتویات dll نیاز به برنامه های مختلف دارد، چون توسعه تلکنولوژی مربوطه باعث شده dll ها خیلی فراتر روند و شامل انواع و اقسام کدها و اشیا باشند در نتیجه برای هر یک از موارد api - ActiveX - .Net library - Resorce و... برنامه ای خاص وجود دارد ولی بهترین کمک راهنمای شرکت سازنده است.
------------------------------------------------------------
فایل cab هم که اصلاً فرق دارد و یک فرمت فشرده است چیزی شبیه zip و اصلاً شباهتی به dll ندارد، شما یک سری فایل را برای بسته بندی و کوچک شدن cab میکنید و یک بچه دبستانی هم میتواند انجامش دهد!!!!
------------------------------------------------------------
یعنی در کل dll را میشود در ردیف ocx و exe قرار داد و cab را در ردیف zip و rar !
 
آخرین ویرایش:

blest

New Member
سلام خدمت بروبچه های برنامه نویس.
یه سوال
بعضی توابع api در داخل فایل win32api وجود ندارند.از کجا باید اینا رو load کرد؟
با تشکر blest

موقعی که Api Viewer را کلیک میکنید و فایل متنی Win32api.txt را Load میکنید.بعضی توابع در این فایل وجود ندارند.این فایلها را از کجا باید Load کرد؟

اگه میشه راهنماییم کنید:-?
 
آخرین ویرایش توسط مدیر:

saalek110

Well-Known Member
من راستش زیاد api بلد نیستم بخاطر همین منظور شما را نفهمیدم ولی دوستان بلدند جواب می دهند.
ولی در سایت زیر:
http://www.activevb.de/rubriken/apiviewer/index-apiviewereng.html
از این لینک:
http://www.activevb.de/rubriken/apiviewer/downloads/apv2004_v310.exe
یک برنامه یکی دو مگائی قابل دانلوده که ادعا کرده که در وی بی 6 اون که api ها را لیست کرده مال ویندوز های قدیمی است و برای ویندوزهای جدید این خوبه.
If you work a lot with the Windows API you may have noticed that the win32api.txt text file distributed with VB is completely out of date. This file is based on Windows 95 header files. Lots of new library function have been introduced with Windows 98, Windows 2000, Windows ME, and Windows XP. If you want to use these functions you can search the internet for their declaration. This takes a lot of time and and may even be unsuccessful.

For that purpose we have developed ApiViewer 2004, which is meant to replace the Microsoft API viewer utility. The database contains the most up to-date declarations taken from the most current Windows XP header files:
6 500
declarations for functions and 55 000 constants. In contrast to this win32api.txt contains only
1 500
declarations for functions and 5 000 constants. So why not simply release a new version of win32api.txt? Maybe you don’t believe it but the Microsoft API viewer utilitycrashes with an overflow error when trying to load the new version of the file.
ببین این برنامه مشکلت را حل می کنه؟

این پست را هم بخوان.
 
آخرین ویرایش:

saalek110

Well-Known Member
اجرای صدا با api :

نقل از :
http://vb6.blogfa.com/
----------------------------

اجرای صدا در ویژوال بیسیک 6


برای پخش صدا با فرمت wav در ویژوال بیسیک 6 ابتدا یک ماژول را تولید کنید وکدزیر را در آن بنویسید

Public lSound As Long
Declare Function sndSound Lib "WINMM.DLL" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long

خوب حال در یک دکمه کد زیر را بنویسید

lSound = sndSound(App.Path & "\name.wav", 1)

و به جای Name آدرس فایل رو بنویسید خوب حالا اگه رو یه دکمه کلیک کنید صدا پخش میشه

سالک: من طبق آموزش بالا انجام دادم و درست بود.

=============================

http://forum.persiantools.com/showthread.php?t=24649

این برای ضبط و پخش صداست.

----------------------------------------------
اینجا هم خوبه:
http://www.p30world.com/forum/showthread.php?p=478179
 
آخرین ویرایش:

amir13633

New Member
حرکت موس روی کل دسکتاپ - VB

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

the_king

مدیرکل انجمن
توابع API مورد استفاده اینها هستند :

ClipCursor ماوس را به یک کادر مستطیل شکل RECT محدود می کند و ماوس نمی تواند از آن خارج شود.

SystemParametersInfo یکسری اطلاعات را در مورد پارامترهای سیستم می گیرد، ما با استفاده از SPI_GETWORKAREA
مقدار کادری را دریافت می کنیم که کل صفحه مانیتور را بجز Taskbar مشخص می سازد.

GetCursorPos مشخص می کند که ماوس اکنون در چه موقعیتی قرار دارد.

WindowFromPoint نشان می دهد که در موقعیت x , y چه پنجره ای قرار دارد و hWnd آن چیست.

SetCursorPos موقعیت فعلی ماوس را تغییر می دهد.

من برنامه ای ساختم که سه گزینه به شما ارائه می کند :

Lock Sample Picture (Heart) -1
این گزینه می تواند از رفتن ماوس روی تصویر یک قلب قرمز رنگ جلوگیری نماید. حاشیه قلب بطور کامل مرز بندی شده است.

2- Lock Menu
این گزینه از رفتن ماوس روی منوی بالای پنجره جلوگیری می کند. منوی برنامه به طول خود پنجره فرم فرض می شود.

3- Lock Start & Taskbar
این گزینه از رفتن ماوس روی منوی Start و Taskbar جلوگیری می نماید.

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

کد کامل برنامه به همراه فایل اجرایی exe بصورت zip شده ضمیمه این پست می باشد.
 

پیوست ها

  • Preview.gif
    Preview.gif
    4.8 کیلوبایت · بازدیدها: 10
  • LockMouse.zip
    9.7 کیلوبایت · بازدیدها: 46

جدیدترین ارسال ها

بالا