PDA

نسخه کامل مشاهده نسخه کامل : کنترل کامل سخت افزارها؟؟؟؟



ahmad_r
28-12-2005, 13:28
یکسری کد می خواستم برای کنترل کامل سخت افزاری در حد کار کردن و نکردن یک سخت افزار حالا از درایو فلاپی گرفته تا مودم هر چیشو دارید (سی دی رام - سی دی رایتر - بلندگو و ...)
یه مثال برای واضح کردن کامل سوال:
مثلا بتوانیم با انتخاب سی دی رام و گزینه غیر فعال از باز و بسته شدن آن جلوگیری کنیم

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

با تشکر فراوان از همه دوستان

ahmad_r
30-12-2005, 07:57
جواب شو بدید
با تشکر

*Batman*
30-12-2005, 08:22
كد زير سيستم رو خاموش ميكنه:
البته رو XP كار ميكنه.

Shell "shutdown -s -f -t 0"

كد قفل كردن ماوس و كيبرد رو داشتم ولي فعلا گمش كردم.شرمنده.

bithiah
01-01-2006, 08:29
.دوست من سوالتون خیلی کلی و شاخه شاخه است. اما بهر حال فعلا این رو داشته باشین:
کد زیر ماوس و صفحه کلید رو به مدت 10 ثانیه از کار میندازه:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

goldfish
01-01-2006, 16:05
سلام خيلي جالب بود
فقط اگه كسي بتونه در مورد سي دي رام هم اين كارو بكونه خيلي جالب ميشه

bithiah
01-01-2006, 22:00
برای انجام بعضی از این کارها، می تونیم از تابع API یی بنام mciSendString استفاده کنیم که یک رشته فرمان رو به یک دستگاه MCI(Media Control Interface) ارسال می کنه. دستگاهی که فرمان برای اون صادر می شه، درون رشته فرمان مشخص می شه. Declaration این تابع بصورت زیر هست:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدکه در اون پارامتر lpszCommand آدرس یک رشته منتهی به کاراکتر null هست که باید رشته فرمان MCI رو درش قرار بدیم،
پارامتر lpszReturnString آدرس بافری هست که اطلاعات برگردانده شده رو دریافت می کنه. اگه به هیچ اطلاعات برگشتی نیاز نباشه، مقدار این پارامتر می تونه NULL باشه،
پارامتر cchReturn، تعداد کاراکترهای بافر بازگشت(lpszReturnString) هست.
پارامتر hwndCallback، نیز اگر فلگ "notify" در رشته فرمان، مشخص شود، این دستگیره(handle) پنجره بازگشت(callback) است.
این تابع در صورت موفقیت، صفر و در غیر اینصورت یک خطا بر می گرداند.

حال برای اینکه با این تابع راحت تر کار کنیم و به یک باره خطاها رو هم در یک تابع هندل کنیم، بهتره از تابع زیر استفاده کنیم(Declaration تابع mciSendString رو که در بالا نوشتم، یادتون نره):

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

برای CD-ROM، کارها و شوخی های مختلفی می تونیم انجام بدیم.

*برای مثال می شه درش رو مرتب و پشت سر هم باز و بسته کرد:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
ولی همونطور که می بینین این یه حلقه بی پایان هست. یعنی با اجرای خطوط بالا، در CD-ROM تون(اولین رسانه از نوع CD-Drive) بصورت متوالی و وقفه ناپذیر باز و بسته می شه. مگه اینکه بصورتی به این حلقه پایان بدین.

*کار دیگه ای که می شه کرد اینه که در CD-Drive رو بحالت بسته نگه داشت تا کاربر نتونه بهیچ وجه اون رو باز کنه:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
همونطور که می بینین در خطوط بالا هم در واقع فرمان بستن در CD-Drive در یک حلقه بی نهایت صادر می شه. بهمین علت کاربر نمی تونه درش رو باز کنه، مگه اینکه در چرخش این حلقه، وقفه ای پدید بیاد، مثلا برنامه توسط Task Manager خاتمه پیدا کنه.

* یه مثال دیگه، عمل عکس بالاییه. یعنی کاربر نتونه در CD-Drive رو ببنده:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

خوب فعلا کافیه. تا بعد...

ahmad_r
02-01-2006, 07:51
دست همگی دوستان درد نکنه مخصوصا بیتا که کلی زحمت کشیده بودند فعلند سوالی ندارم اما نمی دونم چرا بعضی مواقع وقتی سوال جدیدی در یک تاپیک قدیمی می پرسم جوابشو نمی دهید مثل تاپیک "چطور چند فایل صوتی را اجرا کنم؟؟؟"
با تشکر فراوان

ahmad_r
02-01-2006, 19:47
ببخشید بیتا جان
اولا اگه یک کد دیگه برای کار نکردن موس و کیبورد بدی که جدا باشن ممنون می شوم
درضمن یه لطفی بکن بگو این مطالبی را که برای قفل کردن سی دی رام نوشتی کجاها باید بگذارم (در چه رویدادهایی)
با تشکر

M_sam
02-01-2006, 22:41
با سلام .
می خواستم بپرسم ایا برنامه ای میشه نوشت که جریان برق سیستم را کنترل کنه و یا بشه تنظیمات bios را در خود ويندوز تغيير داد .
ممنون