مشاهده نسخه کامل
: آموزش توابع Api - کاربردی
سلام -
یک برنامه نویس با استفاده از توابع و اشیا ذاتی VB تنها به بخشی از سیستم عامل دسترسی و کنترل خواهد داشت . اما همین برنامه نویس با استفاده از توابع APIویندوز (Application Programming Interface Windows) قادر به کنترل ریزترین بخش های سیستم عامل خواهد بود.
من می خوام بخاطر آشنایی بیشتر دوستانم با این مباحث یکسری توابع کاربردی رو برای دوستان در این قسمت آموزش بدم . امیدوارم راضی بشید.
مقدمه:
درس اول)
دستور Declare برای تعریف توابع DLL
قبل از فرواخوانی یک تابع DLL باید اطلاعاتی راجع به مکان فایل DLL و آرگومانهای مورد نیاز آن تابع در اختیار VB قرار دهید برای این کار دو راه وجوددارد:
1 - قرار دادن DLL در لیست References پروژه
2 - استفاده از دستور Declare در یک ماژول
ادامه دارد ...:10:
API شماره 1 - تغییر زبان صفحه کلید از انگلیسی به فارسی و بالعکس
ادامه بحث یکشنبه 21/11/86
MrJamshidy
08-02-2008, 18:41
در ابتدا ورود شما رو به P30World تبریک میگم
و برای شما آرزوی موفقیت میکنم
تحلیل دستوارت :
دستور Declare در حقیقت برای ویژوال بیسیک مشخص می کند که یک تابع DLL خاص را از کجا و چگونه می توانید فراخوانی کند. ساده ترین راه برای اضافه کردن عبارت Declare به کد برنامه استفاده از توابع API Viewer که شامل تعریف بسیاری از توابع API ویندوز، به همراه تعریف ثابت ها و نوع داده های مورد نیاز برای آن توابع است.
در اینجا مثالی از نحوه تعریف تابع GetTempPath که مسیر پوشه ی Temporary ویندوز را بر می گرداند (معمولا c:\windows\temp) اورده شده است.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
کلمه Declare به ویژوال بیسیک اعلام می کند شما قصد تعریف یک تابع DLL دارید. در یک ماژول استاندارد (General فرم)عبارت Declare می تواند بصورت Public و یا private تعریف شود بسته به اینکه شما بخواهید از آن تابع تنها در همان یک ماژول و یا در کل پروژه استفاده کنید؛ در یک ماژول کلاس، عبارت Declare تنها بصورت Private تعریف می شود.
نامی که بعد از کلمه کلید Function قرار می گیرد، نام تابع است( البته نامی که شما در پروژه تان برای فراخوانی تابع استفاده می کنید). این نامه می تواند کاملا مشابه نام خود تابع API (همان نامی که در فایل DLL برای آن در نظر گرفته شده است) باشد. اگر بخواهید از نام متفاوت استفاده کنید باید نام حقیقی تابع را بعد از کلمه کلیدی Alias بیاورید.
در مثال فوق نام تابع API در فایل DLL ، GetTempPathA و نامی که شما می توانید تابع را در برنامه تان فراخوانی کنید GetTempPath است. توجه داشته با مشخص شدن نام حقیقی تابع از هر نام مجازی که بخواهید می توانید استفاده کیند بنابراین می توانید نام هایی که API Viewer بطور پیش فرض برای توابع در نظر می گیرد را بدلخواه تغییر دهید.
دلایلی که می توان برای برای استفاده از نام متفاوت بر شمرد بر شرح زیر است:
نام بعضی از توابع با کاراکتر (_) شروع شده است که در ویژوال بیسیک مجاز نیست. بنابراین باید از نام دیگری استفاده کنید.
امکان نام گذاری متفاوت به شما کمک می کند تا از یک شیوه نامگذاری استاندارد و یکپارچه در برنامه تان استفاده کنید و کدهای خوانا تری داشته باشید.
توابع API نسبت به حروف کوچک و بزرگ حساس هستند در حالیکه توابع ویژوال بیسیک اینگونه نیستند. بنابراین می توانید با انتخاب نام جدید Case این توابع را تغییر دهید.
بعضی از توابع API آرگومان هایی دارند که چند نوع متفاوت از داده را می پذیرند. در عبارت Declare این آرگومان ها از نوع Any تعریف می شوند. فراخوانی توابعی که آرگومان های Any دارند می تواند بسیار خطرناک باشد زیرا ویژوال بیسیک صحت این نوع داده ها را چک نمی کندو می تواند داده هایی از نوع غیر مجاز بهتابع ارسال شوند. برای جلوگیری از چنین وضعیتی مس توان چند نسخه از یک تابع DLL ، هر کدام با نام و نوع داده متفاوت تعریف کرد.
API ویندوز از تمام توابع یکه آرگومان رشته (String) می پذیرند دو نسخه دارد: یک نسخه ANSI یک نسخه Unicode. نسخه ANSI با پسوند A (به مثال فوق توجه کنید) و نسخه Unicode با پسوند W تمیز داده می شود. ویژوال بیسیک اگرچه درداخل از Unicode استفاده می کند امام هنگام فراخوانی یک تابع DLL بصورت خودکار تمام رشته را به ANSI تبدیل می کند. بنابراین شما معمولا از نسخه ANSI توابع API ویندوز استفاده خواهید کرد.
API ویندوز بصورت خودکار نام تمام توابعی که آرگومان رشته ای دارند را تغییر می دهد و پسوند ها را از آنها حذف می کند( با استفاده از کلمه کلیدی Alias) .
کلمه کلیدی Lib، فایل DLL را مشخص می کند که تابع در آن قرار دارد. توجه کنید که نام DLL را باید بصورت یک رشته در تعریف Declare بگنجانید. اگر فایل DLL که بعد از Lib مشخص شده در سیستم کاربر پیدا نشود یک خطای زمان _ اجرا با شماره 48 و مضمون "خطا در بارگذاری DLL " رخ خواهد داد. با این اطلاعات و مقدار یکد می توانید با این خطا مقابله کنید.
تابع API کاربردی شماره 1)تعویض زبان صفحه کلید ار انگلیسی به فارسی و بالعکس
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
PWSZKLID : این متغیر رشته 9 رقمی است که کد زبان رو مشخص می کند
Flags : مقدار این متغیر برابر 1 خواهد بود.
کد تبدیل زبان به فارسی داخل Command
(
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
کد تبدیل زبان به انگلیسی داخل Command
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
تا درس بعدی خدانگهدار ...:20:
winer3549
10-02-2008, 23:34
تا حالا که عالی بود
ممنون میشم ادامه بدی
من که هم مشتاقم و هم پیگیر
MichaelQwerty
14-02-2008, 06:51
سلام
خیلی خوب توضیح میدی
موفق باشی
با سلام
دوست عزیز خیلی خوب بود.
شما کل این توابع رو ندارین؟(منظورم به صورت pdf)
با تشکر
MrJamshidy
14-02-2008, 16:00
خوب توضیح دادن و ... نشد نون و آب که
باید یک تاپیک میزنی تا آخرش بری نه یک ای.پی.آی میزاری بعد هم دیگه به این تاپیک نگاه هم نمیکنی
MrJamshidy
14-02-2008, 16:05
بچه برای این که تاپیک خیلی خشک نباشه براتون یک ای.پی.آی میزارم
این یکی چک میکنه آیا فایل مورد نظر هست یا نه
Private Declare Function PathFileExistsA Lib "shlwapi.dll" (ByVal pszPath As String) As Long
pszPath مسیر فایل مورد نظر *اگر مقدار برگشتی 0 بود یعنی فایل مورد نظر نیست اگر هر عددی غیر از 0 بود یعنی هست
MichaelQwerty
15-02-2008, 07:38
با سلام
دوست عزیز خیلی خوب بود.
شما کل این توابع رو ندارین؟(منظورم به صورت pdf)
با تشکر
می تونی بیشتر توابع API رو توخود نرم افزار VB6 پیدا کنی
بچه برای این که تاپیک خیلی خشک نباشه براتون یک ای.پی.آی میزارم
این یکی چک میکنه آیا فایل مورد نظر هست یا نه
Private Declare Function PathFileExistsA Lib "shlwapi.dll" (ByVal pszPath As String) As Long
pszPath مسیر فایل مورد نظر *اگر مقدار برگشتی 0 بود یعنی فایل مورد نظر نیست اگر هر عددی غیر از 0 بود یعنی هست
شماره 2-
کاش دوستمون تابع بالا رو کامل می کردند و می گفتند که میشه برای کپی کردن فایل ازش استفاده کرد.
تابعی که می شود برای کپی کردن یک فایل ازش استفاده کرد . می تونید در برنامه های بانک اطلاعاتی خودتون بعنوان یک زیر روال برای تهیه پشتیبان از بانک های اطلاعاتی استفاده کنید . اینکار سرعت پشتیبان گیری رو فوق العاده بالا می بره و حجم رو خیلی پایین می آره و البته مشکلاتی هم داره که دوست دارم سایر دوستان برای مشارکت در این درس نظراتشون بدن . متشکرم.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
lpExistingFileName : آدرس فایل مبدا مثل
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
lpNewFileName : آدرس فایل مقصد
bFailIfExists : مشخص می کند در صورت وجود فایل مقصد عملیات کپی ادامه یابد یا نه . اگر صفر باشد انجام می شود و اگر یک باشد انجام نمی شود.
نحوه استفاده در برنامه :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
البته دوستان دقت داشته باشند که می توانند اختیار انتخاب مسیر ها رو از طریق componet دیالوگ متد ShowSave به کاربران نرم افزار نوشته شده بدهند.
در ضمن اگر کمی دیر بروز می کنم . می خوام دوستان بیشتری فرصت دیدن و مشارکت در بحث رو داشته باشند . در غیراینصورت گذاشتن انبوه مطالب بطور پیوسته فقط سبب خستگی و یکطرفه شدن بحث می شود.
سلام دستتون درد نكنه
آموزش خيلي خوب و دقيقي بود اما چرا اينقدر اين تاپيك غير فعاله ؟
یه سوال داشت:
کل توابع API رو به زبان فارسی میشه پیدا کرد؟
فایل pdf فارسی نداره؟
من باید برای آخر ترم 50 تا از این توابع رو آموزش بده.
ممنون میشم کمکم کنید.:10:
سلام
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
ببنيد لينك بالا به دردتون مي خوره؟
آقای nibble ممنون.
ولی این به 20 تا تابع هم نمیرسه.
ولی بازم ممنون.
کسی لینک دیگه ای سراغ نداره؟
MrJamshidy
19-02-2008, 10:59
یه سوال داشت:
کل توابع API رو به زبان فارسی میشه پیدا کرد؟
فایل pdf فارسی نداره؟
من باید برای آخر ترم 50 تا از این توابع رو آموزش بده.
ممنون میشم کمکم کنید.:10:
دوست عزیز من یک فایل آموزشی دارم 200 تا ای.پی.آی رو به فارسی توضیح داده اما آموزش ... :41: شرمندم
اگر خواستی یک پست بده واست آپلودش کنم
آقای MrJamshidy ممنون میشم اون فایل رو برام بگذارین.
با تشکر
هنوز كسي نيست كه بخواد اين بحث رو ادامه بده
آقاي nk-hsn پس كجايي؟
MrJamshidy
20-02-2008, 20:25
و حالا شما
اینم لینک بگیر برو حال کن
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
بازم سلام
من نمی دونم این آقای mrjamshidi چه پدر کشتگی با آدمای آروم داره ، آخه عزیز من جواب تو داده بودم که ...
خوب بگذریم
قبلا هم گفتم من دوست دارم اینجا در مورد توبع نظر بدهید تا بتونیم حداکثر استفاده رو از اونها ببریم تامل منم برای گذاشتن مطالب جدید برای همین مهربونای من!
لطفا در مورد توابع چون کاربردی هست نظر بدید که کجا و چطور استفاده بشه بهتر ، دوست دارم نظراتتون بشنوم.
متشکرم
اما درس جدید )
قفل کردن موس و کیبورد ...
حتما شده که بخواهید برنامه ای بنویسید که بشه با تعریف کردن پاره ای تنظیمات امنیتی از کپی کردن غیر مجاز اون جلو گیری بشه ، به عنوان مثال یک شرط 10 روزه بگذارید و بعد یک قفل ترکیبی شامل شماره سریال سخت افزار سیستم مورد نظر و یک کد که فقط خودتون می دونید بعنوان کد رجیستری بسازید که بعد موعد مقرر اگر کد وارد شد سیستم ادامه کار می ده و اگر وارد نشد ...
مثلا موس و کیبورد در هر بار ورود غیر مجاز قفل بشه ، خیلی لذت داره وقتی طرف نمی تونه هیچ کاری تاکید می کنم هیچ کاری انجام بده ؛ من امتحان کردم فوق العاده بود ...
درس )
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
متغیر :
FBlock : اگر مقدار این تابع True باشد ماوس و صفحه کلید قفل خواهند شد و اگر False باشد آزاد خواهد شد.
تذکر بسیار مهم !
قفل از اجرای این دستور برنامه تونو ذخیره کرده باشید چون بعدش مجبورید سیستمو ریست کنید که با کمال تاسف اطلاعات ذخیره نشده میره!
و یا
براش یک تایمر بزارید تا بعد از چند ثانیه مقدار FBlock از True به False برگرده
ممنون می شم اگه نظرهای کاربردی بدید با من در طرح مسائل شریک بشید
:11::10:
MichaelQwerty
21-02-2008, 06:29
آقا hk_hsn ممنونم نسبت به طرح این موضوع داره کم کم جذاب میشه
من که از این کد در نرم افزار trojan ی که می خوام به زودی بنویسم استفاده میکنم به نظر میاد فقط بدرد این جور جاها میخوره یه کم!!!
شاید یه جایی مفید واقع بشه و بیشتر از این که به دیگران آسیب برسونه کمکشون باشه!!!!
چه کنم که فکرام پلیده
دوستان علاقه مند اینجا رو هم ببینین
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
آقای MrJamshidy خیلی ممنون بخاطر لینکی که گذاشتین.:11:
آقای nk_hsn از شما هم ممنونم.ایشالا تاپیک کاملی میشه.:10:
MrJamshidy
24-02-2008, 08:06
آقای MrJamshidy خیلی ممنون بخاطر لینکی که گذاشتین.:11:
آقای nk_hsn از شما هم ممنونم.ایشالا تاپیک کاملی میشه.:10:
خواهش میکنم قابل نداشت
واقعا شرمنده ام خیلی دیر شد.
سریع و بدون مقدمه !
دیدید وقتی ویندوز بالا می آد یه صدایی داره ! خوب دستورش اینه:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
می تونید توی فرم لودتون هم اینو داشته باشید
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
دستور APP.path که می دونید ریشه جایی رو که دارید کار می کنید بر می گردونه و بقیه اش هم می گه اسم فایل صوتی چیه! (یعنی آدرس فایل صوتی)
بخوان و بخوان و بخوان تا اسیر دیکتاتور نشوی:46:
MrJamshidy
04-03-2008, 02:44
دوست عزیز خیلی دیر به دیر سر میزنی
سلام
این تابع رنگ یک پیکسل را در درون یک کنترل گرافیکی عوض می کنه ؛ اگر تابع کار خودشو درست انجام بده نتیجه یک عدد مثبت غیر صفر مشه و اگر تابع به خطا برخورد کنه عدد صفر و بر می گردونه
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
hdc : هندل گرافیکی کنترل مورد نظره
X : طول نقطه ی مورد نظر
Y : عرض نقطه ی مورد نظر
CrColor : رنگی که باید در نقطه ی مورد نظر ست بشه ( مقل VBBlue,VBRedو ... )
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
این تابع به شما کمک می کنه که یک صدای بوق رو روی کارت صدای طرف بفرستید!( تو مایه های رو اعصاب راه رفتن)
دو مورد داره:
dwfreq : فرکانس صدایی رو که می خواهید پخش بشه مشخص می کنید هر چه پایین تر باشه صدا بم تره و هرچه بالاتر باشه صدا زیر تره اگه اشتباه نکنم
dwDuration : مربوطه به مدت زمان پخش صدا بر حسب میلی ثانیه
مثال :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
خوش بگذره:11:
GolshanSoft
30-08-2009, 23:06
سلام دوستان اگه امكانش هست و كسي لينكش رو داره آموزش كامل api رو برام بزاره تامنم ياد بگيرم خداييش صواب داره .
راستي يه چيز ديگه اين توابع api كامل چند تان
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.