PDA

View Full Version : سوال: توابع API ویندوز



maminb
پنج شنبه 19 آذر 1388, 18:10 عصر
سلام عزیزان. من به تمام توابع API و آموزش استفاده ازشون در vb.net به طور کامل نیاز دارم.

کسی هست بتونه کتابی در این زمینه معرفی کنه یا سایتی چیزی؟!


پیشاپیش ممنون.:خجالت:

Computer.Programmer
پنج شنبه 19 آذر 1388, 18:29 عصر
برای من کتاب زیر خوب بوده. مخصوصاً دسته بندی های اون خیلی به دردت می خوره.

http://www.nasspub.com/components/com_virtuemart/shop_image/product/1468ef76112b3d0af1e3000074681464.jpg

می تونی این کتاب رو از این آدرس (http://www.nasspub.com//component/page,shop.product_details/flypage,shop.flypage/product_id,127/category_id,19/manufacturer_id,0/option,com_virtuemart/Itemid,1/) بخری

Hossis
جمعه 20 آذر 1388, 01:39 صبح
کتاب و آموزش زیاد هست اما به نظر من نیازی به این کار نیست چرا که در دات نت به ندرت از توابع API استفاده می شود، در واقع وی بی دات نت اکثر قریب به اتفاق این توابع را در کلاسها و فرامین خود جای داده است.
ولی باز هم یک نرم افزار آپلود می کنم که تمام توابع API رو داره (البته بدون آموزش‌)

maminb
جمعه 20 آذر 1388, 17:40 عصر
کتاب و آموزش زیاد هست اما به نظر من نیازی به این کار نیست چرا که در دات نت به ندرت از توابع API استفاده می شود، در واقع وی بی دات نت اکثر قریب به اتفاق این توابع را در کلاسها و فرامین خود جای داده است.

میتونید لیستی از اینارو همراه با آموزش ارائه بدید؟


ولی باز هم یک نرم افزار آپلود می کنم که تمام توابع API رو داره (البته بدون آموزش‌)
ممنون میشم اینکارو بکنید.

Computer.Programmer
جمعه 20 آذر 1388, 17:48 عصر
میتونید لیستی از اینارو همراه با آموزش ارائه بدید؟



دوست عزیز شما دقیقاً چه کار می خواهید بکنید که نیاز به توابع API دارید. این توابع اینقدر زیاد و گسترده هستند که واقعا نمی شه توقع داشت آنها رو در اینجا گفت.

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

maminb
جمعه 20 آذر 1388, 18:12 عصر
اینا چند تا از چیزایی هست که میخوام بدونم:



1. میخواستم یه برنامه بنویسم که دو عدد Textbox داشته باشه که کاربر تو اولی یه Username از یوزر های لوکال کامپیوتر رو وارد کنه. و تو تکست باکس دوم هم کاربر پسورد Username رو که در تکست باکس بالایی وارد کرده، وارد کنه. برنامه چک کنه اگه مطابقت داشتن، یه دایالوگ Msgbox بده!

2. اگه بالایی نشد، اقلا این رو بگید که چیکار کنم که بتونم پسورد یوزر فعلی رو چک کنم. فرض کنید من با یوزر x لاگین کردم. حالا میخوام برنامه در یک تکست باکس یه پسورد بگیره که اگه پسورد همین یوزر بود، پیغام Ok بده.

3. عوض کردن زبان ویندوز. از انگلیسی به فارسی. و بالعکس.

4. ارسال یه متن بین دو تا Process که در حال اجرا هستن.

5. بدست آوردن pid یک process.

6. بدست آوردن شماره سریال هارد که عوض نمیشه. من تو این سایت گشتم ولی چیز بدرد بخوری نبود. هر کدوم یه ایرادی داشت. ممنون میشم این برنامه رو همراه سورسش قرار بدید.



واقعا ممنونتون میشم اگه پاسخ همه ی پرسش هامو بدید.

Hossis
جمعه 20 آذر 1388, 23:15 عصر
1-من یک فرم آپلود کردم که همین کار رو می کنه،‌یعنی یوزرنیم و پسورد رو در دو تکست باکس می گیره و چک می کنه ،‌ حال بسته به کار شما باید اطلاعات رو از بانک یا یک فایل و یا هرجای دیگر گرفته و با آنچه کاربر وارد کرده مقایسه کنید
2- این کد زبان رو به فارسی تبدیل می کنه


Private Declare Function LoadKey Lib "user32.dll" Alias "LoadKeyboardLayoutA" (ByVal pwszKLID As String, ByVal flags As Long) As Long
Private Sub Form_Load()
'To Farsi
LoadKey "00000429", 1
' To English
LoadKey "00000409", 1
End Sub

بقیه جوابها رو نمی دونم ولی با API هم به زحمت این ها رو پیدا می کنید.

naserrezaee
شنبه 21 آذر 1388, 12:29 عصر
دوست من تمام اطلاعات كاربري در ويندوز ايكس پي در شاخه C:\WINDOWS\system32\config و فايل sam قرار دارد البته اين اطلاعات به صورت رمز شده هستند كه اگر بخواهيد از اون استفاده كنيد بايد ابتدا اون رو رمزگشايي كنيد . اگر تا اينجا قضيه حل شد ما بقي كه برنامه نويسي خاصي نداره

Computer.Programmer
شنبه 21 آذر 1388, 12:48 عصر
1. میخواستم یه برنامه بنویسم که دو عدد Textbox داشته باشه که کاربر تو اولی یه Username از یوزر های لوکال کامپیوتر رو وارد کنه. و تو تکست باکس دوم هم کاربر پسورد Username رو که در تکست باکس بالایی وارد کرده، وارد کنه. برنامه چک کنه اگه مطابقت داشتن، یه دایالوگ Msgbox بده!

2. اگه بالایی نشد، اقلا این رو بگید که چیکار کنم که بتونم پسورد یوزر فعلی رو چک کنم. فرض کنید من با یوزر x لاگین کردم. حالا میخوام برنامه در یک تکست باکس یه پسورد بگیره که اگه پسورد همین یوزر بود، پیغام Ok بده.



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





3. عوض کردن زبان ویندوز. از انگلیسی به فارسی. و بالعکس.



برای این کار باید با کلاس InputLanguage کار کنی به این صورت:




Dim farsi As New Globalization.CultureInfo("fa-IR")
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(farsi)






4. ارسال یه متن بین دو تا Process که در حال اجرا هستن.



برای این کار دوتا راه توی ذهنم هست (البته دقیقاً نمی دونم باید به چه شکل کار کنی. خودت تستش کن مشکلی بود بگو شاید تونستم حلش کنم)
1- استفاده از کلاس Process و بدست آوردن ماژول های یک برنامه و سپس اجرای یک ماژول.
2- استفاده از SendKey البته من از این برای ارسال کلید استفاده کردم حتماً میشه به جورایی واسۀ متن هم سفارشیش کرد.





5. بدست آوردن pid یک process.


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




6. بدست آوردن شماره سریال هارد که عوض نمیشه. من تو این سایت گشتم ولی چیز بدرد بخوری نبود. هر کدوم یه ایرادی داشت. ممنون میشم این برنامه رو همراه سورسش قرار بدید.



می گن با کلاس Management میشه کار کرد مثل همون سوال اولیت هنوز فرصت نکردم پیرامون این کلاس بررسی کنم که چه طور میشه باهاش کار کرد.



در آخر هم اینجوری سوال پرسیدن به صورت یکجا کمی رسیدن به جوابتون رو سخت تر می کنه. به نظر من واسۀ هر کدوم یک تاپبک جدا ایجاد کنید بهتر جواب می گیرید.

به هر حال بازم اگه سوالی بود بپرس خوشحال می شم کمکت کنم.

موفق باشی

Computer.Programmer
شنبه 21 آذر 1388, 12:51 عصر
دوست من تمام اطلاعات كاربري در ويندوز ايكس پي در شاخه C:\WINDOWS\system32\config و فايل sam قرار دارد البته اين اطلاعات به صورت رمز شده هستند كه اگر بخواهيد از اون استفاده كنيد بايد ابتدا اون رو رمزگشايي كنيد . اگر تا اينجا قضيه حل شد ما بقي كه برنامه نويسي خاصي نداره

دوست عزیز اتفاقاً بخش عمدۀ مشکل همین جاست. من یکی که واقعاً به چشم خودم نمی بینم بتونم با اطلاعات الانم این کارو بکنم (رمزگشایی فایل sam). گذشته از این برای اینجور کارها حتماً راه های آسون تری وجود داره.

maminb
شنبه 21 آذر 1388, 18:25 عصر
2- استفاده از SendKey البته من از این برای ارسال کلید استفاده کردم حتماً میشه به جورایی واسۀ متن هم سفارشیش کرد.


ممنون میشم این مورد رو کامل برام شرح بدید.

maminb
شنبه 21 آذر 1388, 18:30 عصر
درمورد اینکه سوزر و پسورد کاربر رو مقایسه کنیم، یه Project گیر آوردم که اینکارو میکنه و براتون پیوستش کردم ولی اینکارو تحت Console انجام میده. یعنی برنامه از نوع Console Application هستش. ممنون میشم این برنامه رو فقط همو قسمت تطبیق یوزر پس های ویندوز رو برام در قالب یه ویندوز اپلیکیشن در بیارید و برام تو همین سایت پیوست کنید.

* پروژه به دو زبان سی شارپ و vb.net هستش که راحت باشید. من فقط به زبان vb.net میخوام.

با تشکر.

Computer.Programmer
شنبه 21 آذر 1388, 19:10 عصر
ممنون میشم این مورد رو کامل برام شرح بدید.

اساس کار SendKey به اینه که به پنجرۀ فعال رشته ای رو می فرسته و طرز بکار گیری اون خیلی راحته شما برای اینکه به پنجره مورد نظرتون رشته بفرستین باید اونو فعال (Avtive) کنید. برای این کار می تونین از دستور AppActivate() استفاده کنید که این دستور نیز نیاز به شمارۀ ای دی پروسس مد نظر داره (امیدوارم گرفتم پرسس ای دی رو با همون کلاس Process یاد گرفته باشید) بعد از اجرای این دستور شما می تونید با متد send کلاس SendKey رشته یا کلید مد نظرتونو بفرستین. با یک مثال کوچیک موضوع رو واضح تر می کنم.




Public Class Form2
Dim pId As Integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
pId = Shell("CALC.EXE", AppWinStyle.MinimizedNoFocus)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
AppActivate(pId)
SendKeys.Send("22 {+} 2 {=}")
End Sub

End Class



این کد میاد و ماشین حسابو باز می کنه سپس عدد 22 رو براش می فرسته بعد کلید + سپس عدد 2 و در آخر کلید = رو میفرسته. اجراش کن تا نتیجه رو ببینی.





درمورد اینکه سوزر و پسورد کاربر رو مقایسه کنیم، یه Project گیر آوردم که اینکارو میکنه و براتون پیوستش کردم ولی اینکارو تحت Console انجام میده. یعنی برنامه از نوع Console Application هستش. ممنون میشم این برنامه رو فقط همو قسمت تطبیق یوزر پس های ویندوز رو برام در قالب یه ویندوز اپلیکیشن در بیارید و برام تو همین سایت پیوست کنید.



* پروژه به دو زبان سی شارپ و vb.net هستش که راحت باشید. من فقط به زبان vb.net میخوام.


با تشکر.


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

موفق باشید.

naserrezaee
یک شنبه 22 آذر 1388, 13:48 عصر
ممنون میشم این برنامه رو فقط همو قسمت تطبیق یوزر پس های ویندوز رو برام در قالب یه ویندوز اپلیکیشن در بیارید و برام تو همین سایت پیوست کنید.





اين هم برنامه اي كه خواسته بودي .
اگر مشكلي بود بفرمائيد تا برطرفش كنم.

maminb
یک شنبه 22 آذر 1388, 16:54 عصر
اين هم برنامه اي كه خواسته بودي .
اگر مشكلي بود بفرمائيد تا برطرفش كنم.

ممنون دوست گلم. واقعا ممنونم ازتون! لطف بسیار بزرگی در حقم کردید!

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



از جمله امکانات بخش ویژه ی انجمنم:

۱- دانلود جدید ترین نرم افزار های کرک شده فارسی و انگلیسی( این بخش از دید کاربران عادی مخفی می باشد و در لیست شمارش پستهای سایت قرار ندارد) به همراه لینک مستقیم. نرم افزار های مشهور و مهم همراه با لینک مستقیم هستند و دیگر نرم افزار ها هم در صورت درخواست کاربران ویژه، لینک مستقیمشان قرار خواهد گرفت.



۲- دیدن بخش چت باکس مخصوص کاربران ویژه

و چندین امکان نایاب دیگه که میتونید بهشون دست پیدا کنید.



اگه مایلی که از این امکانات برخوردار بشی، به من پیغام خصوصی بده و توش یوزر و پسورد دلخواهتو ذکر کن تا من به عضویت بخش ویژه در بیارمت.

naserrezaee
دوشنبه 23 آذر 1388, 07:55 صبح
دوست عزيز من كه كاري خاصي نكردم (انجام وظيفه كردم) و از اينكه تونستم كمكي بكنم خوشحالم .
درضمن در مورد اكانتي كه فرموديد بسيار ممنونم ولي متاسفانه من تا زماني كه توي اين انجمن 20 پست نداشته باشم نمي توانم پيام خصوصي براي كسي بفرستم .
اگر شما لطف كنيد و اين اكانت رو با هر "يوز" و "پس" كه دوست داشتيد بسازيد و براي من بفرسيد بسيار بسيار ممنون خواهم شد.
موفق باشد.

maminb
دوشنبه 23 آذر 1388, 16:40 عصر
اشتراکتون ایجاد و فعال شد. و مشخصاتش رو هم براتون فرستادم.

امیدوارم تونسته باشم جبران کنم.