ورود

نسخه کامل مشاهده نسخه کامل : دسترسی به منابع سیستم عامل



humphry
06-01-2009, 14:37
در حال انجام پروپژه ای هستم که نیاز به داده هایی از سیستم عامل و شرایط جاری سیستم دارم
مثلا امکان مشاهده tasklist در ویندوز یا بررسی وضعیت پوشه ها و درایو های (child & parent ) یا امکان دسترسی به فایل ها و فولدر ها و امکان جست وجو در اون هاست ... اما عملا هیچ اطلاعی از نحوه دسرتسی به منابع فوق ندارم.
اصلا سوالم رو یه طور دیگه مطرح می کنم. فرض کنید بخواهیم fopen رو خودمون بنویسیم چطور این کار رو انجام می دیم؟
چطور می شه به hard درسترسی داشت یا مثلا به اینترنت وصل شد و اطلاعاتی رو برداشت.
(مظورم معرفی توابعی که این کار رو انجام می دن نیست هر چند اگه این هم بگید خیلی کمکم می کنه اما منظورم پیاده سازیه )

humphry
07-01-2009, 12:03
یکی به داد من نمی رسه ؟

hoax3r
07-01-2009, 19:27
سلام
اگر منظورتان از tasklist همون پروسه ها هست یک راه استفاده از API زیر است
 

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
 
و مثالی ساده به زبان c به این گونه :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
 
و اگه چیز دیگری منظورتان هست بگین
 
و مابقی سوالاتون خیلی کلی هستن و هر کدوم میتونن خیلی گسترده بشن من براتون API های مورد نیاز رو میگم در مورد هر کدوم که خواستین بگین بیشتر توضیح بدیم
 
در مورد تابع fopen که گفتین این تابع خودش از CreateFile برای باز کردن یا ایجاد یک فایل استفاده میکنه
 
برای جستجو در پوشه ها و فایلها از API های FindFirstFile و FindNextFile و FindClose استفاده کنید
 
برای کار با هارد دیسک هم همون تابع CreateFile و fopen مناسبن
 
در مورد اینترنت هم نظری ندارم
 
حالا هر کدوم رو لازم دارين بگين تا بيشتر توضيح بدیم البته MSDN رو هم فراموش نکنید که تمام اینا رو به تفصیل شرح داده
 
شاد باشید

humphry
07-01-2009, 21:30
ببین دوست عزیز هدف من پیاده سازی کامند پرومپت ویندوزه برای پروژه پایان ترمم
متاسفانه استفاده از هیدر فایل هایی که عملیات ویندوز رو انجام می دن مجاز نیست وگرنه خیلی ساده می شد. البته خودم خیلی دوست دارم توی این پروژه چیزای زیادی اید بگیرم وخودم این ریزه کاری هارو انجام بدم
خوشحال می شم راهنمایی کنی که چطور به فولدر ها و بررسی وجود یا عدم وجود دسترسی داشته باشم.یا توانایی تغییر حساب های کاربری و یوزر هارو داشته باشم یا به لیستی از برنامه های در حال اجرا (تسک لیست در ویندوز ) و یه سری چیز های بی ربط از این قبیل دیگه خودت می دونی...

humphry
08-01-2009, 11:37
می شه یه عنایت بکنید ...

hoax3r
08-01-2009, 16:43
خوب در مورد پروژه شما اگر فقط بخواهید از امکانات و توابع ++c/c استفاده کنید کارهایی مثل " تغییر حساب های کاربری " یا دسترسی به "لیستی از برنامه های در حال اجرا" امکانپذیر نیست
در این موارد باید از توابع ویندوز استفاده بشه
 
ولی کار فایل مثل دسترسی به فایلها، ایجاد، حذف، جستجو و ... رو می توان با همین زبان انجام داد
 
و چون این پروژه پایان ترم شما هست و همونطور که گفتین هدفتون هم یادگیریست بهتره خودتون کمی در مورد این موارد با توجه به توابعی که پست
قبل گفتم یه جستجویی بکنید و در مواردی که به مشکل بر خوردین اینجا سوال کنید تا من یا دیگر دوستان بتونیم کمکتون کنیم.
 
شاد باشید

humphry
09-01-2009, 12:03
حرف شما درسته اما موضوع اینه که وقت خیلی کوتاهی دارم و اصولا سلف استادی ضعیفی در برنامه نویسی دارم واقعا از روی کتاب نمب تونم اون طور که باید و شاید کار کنم. با ام اس دی ان هم کار کردم چیزایی دستگیرم شده که نمی تونم ازش استفاده کنم.... :دی
شما یه راهنمایی بکنید این خیلی به من کمک می کنه اگه بگید که چطور می تونم فولدرهای موجود توی یک منبع رو شناسایی کنم یا سایز فایل های موجود رو تشخیص بدم هیچ ایده ای ندارم ...

hoax3r
09-01-2009, 23:36
منم در خصوص این موارد که گفتین یعنی استادا(استاد که چه عرض کنم ...) و کتابای چرتشون با شما موافقم، 
خوب حالا تا جایی که بلد باشم سعی میکنم کمکتون کنم. :10:
 
در  C  توابع findfirst_ و findnext_ و findclose_ داریم که برای جستجو در فایلها به کار میره و طبق حالتی که ما
برای این توابع تعریف می کنیم لیست فایل و فولدر ها رو در اختیارمون میزارن و ما بعد دریافت این لیست میتونیم
حجم فایل ، اسم فایل، خصوصت فایل از نظر مخفی بودن و ... و چیزای دیگه مزتبط به یه فایل یا یه پوشه رو بدست بیاریم
 
برای مثال این کد رو ببینید، این برنامه لیست تمام فایل ها و پوشه های درایو C رو می گیرد و در خروجی مشخص
می کند که فولدر هست یا اگر فولدر نیست حجم فایل رو نشان می دهد.
 

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
 
و اگر بخواهیم توضیح مختصری بدیم 
 
اول باید در تابع findfirst_  محدوده جستجو رو مشخص کنیم که این کارو رو در پارامتر اول باید انجام داد
من "*.*" قرار دادم یعنی هر نوع فایلی با هر فرمتی که شامل پوشه ها هم میشه، قواعدشم تقریبا مثل برنامه های دیگه هست که کار جستجو رو انجام میدن
پارامتر دوم هم ساختار finddata_t_ هست که اطلاعات فایل توش ریخته میشه
اگه این تابع با موفقیت اجرا بشه به شما یه هندل میده  که باید در تابع findnext_ استفاده کنید تا اطلاعات دیگر فایلها رو بگیرید
چون این توابع بعد هر بار اجرا اطلاعات یک فایل رو میگیرن از یه حلقه استفاده میکنیم و در اخر هم از تابع findclose_ برای بستن هندل استفاده میکنیم
 
ساختار finddata_t_ هم این اطلاعات رو در اختیارت میزاره :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
 
برای اینکه بفهمیم اطلاعات گرفته شده برای یه پوشه هست از این دستور استفده میکنیم
 

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
 
البته این توابع به تنهایی پوشه های داخلی (subfolder)  رو جستجو نمیکنن برای این کار باید خودتون  این حالت رو پیاده سازی کنید
 
باز اگه جاییش مبهمه بگین توضیح بدم
 
شاد باشید

humphry
10-01-2009, 14:07
خیلی ممنون دقیقا همین منظورم بود این طور که دستگیرم شد اگه توابع داخل هیدر فایل ای او رو بررسی کنم چیزای بیشتری دستگیرم می شه... اما مهم همین استارتش بود که همین جا زده شد....
تا همین جا خیلی زحمت کشیدید
خیلی ممنونم
شما هم کامیاب و پیروز باشید