PDA

View Full Version : تولید فایل EXE از طریق برناممون



omid-vbAuto
شنبه 25 دی 1389, 15:22 عصر
دوستای گلم ،سلام

ما چطوری می تونیم توسط برنامه خودمون یه فایل با خروجی EXE بگیریم .مثلا برناممون یه فرم اصلی داره که بالا می اد و یه فرم فرعی داخلی داره که اون فرمداخلی رو تبدیل به یه فایل EXE میکنه.

به نظرتون موضوع جالبی نیست؟

sina_saravi1
شنبه 25 دی 1389, 19:51 عصر
یادمه قبلا یه نمونشو تو VB6 دیدم
اگه پیدا کردم اینجا میزارم تا شاید به دردت خورد

Saman_12
شنبه 25 دی 1389, 19:56 عصر
اول جستجو بعد تایپیک!!(این موضوع توی سایت هست یک سرچ کنی پیدا میکنی "به زبانVB.NET نمونه کد هست".)

omid-vbAuto
شنبه 25 دی 1389, 20:09 عصر
اول جستجو بعد تایپیک!!(این موضوع توی سایت هست یک سرچ کنی پیدا میکنی "به زبانVB.NET نمونه کد هست".)

سامان گشتم نبود.
لطف بفرمائید چطوری جستجو کنم؟(با چه عنوانی؟)

Navid Asadi
شنبه 25 دی 1389, 20:42 عصر
موضوع که جالبه!

من جواب کلی رو نمی دونم ولی اگه فرمت یه شکل ثابت داره میتونی با ساخت یه فرمی که اطلاعاتش (تعداد textbox ها و...)رو از یه دیتابیس بگیره میشه این کار رو انجام داد...

Saman_12
شنبه 25 دی 1389, 20:56 عصر
عنوان نمیخوا اینو نیگاه :
این (http://barnamenevis.org/showthread.php?130290-%D9%86%D8%A7-%DA%AF%D9%81%D8%AA%D9%87-%D9%87%D8%A7-%D8%AF%D8%B1-Visual-Basic.Net/page3)
البته این دقیقا اون نیست عنوانش رو یادم نیست و اگر نه میفرستادمون توی همون تایپیک!

omid-vbAuto
شنبه 25 دی 1389, 22:18 عصر
از دوستان عزیز ممنونم که پیگیری و راهنمائی می کنند.

سامان می تونی یادت بیاری که تاپیک تولید فایل EXE رو کجا دیدی و یا مال چه تاریخیه؟و یا تو آرشویت یه سرچ بزنی.

منتظرتم.

MortezaGity
یک شنبه 26 دی 1389, 10:44 صبح
دوست عزیز منم گشتم. داخل کدوم تاپیک هست نمیدونم.

ولی این کدشه.





string source =
@"
namespace Foo
{
public class Bar
{
static void Main(string[] args)
{
Bar.SayHello();
}

public static void SayHello()
{
System.Console.WriteLine(""Hello World"");
}
}
}
";





و حال کامپایل این رشته





using System;
using System.Collections.Generic;
//دو فضاي نامي كه براي اين منظور اضافه شده‌اند
using Microsoft.CSharp;
using System.CodeDom.Compiler;

namespace compilerTest
{
class Program
{
static void compileIt1()
{
//سورس كد ما جهت كامپايل
string source =
@"
namespace Foo
{
public class Bar
{
static void Main(string[] args)
{
Bar.SayHello();
}

public static void SayHello()
{
System.Console.WriteLine(""Hello World"");
}
}
}
";

//تعيين نگارش كامپايلر مورد استفاده
Dictionary<string, string> providerOptions = new Dictionary<string, string>
{
{"CompilerVersion", "v3.5"}
};
//تعيين اينكه كد ما سي شارپ است
CSharpCodeProvider provider = new CSharpCodeProvider(providerOptions);

//تعيين اينكه خروجي يك فايل اجرايي است بعلاوه مشخص سازي محل ذخيره سازي فايل نهايي
CompilerParameters compilerParams = new CompilerParameters
{
OutputAssembly = "D:\\Foo.EXE",
GenerateExecutable = true
};

//عمليات كامپايل در اينجا صورت مي‌گيرد
CompilerResults results = provider.CompileAssemblyFromSource(compilerParams, source);

//اگر خطايي وجود داشته باشد نمايش داده خواهد شد
Console.WriteLine("Number of Errors: {0}", results.Errors.Count);
foreach (CompilerError err in results.Errors)
{
Console.WriteLine("ERROR {0}", err.ErrorText);
}
}

static void Main(string[] args)
{
compileIt1();

Console.WriteLine("Press a key...");
Console.ReadKey();
}
}
}

omid-vbAuto
یک شنبه 26 دی 1389, 11:59 صبح
دوست عزیز منم گشتم. داخل کدوم تاپیک هست نمیدونم.

ولی این کدشه.





string source =
@"
namespace Foo
{
public class Bar
{
static void Main(string[] args)
{
Bar.SayHello();
}
public static void SayHello()
{
System.Console.WriteLine(""Hello World"");
}
}
}
";




و حال کامپایل این رشته





using System;
using System.Collections.Generic;
//دو فضاي نامي كه براي اين منظور اضافه شده‌اند
using Microsoft.CSharp;
using System.CodeDom.Compiler;
namespace compilerTest
{
class Program
{
static void compileIt1()
{
//سورس كد ما جهت كامپايل
string source =
@"
namespace Foo
{
public class Bar
{
static void Main(string[] args)
{
Bar.SayHello();
}
public static void SayHello()
{
System.Console.WriteLine(""Hello World"");
}
}
}
";
//تعيين نگارش كامپايلر مورد استفاده
Dictionary<string, string> providerOptions = new Dictionary<string, string>
{
{"CompilerVersion", "v3.5"}
};
//تعيين اينكه كد ما سي شارپ است
CSharpCodeProvider provider = new CSharpCodeProvider(providerOptions);
//تعيين اينكه خروجي يك فايل اجرايي است بعلاوه مشخص سازي محل ذخيره سازي فايل نهايي
CompilerParameters compilerParams = new CompilerParameters
{
OutputAssembly = "D:\\Foo.EXE",
GenerateExecutable = true
};
//عمليات كامپايل در اينجا صورت مي‌گيرد
CompilerResults results = provider.CompileAssemblyFromSource(compilerParams, source);
//اگر خطايي وجود داشته باشد نمايش داده خواهد شد
Console.WriteLine("Number of Errors: {0}", results.Errors.Count);
foreach (CompilerError err in results.Errors)
{
Console.WriteLine("ERROR {0}", err.ErrorText);
}
}
static void Main(string[] args)
{
compileIt1();
Console.WriteLine("Press a key...");
Console.ReadKey();
}
}
}





مهندس جان دستت طلا.

ولی من نتونستم استفاده کنم تازه به namespace هم در تبدیل شدش به VB ایراد میگره!!!

این namespace رو باید تو فرم نوشت یا یه کلاس؟؟؟؟

دوستان عزیز شاید من غلط کانورت کردم لطفا یکی از دوستان چک کنه ببیننه این کدها تو VB چی میشن؟

با تشکر

AlgorithmX
یک شنبه 26 دی 1389, 14:10 عصر
سلام !
من چند وقت پیش ها این سوال رو تو تالار VB6 مطرح کردن بودم که ببینبد بد نیست!

http://barnamenevis.org/showthread.php?265959-ساخت-فایل-اجرایی-(exe)