PDA

View Full Version : اجرای یک فایل در c



titans
دوشنبه 13 اردیبهشت 1400, 12:15 عصر
با سلام!
دوستان من وقتی به نتیجه ای نمیرسم اینجا رو انتخاب میکنم چون همیشه یکی هست که جوابشو اینجا بدونه!
دوستان یه سوال چطوری میشه یک فایلی را در c اجرا کرد منظورم اینه که اجرا بشه نه اینکه برای خواندن باز بشه! مثلا مثل دوبل کلیک عمل بکنه خواهش دوستانی که میدونن راهنمایی کنند!

the king
دوشنبه 13 اردیبهشت 1400, 13:08 عصر
با سلام!
دوستان من وقتی به نتیجه ای نمیرسم اینجا رو انتخاب میکنم چون همیشه یکی هست که جوابشو اینجا بدونه!
دوستان یه سوال چطوری میشه یک فایلی را در c اجرا کرد منظورم اینه که اجرا بشه نه اینکه برای خواندن باز بشه! مثلا مثل دوبل کلیک عمل بکنه خواهش دوستانی که میدونن راهنمایی کنند!
فایل در واقع اجرا نمیشه، مسیر فایلش به یک برنامه اجرایی ارسال میشه تا اون برنامه اجرایی مسیر فایل رو دریافت کنه و به طریقی که خودش تشخیص میده با اون فایل رفتار کنه.
مثلا یک فایل file.myext داریم. پسوند myext. ناشناخته است و ویندوز نمیدونه با دوبل کلیک کردن روی این فایل باید چه کاری انجام بده.
اما در Registry ویندوز با اضافه کردن چند کلید و مقدار مشخص می کنیم که هر فایل با پسوند myext. باید توسط فایل اجرایی myapp.exe که به زبان C یا هر زبان دیگری نوشته ایم باز بشه.


Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.myext]
@="myext"

[HKEY_CLASSES_ROOT\myext]

[HKEY_CLASSES_ROOT\myext\shell]

[HKEY_CLASSES_ROOT\myext\shell\open]

[HKEY_CLASSES_ROOT\myext\shell\open\command]
@="\"C:\\MyFolder\\myapp.exe\" \"%1\""


حالا ویندوز میدونه که myapp.exe رو باید برای فایل هایی با پسوند myext. اجرا کنه.
یعنی وقتی روی فایلی مثلا C:\AnyFolder\file.myext دوبل کلیک شد باید با دستور خط فرمان C:\MyFolder\myapp.exe C:\AnyFolder\file.myext اون برنامه myapp.exe رو اجرا کنه.

برنامه myapp.exe که به زبان C نوشته شده میتونه مسیر فایل رو در آرگومان ورودی main اش دریافت کنه و حالا به میل خودش فایل رو باز کنه، بخونه، ویرایش کنه، پاک کنه، کپی کنه و ...
دیگه اینکه برنامه با اون مسیر فایل میخواد چیکار کنه ربطی به دوبل کلیک نداره.

#include <stdio.h>

int main(int argc, char *argv[])
{
if (argc >= 2)
{
char* filePath = argv[1];
printf("File path:\n");
printf(filePath);
printf("\nPress any key to continue.");
getch();
}
return 0;
}


153289

titans
دوشنبه 13 اردیبهشت 1400, 16:59 عصر
من الان یک فایل با پسوند .bat دارم دوست دارم هر کس روی برنامه من (test.exe) کلیک میکنه اون فایل bat هم اجرا بشه! چطور میشه اینکارو انجام داد!

the king
دوشنبه 13 اردیبهشت 1400, 20:45 عصر
من الان یک فایل با پسوند .bat دارم دوست دارم هر کس روی برنامه من (test.exe) کلیک میکنه اون فایل bat هم اجرا بشه! چطور میشه اینکارو انجام داد!

میسپاریدش به سیستم که اجراش کنه. با کمک تابع ()system که برای استفاده اش <include <stdlib.h# رو به کدتون اضافه می کنید.
فرضا ;("system("test.bat رو می نویسید تا اجراش کنه.

pe32_64
سه شنبه 14 اردیبهشت 1400, 13:45 عصر
با سلام!
دوستان من وقتی به نتیجه ای نمیرسم اینجا رو انتخاب میکنم چون همیشه یکی هست که جوابشو اینجا بدونه!
دوستان یه سوال چطوری میشه یک فایلی را در c اجرا کرد منظورم اینه که اجرا بشه نه اینکه برای خواندن باز بشه! مثلا مثل دوبل کلیک عمل بکنه خواهش دوستانی که میدونن راهنمایی کنند!
از تابع ShellExecute باید استفاده کنید.

titans
چهارشنبه 15 اردیبهشت 1400, 13:14 عصر
من اینو تست کردم و چندتا ارور گرفتم مثلا با این دستور میاد مکان فایلو عوض میکنه (فایل باید در مکان خودش کاری انجام دهد اما اشتباها در محل فایل exe شروع به کار میکنم)

titans
چهارشنبه 15 اردیبهشت 1400, 13:14 عصر
من هیچ اموزشی در این خصوص پیدا نکردم! اگر میتوانید کمک کنید!