הוספת קובץ exe (משפה אחרת) לתוכנית ב-C# - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

הוספת קובץ exe (משפה אחרת) לתוכנית ב-C#


wow

Recommended Posts

אני מעוניין לכתוב תוכנית מסויימת שתנגן קבצי Wireshark, יש לי קובץ exe שמסוגל לנגן את הקבצים האלו והשאלה שלי היא האם אפשרי שהתוכנית שלי תקרא לקובץ exe הזה ותוסיף לו עוד כמה פרמטרים אחרי ה-exe (כמו למשל Path ומספר מסויים שמייצג מהירות לצורך הדוגמא)

איך עושים דבר כזה ?

קישור לתוכן
שתף באתרים אחרים

א. תקרא את התיאורים של האפשרויות השונות, תיכנס אליהן ותראה את הדוגמאות, ותבחר בהתאם.

ב. לא. כל מה שהפונקציה הזו עושה הוא להריץ תוכנית חיצונית. אפשר לשלב קובץ בתוך ה-exe שלך כ-embedded resource, אבל אז כשתרצה להריץ אותו תצטרך "להוציא" אותו מה-exe שלך, כמו בדוגמא כאן.

קישור לתוכן
שתף באתרים אחרים

אחרי יצירה של ProcessStartInfo (והעברה של הפרמטרים כמו למשל PATH של קובץ ה-EXE של התוכנה שאני רוצה להריץ ועוד פרמטרים) אז אם למשל הייתי מריץ את הפקודה בחלון CMD הייתי מקבל הודעות מסויימות, איך אני יכול לקלוט את אותם הודעות לתוך STRING עלמנת לחלץ משם את המידע הרלונטי לגבי ?

קישור לתוכן
שתף באתרים אחרים

אני קולט את כל השורות למערך ע"י הפקודה string result = myStreamReader.ReadLine();

בלולאה כמובן ואז מציג אבל יש לי בעיה שאם הקובץ שלי מורכב ממילים שמופרדות בניהם ברווח אז הוא לא מציג לי אותם למשל

test 1 2 3 לא יוצא טוב כמו test_1_2_3

אני לא מבין למה זה קורה כי אני מכניס את כל השורה לתא במערך ואח"כ מדפיס את כל השורה.


Process Capinfos = new Process();
ProcessStartInfo ps1 = new ProcessStartInfo(@"C:\Program Files\Wireshark\capinfos.exe", @"D:\Downloads\10_attach_Copy.snoop");


ps1.RedirectStandardOutput = true;
ps1.RedirectStandardError = true;
ps1.WindowStyle = ProcessWindowStyle.Hidden;
ps1.CreateNoWindow = false;
ps1.UseShellExecute = false;
ps1.ErrorDialog = false;


Capinfos.StartInfo = ps1;
Capinfos.Start();
StreamReader myStreamReader = Capinfos.StandardOutput;
string result = myStreamReader.ReadLine();
Console.WriteLine(result);


string[] array = new string[18];


for (int i = 0; i < array.Length; i++)
{
array[i] = myStreamReader.ReadLine();
}


Console.WriteLine(array[0]);
Console.WriteLine(array[4]);
Console.WriteLine(array[5]);
Console.WriteLine(array[7]);

כמו בדוגמא שנתתי, אם היה רשום במקום השורה הראשונה את זה זה לא היה מדפיס:

ProcessStartInfo ps1 = new ProcessStartInfo(@"C:\Program Files\Wireshark\capinfos.exe", @"D:\Downloads\10_attach Copy.snoop");

קישור לתוכן
שתף באתרים אחרים

אני חושב שזה בגלל שיש רווח בשם אז הארגומנט שאני שולח זה כאילו יותר מאחד ואז הוא לא מוצא את הקובץ הפיזי על המחשב (כי הוא מחפש שם שונה) אבל אני לא יודע איך להתגבר על זה.

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...