PDA

View Full Version : ایجاد و استفاده از توابع API



ali190
جمعه 09 بهمن 1388, 14:45 عصر
سلام خدمت اساتید و دوستداران اکسس
من یک سئوال بنیادین در باره اکسس داشتم:
چطور میشه بخشهای مختلف ویندوز رو از طریق اکسس کنترل کرد؟
شاید جوابتون این باشه که از طریق توابع API
ولی شاید این سئوال من مهمتر باشه که این توابع API از کجا می آیند؟
آیا این توابع API مرجع یا رفرنس خاصی دارد ؟
آیا برنامه ای ، یا کتاب ، یا سایت خاصی وجود دارد که کارهای مختلف ویندوز رو به توابع API برگردان کند تا ما در برنامه هامون ازشون استفاده کنیم؟
آیا نوشتن این توابع نیاز به نبوغ خاصی دارد یا نه این کدها همگی از پیش تعریف شده است.
اگر میشه لطفاً :
به ما ماهی ندید ، بلکه روش ماهیگیری رو توضیح بدید.
آیا ساخت این توابع نیاز به یک الگوریتم خاص دارد یا نه یک مرجع کلی(سایت ، برنامه خاص، کتاب و...) دارد که کاربر بنا به نیازش اونارو فقط در برنامه هاش کپی و استفاده میکند.
یه سئوال بسیار مهمتر اینکه وقتی که من لاین توابع رو داخل برنامه ام آوردم چطوری میتونم از اونها استفاده کنم.منظور set کردن آرگومانهای اونهاست؟

علیرضا حسن زاده
جمعه 09 بهمن 1388, 18:18 عصر
دوست عزیز توابع API رو برنامه نویس(منظورم من و شما یا هر برنامه نویس دیگه) ایجاد نمیکه و الگوریتمش رو هم به جز لینوکس که متن باز هست تو سیستم عامل های دیگه نمیشه دید (ابته به روش معمول). این توابع توسط کسی که سیستم عمل رو ایجاد کرده ساخته شده و مثلا توی ویندوز تمام توابع API توی DLL ها قرار داده شدن و برنامه نویس هایی که می خوان برای اون سیستم عامل برنامه بنویسن از توابع داخل اون DLL ها استفاده می کنند.
خوب حالا حتما می پرسی که از این DLL ها چطوری استفاده کنم یا کجا ذخیره شدن؟
اکثر این DLLها در ویندوز XP توی پوشه Windows\System32 هستن و معمولا سه تای اونا بیشتر از بقیه استفاده میشن: User32.DLL ، Kernel.DLL یکی دیگه هم اگه درست یادم باشه GDI هست. هرکدوم از این DLL ها حاوی توابع خاصی هستند که بسته به نوع کاربردشون توی اونها دسته بندی شدن.
مثلا بیشتر توابع کاربا حافظه و کارهای سیستمی تو Kernel هست.
هر زبانی برای ارتباط با DLL ها روش خاص خودش رو داره (البته به این نکته توجه داشته باشین که اکثر این DLLها با زبان Cو++C ساخته شدن و توی اونها راحت تر میشه ازشون استفاده کرد) برای کار با توابع API توی VB یه روش خوب و سراست وجود داره اونم استفاده از API Text Viewer هست به این صورت که اگه نام تابع APIیی رو که می خوان استفاده کنید رو بلد باشین و تو این برنامه وارد کنید قطعه کد VB بهتون میده کپی کردن اون توی برنامه می تونید از اون تابع مثل توابع دیگر استفاده کنید، البته این نکتهرو توجه داشته باشین که این تابع ها توی برنامتون دیگه بدنه ندارن و شما فقط باید اون ها رو فرخوانی کنید و وقتی اون ها رو فراخوانی می کنید برنامه اون DLL رو به صورت اتوماتیک فراخوانی میکنه و تابع رو اجرا می کنه دیگه زیاد وارد جزئیات نمیشم اگه بعدا خواستین بیشتر توضیح میدم
این نکته رو هم توجه داشته باشین که از هر زبانی که استفاده کنید در اکثر موارد(99%) کامپایلر او زبون توابع API همون سیستم عامل رو فرخوانی می کنه مثلا تو خود VB با اینکه شما کدی راجع به ایجاد فرم نمی بیند ولی در پس زمینه در زمان اجرا برای ایجاد و نماش فرم توابع API فرخوانی میشن:لبخند:
بازم مشکلی داشتین پیام بدین در خدمتم

lordarma
جمعه 09 بهمن 1388, 18:35 عصر
از برنامه API Guide استفاده کنید،
قابلیت های زیادی دارد...
موفق باشید.

ali190
جمعه 09 بهمن 1388, 19:34 عصر
دوستان عزیز مثلاً فرض کنید که من میخوام در فرمم یک دکمه تعبیه کنم که وظیفه اش اینه که بین contex و national قسمت regional and language کنترل پنل سوئیچ کنه.
مثلاً برای انجام این کار که شدیاً هم بهش نیازمندم باید چطوری این تابع رو استخراج کنم.
خواهشاً این روش بیرون کشیدن توابع دلخواه از دل dll هارو به من آموزش بدید
باور بفرمائید که مدت مدیدی است که در این مورد جستجو میکنم ولی هرچی گشتم بیشتر سردرگم و گیج شدم:گیج:
خواهَهً با این مثال روش رو به من آیا بدید
ممنونم از شما دوستانی که این قدر مرد و با معرفت هستید.

lordarma
جمعه 09 بهمن 1388, 21:03 عصر
دوستان عزیز مثلاً فرض کنید که من میخوام در فرمم یک دکمه تعبیه کنم که وظیفه اش اینه که بین contex و national قسمت regional and language کنترل پنل سوئیچ کنه.
مثلاً برای انجام این کار که شدیاً هم بهش نیازمندم باید چطوری این تابع رو استخراج کنم.
خواهشاً این روش بیرون کشیدن توابع دلخواه از دل dll هارو به من آموزش بدید
باور بفرمائید که مدت مدیدی است که در این مورد جستجو میکنم ولی هرچی گشتم بیشتر سردرگم و گیج شدم:گیج:
خواهَهً با این مثال روش رو به من آیا بدید
ممنونم از شما دوستانی که این قدر مرد و با معرفت هستید.


دوست عزیز،
لطفا برنامه API Guide را از گوگل سرچ و دانلود کن (با حجم 3MB)
این برنامه به من کمک زیادی کرده، متاسفانه به دلیل اینکه ADSL ام قطع است امکان اینکه همین الان برای شما برنامه مذکور را آپلود کنم وجود ندارد،
اگر پس از سرچ در گوگل برنامه را پیدا نکردید در همین جا اطلاع دهید تا خودم برایتان آپلود کنم...
موفق باشید.

ali190
جمعه 09 بهمن 1388, 21:26 عصر
دوست عزیز
میشه شما لطف کنید و اول اون تابعی که بین دوحالت contex و national سوئیچ میکنه رو به من بگید
خواهش میکنم

ali190
جمعه 09 بهمن 1388, 21:46 عصر
برنامه رو دانلود و نصب کردم
حالا میشه به من بگید چطور میتونم از این برنامه سوئیچ کردن بین حالت CNOTEX و NATIONAL که در REGIONAL AND LANGUAGE کنترل پنل هست رو استخراج کنم؟
ممنونم .

lordarma
جمعه 09 بهمن 1388, 21:51 عصر
از منوی فایل Search را انتخاب کنید،
سپس بر روی سربرگ Exaple(s کلیک کنید و تمام کد ها را به محیط VB انتقال دهید...
در اون مورد خاصی که شما فرمودید نمی دونم باید چه کلمه ای رو سرچ کرد!
به هر حال بگردید توش، حتما پیدا می کنید...

ali190
جمعه 09 بهمن 1388, 23:31 عصر
خواهشاً توضیح بدید که چطور میشه از این برنامه استفاده کرد؟

علیرضا حسن زاده
شنبه 10 بهمن 1388, 02:00 صبح
می تونی از تابع SetLocaleInfo که تو Kernel32 تعریف شده استفاده کنی برای اطلاعا بیشتر هم می تونی از MSDN استفاده کنی فکر نکم کسی بهتر از MSDN بتونه توضیح بده
Public Declare Function SetLocaleInfo Lib "kernel32" Alias "SetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String) As Long

این کدی که باید تو VB برای استفاده از این تابع بنویسی

ali190
شنبه 10 بهمن 1388, 16:26 عصر
باتشکر از حسن نظر شما
من چطور میتونم از این کد استفاده کنم
فرض کنید میخوامن این کار از طریق یک command boton در فرمم انجام شود.

ali190
یک شنبه 11 بهمن 1388, 17:27 عصر
دوستان و اساتید گرامی
خواهَآض کمکم کنید
من از تالار اکسس مزاحمتون میشم و تقریباً میشه گفت توی این تالار مهمنونتون هستم
خواهشاً من رو دست خالی رواتنه نکنید
دوستان عزیز مثلاً فرض کنید که من میخوام در فرمم یک دکمه تعبیه کنم که وظیفه اش اینه که بین contex و national قسمت regional and language کنترل پنل سوئیچ کنه.
مثلاً برای انجام این کار که شدیاً هم بهش نیازمندم باید چطوری این تابع رو استخراج کنم.
خواهشاً این روش بیرون کشیدن توابع دلخواه از دل dll هارو به من آموزش بدید
باور بفرمائید که مدت مدیدی است که در این مورد جستجو میکنم ولی هرچی گشتم بیشتر سردرگم و گیج شدم:گیج:
خواهَهً با این مثال روش رو به من آیا بدید
یه دوستی لطف کردند و در همین تایپیک یه کد رو معرفی کردند ولی من صحت اون رو تست نکردم
چون نمیدونستم چجوریه
اگر میشه من رو راهنمایی کنید.

lordarma
یک شنبه 11 بهمن 1388, 22:43 عصر
ببینید دوست عزیز،
استفاده از توابع dll یک امر تجربی هست نه اکتسابی!
منظورم این است که برای استفاده از هر یک از این dll ها راه متفاوتی وجود دارد،
تنها چیز مشابه در استفاده از dll ها تعریف اولیه آنهاست...
با استفاده از برنامه API-Guide می توانید خیلی از نمونه ها را ببینید،
با این اوصاف من هنوز dll ی را که کار شما را راه بیاندازد پیدا نکرده ام، در واقع هنوز کاملا متوجه نشدم که شما دقیقا می خواهید چه کاری را انجام دهید،
اصلا شاید با کمی شفاف سازی، موضوع با کدی ساده حل شود و نیازی به dll نباشد،
اگر می شود کمی در مورد قسمت های contex و national توضیح دهید تا دوستان راهنمایی تان کنند...
امیدوارم موفق باشید

ali190
دوشنبه 12 بهمن 1388, 23:22 عصر
با سلام
حالت national و context در regional and language کنترل پنل در واقع حات نمایش اعداد و بعضی از فونتها را مشخص میکند
مثلاً اگر شما حالت نمایش را بر روی national بگذارید تمام اعداد شما بصورت فارسی نمایش داده میشود هر چند انگلیسی تایپ شده باشند.همین
من در واقع تابعی رو میخوام که در واقع اون رو روی دکمه ای در فرمم قرار بدم تا با زدن اون در تنظیمات regional and language بر روی حالت national تنظیم شود(این دو حالت در بخش costumize قرار دارد)

lordarma
سه شنبه 13 بهمن 1388, 13:01 عصر
من در مورد مشکلت با چند نفر صحبت کردم،
باید با رجیستری این مقدار ها را تغییر بدهی و پیدا کردن اینکه اون تنظیمات در کجای رجیستری ثبت شده است کمی مشکل است،
با این وجود من سعی می کنم جواب را پیدا کنم...
شما هم سعی کن در مورد این موضوع و کار با رجیستری آن، یک تاپیک بزنی،
شاید زودتر به جواب رسیدی...
موفق باشی

alirezabahrami
سه شنبه 13 بهمن 1388, 13:43 عصر
با سلام
حالت national و context در regional and language کنترل پنل در واقع حات نمایش اعداد و بعضی از فونتها را مشخص میکند
مثلاً اگر شما حالت نمایش را بر روی national بگذارید تمام اعداد شما بصورت فارسی نمایش داده میشود هر چند انگلیسی تایپ شده باشند.همین
من در واقع تابعی رو میخوام که در واقع اون رو روی دکمه ای در فرمم قرار بدم تا با زدن اون در تنظیمات regional and language بر روی حالت national تنظیم شود(این دو حالت در بخش costumize قرار دارد)


سلام
فقط کافیست خصوصیت Keyboard Langage تکست باکس هایت را مساوی فارسی قرار بدهید . در این حالت در هنگام تایپ کردن بدون پائین نگه داشتن کلید های ترکیبی ALT-SHIFT فارسی تایپ میشود ؛و در صورت نیاز به تایپ لاتین کلید های فوق را پائین نگه دار.
برای راست به چپ نوشتن نوشته ات نیز گزینه Reading Order را مساوی Right ToLeft قرار بده .
نیازی هم به عوض کردن گزینه های Regional and languageدر کنترل پنل نمی باشد.
موفق باشید

ali190
سه شنبه 13 بهمن 1388, 16:21 عصر
باسلام
نه مشکل من اینه که در حالت contetx محتویات جداول مربع مربع (کازاکتر نامفهوم)نمایش داده میشه ولی در حالت national اینطور نیست.

xxxxx_xxxxx
سه شنبه 13 بهمن 1388, 21:58 عصر
موضوع را تنها در یک تاپیک پیگیری کنید.
تنظیمات Regional and language option (http://barnamenevis.org/forum/showthread.php?t=202483)

با تشکر. تاپیک قفل شد/