PDA

View Full Version : یه سوال کوچولو در مورد فرمت کردن



sirvan-me
یک شنبه 13 شهریور 1390, 14:51 عصر
سلام من می خواستم از طریق سی ++ درایوی رو فرمت کنم کدمم اینه :

#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
int main()
{
system("format c:");
system("pause");
return 0;
}


حالا موقع اجرا باید کلید y زده بشه تا عملیات انجام شه .
سوال من : چطور می تونم اون y رو هم خودم بزنم که کاربر مهلت بستن برنامه رو نداشته باشه....

sirvan-me
یک شنبه 13 شهریور 1390, 16:20 عصر
آقا کسی نبود جواب سوال من رو بده . خیلی بدجور نیاز دارم . :گریه:

V0RTEX
یک شنبه 13 شهریور 1390, 18:00 عصر
http://msdn.microsoft.com/en-us/library/bb762169(v=vs.85).aspx

just search SHFormatDrive for more info:-D

quiet_programmer
دوشنبه 14 شهریور 1390, 16:33 عصر
با سلام.

راه حلی که به نظر من میاد اینه که از تابع api استفاده کنیم. هرفراخوانی تابع keybd_event از توابع api مثل اینه که کلیدی از کیبورد فشرده شده باشه. من کد زیر رو برات میزارم ولی تو سیستم من با ارسال کلید : مشکل داشت و کلید ; رو ارسال میکنه. اگه تو سیستم خودت اینجوری باشه یه سرچ بزن که چه طور میشه کلید : رو با استفاده از تابع ارسال کرد. من سرچ کردم و یه چیزایی دستگیرم شدم ولی نتونستم بصورت کامل حلش کنم.

#include <windows.h>
#include <iostream>
int main()
{
keybd_event(VkKeyScan('f'),0,0,0);
keybd_event(VkKeyScan('o'),0,0,0);
keybd_event(VkKeyScan('r'),0,0,0);
keybd_event(VkKeyScan('m'),0,0,0);
keybd_event(VkKeyScan('a'),0,0,0);
keybd_event(VkKeyScan('t'),0,0,0);
keybd_event(VkKeyScan(' '),0,0,0);
keybd_event(VkKeyScan('c'),0,0,0);
keybd_event(VkKeyScan(':'),0,0,0);
keybd_event(VkKeyScan(10),0,0,0);
keybd_event(VkKeyScan('y'),0,0,0);
keybd_event(VkKeyScan(10),0,0,0);
return 0;
}

bigtime
سه شنبه 15 شهریور 1390, 14:40 عصر
با سلام
شما می تونید این کدارو در یک فایل با پسوند batch قرار بدید و دیگه تاییده هم ازتون نمی خواد.
ولی خوب با توابع api هم دیگه نیاز نیستش که همه چی رو با اون نوشت فقط کافیه که موقعی که کد داس رو اجرا کردی یه y و بعد هم یک enter رو با توابع api وارد کنی همین.
موفق باشید.

quiet_programmer
چهارشنبه 16 شهریور 1390, 00:17 صبح
با سلام.


شما می تونید این کدارو در یک فایل با پسوند batch قرار بدید و دیگه تاییده هم ازتون نمی خواد.میشه محتویات فایل بچی که مدنظرتون هست رو بزارین اینجا؟ چون من امتحان کردم نشد.


ولی خوب با توابع api هم دیگه نیاز نیستش که همه چی رو با اون نوشت فقط کافیه که موقعی که کد داس رو اجرا کردی یه y و بعد هم یک enter رو با توابع api وارد کنی همین. فقط محض اطلاع:وقتی دستور system("format c:");//Nothing رو میزنین برنامه ++c روی این خط منتظر میمونه و دستور بعدی تا وقتی که تکلیف این دستور مشخص نشده اجرا نمیشههمین.

یاحق
موفق باشید

sirvan-me
چهارشنبه 16 شهریور 1390, 11:27 صبح
با سلام.

راه حلی که به نظر من میاد اینه که از تابع api استفاده کنیم. هرفراخوانی تابع keybd_event از توابع api مثل اینه که کلیدی از کیبورد فشرده شده باشه. من کد زیر رو برات میزارم ولی تو سیستم من با ارسال کلید : مشکل داشت و کلید ; رو ارسال میکنه. اگه تو سیستم خودت اینجوری باشه یه سرچ بزن که چه طور میشه کلید : رو با استفاده از تابع ارسال کرد. من سرچ کردم و یه چیزایی دستگیرم شدم ولی نتونستم بصورت کامل حلش کنم.

#include <windows.h>
#include <iostream>
int main()
{
keybd_event(VkKeyScan('f'),0,0,0);
keybd_event(VkKeyScan('o'),0,0,0);
keybd_event(VkKeyScan('r'),0,0,0);
keybd_event(VkKeyScan('m'),0,0,0);
keybd_event(VkKeyScan('a'),0,0,0);
keybd_event(VkKeyScan('t'),0,0,0);
keybd_event(VkKeyScan(' '),0,0,0);
keybd_event(VkKeyScan('c'),0,0,0);
keybd_event(VkKeyScan(':'),0,0,0);
keybd_event(VkKeyScan(10),0,0,0);
keybd_event(VkKeyScan('y'),0,0,0);
keybd_event(VkKeyScan(10),0,0,0);
return 0;
}


quiet Programmer


راستش من کدت رو کامپایل کردم اما جوابی نگرفتم ؟؟؟!!!!! یعنی عملی انجام نمیشه !!!!!!

اگه لطف کنی و یه نمونه برنامه + سورس بذاری ممنون میشم.

sirvan-me
چهارشنبه 16 شهریور 1390, 11:29 صبح
با سلام
شما می تونید این کدارو در یک فایل با پسوند batch قرار بدید و دیگه تاییده هم ازتون نمی خواد.
ولی خوب با توابع api هم دیگه نیاز نیستش که همه چی رو با اون نوشت فقط کافیه که موقعی که کد داس رو اجرا کردی یه y و بعد هم یک enter رو با توابع api وارد کنی همین.
موفق باشید.


مرسی از راهنماییت اما منم با Quiet Programmer موافقم . حالا شما فایلتو بذار . بازم ممنون

sirvan-me
چهارشنبه 16 شهریور 1390, 12:10 عصر
در ضمن کامپایلرت چیه ؟

quiet_programmer
چهارشنبه 16 شهریور 1390, 12:52 عصر
با سلام.


راستش من کدت رو کامپایل کردم اما جوابی نگرفتم ؟؟؟!!!!! یعنی عملی انجام نمیشه !!!!!!بنده گفتم که فقط با ارسال : مشکل داره. کد زیر رو که فایل exe هم داره رو اول برو cmd بعد از اونجا رانش کن. میبینی که مینویسه del d;\1 که بجای : کاراکتر ; تایپ میشه.

74991

74992


در ضمن کامپایلرت چیه ؟
اگه با منی، کامپایلر Borland C++ Compiler version 5.5.1 یا همون bcc32.exe

sirvan-me
چهارشنبه 16 شهریور 1390, 14:29 عصر
با سلام.

بنده گفتم که فقط با ارسال : مشکل داره. کد زیر رو که فایل exe هم داره رو اول برو cmd بعد از اونجا رانش کن. میبینی که مینویسه del d;\1 که بجای : کاراکتر ; تایپ میشه.

74991

74992


اگه با منی، کامپایلر Borland C++ Compiler version 5.5.1 یا همون bcc32.exe


مرسی که انقدر خوب رسیدگی می کنی

من دو دستور دیگه به کدت اضافه کردم و مشکل ; حل شد اما حالا Enter جواب نمیده !!!!!


keybd_event(VK_SHIFT,0,0,0);
keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);



میشه راهنمایی کنی
در ضمن من اگر بخوام بدونه وارد شدن به CMD برنامه اجرا بشه راهی هست ؟؟؟!!! مرسی