اجراي برنامه اي ديگر در برنامه جاري و بازگشت به برنامه

aminir

Member
سلام دوستان
چطور مي شه در زبان C در يك برنامه برنامه ديگر را اجرا كرد و دوباره به همين برنامه بازگشت؟
مثال مي زنم تا بهتر متوجه منظورم شيد؟
کد:
#include<process.h>
int main(int argc, char* argv[])
{
	execv("voronoi.exe",argv);//ejrayte barnameye dige
	perror("error");
	printf("Hello World!\n"); // in line dige bad az egraye barnameye fogh ejra nemishe
return 0;
}
 

arash_j13

Member
کد:
#include <iostream>
#include <cstdlib>
#include <conio.h>

using namespace std;
int main()
{
	cout<<"hello"<<endl;
	getch();
	system("ftp.exe");
	cout<<endl<<"finish"<<endl;
	return 0;
}
 

saalek110

Well-Known Member
آرش جان من دو تست کردم با برنامه شما.
در اولی آن فایل ftp.exe را یک برنامه مشابه کنسولی قرار دادم با این کد :
کد:
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>

//using namespace std;
int main()
{
	cout<<"hi"<<endl;

	getch();
	return 0;

}
که بعد اجرای برنامه شما کلمه hi هم بعد hello در کنسول چاپ شد.
------------------
در تست بعدی فایل ftp.exe را یک برنامه ویندوزی قرار دادم. که برنامه شما بعد چاپ hello دیگر پاسخی نمی داد.

در مورد execv هم در تست اول همان طور بود و در تست دوم پیامی می داد که این برنامه نمی تواند در کنسول اجرا شود.
آیا دستوری وجود ندارد که برنامه را در خود کنسول نخواهد اجرا کند بلکه مثل اینکه ما روی آیکون آن کلیک کرده باشیم بخواهد اجرا شود؟
 
آخرین ویرایش:

arash_j13

Member
برای اجرا برنامه های ویندوزی می تونید از تابع winexec در هدر windows.h استفاده کنید ولی این تابع فقط برنامه را اجرا می کنه و منتظر پایانش نمومنه این وظیفه خدتونه که جلوی برنامه رو بگیرید
 

saalek110

Well-Known Member
سلام.
خوب همین که اجرا بشه اون فایل ویندوزی خیلی کارها می شود کرد و من هم همین را می خواستم.
ولی هدر و تابع فوق که نام بردید در توربو سی 3 نبود. مهم نیست فقط می خواستم ببینم چنین کاری ممکن است یا نه.
 

arash_j13

Member
توربو سی یه کامپایر 16 بیتیه الان سیستم عامل ها دارن 64 بیتی می شن بهتره یکم کامپایلرتون رو ارتقا بدید از نسخه 5 به بعد بورلند می تونید استفاده کنید برای اینکار
 

saalek110

Well-Known Member
کد:
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>

//using namespace std;
int main()
{
	system("cd\\");
	system("cd progra~1");
	system("cd winamp");
	system("winamp");
    //  system("DIR/p");
    //	getch();
	return 0;

}

با برنامه بالا من توانستم winamp را باز کنم.
کامپایلر : توربو سی 3
آرش جان چون من می خواهم کدهایم با دیگران یکی باشد کامپایلرم را هنوز عوض نکرده ام.
کد:
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>

//using namespace std;
int main()
{
	system("cd\\");
	system("cd progra~1");
	system("cd winamp");
	system("winamp song.wma");
    //  system("DIR/p");
    //	getch();
	return 0;

}

و با برنامه بالا یک آهنگ را با winamp اجرا کردم. البته باید آهنگ در پوشه winamp باشد.

تمامی این آزمایش ها این طور است که اول فایل را کامپایل می کنیم و فایل exe این کارها را انجام می دهد نه داخل کامپایلر.

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

arash_j13

Member
ویروس یا نباید ویروس معرفی کنه فقط لازمه اخطار بده که می خواد یه برنامه دیگه رو اجرا کنه
 

جدیدترین ارسال ها

بالا