עבור לתוכן

#C| שתי פקודות מורכבות

Featured Replies

פורסם

התכנות הוא בקונסול.

הפקודה הראשונה היא שברגע שהתהליך של Internet Explorer יפעל, קוד: [pre] System.Console.WriteLine("bla bla bla");[/pre] שם התהליך של Internet Explorer הוא iexplorer.exe.

הפקודה השנייה היא שהגדרתי משתנה string email; ואני רוצה שברגע שהמשתמש מכניס קלט למשתנה הזה, אימייל ישלח לאותה כתובת. ללא שימוש באוטלוק או דברים אחרים. כרגע לא חשוב לי מה הנושא של האימייל ומה כתוב בתוכו.

תודה רבה לעוזרים smile.gif

פורסם
  • מחבר

תודה על העזרה...

פורסם

תגדיר ברגע ש...

אם לא אכפת לך שיהיה delay של כמה שניות, אתה יכול לבדוק את רשימת ה-processes שרצים בעזרת לולאה פשוטה ו-timer thread שיקרא כל כמה שניות.

לגבי השניה:


MailMessage mail = new MailMessage();
mail.To = email;
mail.From = "you@yourcompany.com";
mail.Subject = "this is a test email.";
mail.Body = "this is my test email body";
SmtpMail.SmtpServer = "localhost"; //your real server goes here
SmtpMail.Send( mail );

פורסם
  • מחבר

יש לי שגיאת הרצה בנוגע לאימייל. הינה הקוד:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Diagnostics;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
// משתנים לסיסמה //
ConsoleKeyInfo cki;
string pass = "";
string confirmpass = "";
// התחלת התוכנה - מסך פתיחה //
System.Console.WriteLine(" OOOOOOOOO RRRRRRR PPPPPPPP EEEEEEEE RRRRRRR EEEEEEEE ZZZZZZZZZZ");
System.Console.WriteLine(" OOOOOOOOO RR RR PPP PPP EEE RR RR EEE ZZZZ");
System.Console.WriteLine(" OOO OOO RRRRRRR PPP PPP EEE RRRRRRR EEE ZZZZ");
System.Console.WriteLine(" OOO OOO RRRR PPPPPPP EEEEEEEE RRRR EEEEEEEE ZZZZZ");
System.Console.WriteLine(" OOO OOO RR RRR PPP EEE RR RRR EEE ZZZZ");
System.Console.WriteLine(" OOOOOOOOO RR RRR PPP EEE RR RRR EEE ZZZZ");
System.Console.WriteLine(" OOOOOOOOO RR RRR PPP EEEEEEEE RR RRR EEEEEEEE ZZZZZZZZZZ");
System.Console.WriteLine("");
System.Console.WriteLine("");
System.Console.WriteLine(" Type: Console Application");
System.Console.WriteLine(" Program Langue: C#");
System.Console.WriteLine(" Created By: Or Perez");
System.Console.WriteLine(" Softwate State: Beta");
System.Console.WriteLine(" Created At: 25.08.2011");
System.Console.WriteLine(" The Date Today Is:");
System.Console.WriteLine("");
System.Console.WriteLine("");
System.Console.WriteLine("If You Want To Enter The Software, You Must Create An Account First.");
System.Console.WriteLine("");
System.Console.WriteLine("Username:");
string username = Console.ReadLine();
System.Console.WriteLine("");
System.Console.WriteLine("Password:");
do // נפתח ההסוואה של הסיסמה //
{
cki = Console.ReadKey(true);
Console.Write("*");
pass += cki.KeyChar;
} while (cki.Key != ConsoleKey.Enter);
Console.WriteLine(); // נסגר ההסוואה של הסיסמה //
System.Console.WriteLine("");
System.Console.WriteLine("Confirm Password:");
do // נפתח ההסוואה של האימות סיסמה //
{
cki = Console.ReadKey(true);
Console.Write("*");
confirmpass += cki.KeyChar;
} while (cki.Key != ConsoleKey.Enter);
Console.WriteLine(); // נסגר ההסוואה של האימות סיסמה //
if (pass == confirmpass)
{ // if (pass == confirmpass) נפתח //
System.Console.WriteLine("");
System.Console.WriteLine("Passwords Are Match.");
System.Console.WriteLine("");
System.Console.WriteLine("Email:");
string email = Console.ReadLine();
System.Console.WriteLine("");
System.Console.WriteLine("Verify Email:");
string verifyemail = Console.ReadLine();
if (email == verifyemail) // if (email == verifyemail) נפתח //
{ // תוכן התוכנה //
System.Console.WriteLine("");
System.Console.Write("Emails Are Match");
System.Console.WriteLine("");
System.Console.WriteLine("");
System.Console.WriteLine("A Verification Mail Is Being Sent To Your Email.");
System.Console.WriteLine("The Operation Might Take Few Minutes.");
System.Console.WriteLine("Please Verify It By Using Internet Explorer.");
// שליחה של האימייל //
// בדיקה של התהליך iexplorer //
// במידה והתהליך פועל התוכנה ממשיכה, במידה ולא התוכנה לא עושה כלום //
System.Console.WriteLine("");
System.Console.WriteLine("Those Are Your Details, Please Write Them Down.");
System.Console.WriteLine("Username:");
System.Console.Write(username);
System.Console.WriteLine("");
System.Console.WriteLine("Password:");
System.Console.WriteLine(pass);
System.Console.WriteLine("Email:");
System.Console.WriteLine(email);
System.Console.WriteLine("");
} // סיום התוכנה //
else if (email != verifyemail)
{ // else if (email != verifyemail) נפתח //
System.Console.WriteLine("");
System.Console.WriteLine("Email Verification Failed");
} // else if (email != verifyemail) נסגר //
} // if (pass == confirmpass) נסגר //
else if (pass != confirmpass) // אם הסיסמה שונה מהאימות //
{ // else if (pass != confirmpass) נפתח //
System.Console.WriteLine("Passwords Verification Failed.");
} // else if (pass != confirmpass) נסגר //
System.Console.Read();
}
}
}

אשמח אם תסביר לי איך לשלב את שליחת האימייל בתוך הקוד.

(הדגשתי את המקום בו אני רוצה שהאימייל ישלח)

אוקיי לא הצלחתי להדגיש אבל הינה הקטע שצריך כדי להבין:

System.Console.WriteLine("A Verification Mail Is Being Sent To Your Email.");

System.Console.WriteLine("The Operation Might Take Few Minutes.");

System.Console.WriteLine("Please Verify It By Using Internet Explorer.");

// שליחה של האימייל //

// בדיקה של התהליך iexplorer //

// במידה והתהליך פועל התוכנה ממשיכה, במידה ולא התוכנה לא עושה כלום //

System.Console.WriteLine("");

פורסם

הבנתי! זה סוג של משחק. אתה אומר שיש שגיאה ומראה לי קוד, ואני צריך לנחש מה השגיאה...

פורסם

יש לי הערה כללית על הקוד שלך:

אם אתה רוצה להשוות תוכן של מחרוזות, תשתמש ב equal - ולא סתם ב ==, שבודק התאמת מצביעים.

פורסם

זה ככה רק בג'אווה. ב-#C זה עובד גם עם == (אבל רק עבור מחרוזות. עבור אובייקטים מורכבים אחרים צריך להשתמש ב-Equals).

פורסם
  • מחבר

טוב הסתדרתי האימייל. תודה רבה :)

אבל אחי, אתה יכול להסביר לי איך עושים את זה:

"אם לא אכפת לך שיהיה delay של כמה שניות, אתה יכול לבדוק את רשימת ה-processes שרצים בעזרת לולאה פשוטה ו-timer thread שיקרא כל כמה שניות."?

תודה מראש =]

פורסם
  • מחבר

אוקיי הצלחתי חלק

הינה הקוד:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Diagnostics;
using System.Net;
using System.Net.Mail;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Process[] processlist = Process.GetProcesses();
foreach (Process theprocess in processlist)
{
if (theprocess.ProcessName == "iexplore")
System.Console.WriteLine("bla bla bla");

}
Console.Read();
}
}
}

עכשיו יש 2 בעיות קטנות.

א) השורה בלה בלה חוזרת על עצמה פעמיים. יכול להיות שזה בגלל שיש את אותו תהליך פעמיים?

ב) הפונקציה רצה רק פעם אחת, ואני רוצה שהיא תחזור על עצמה. איך אני עושה זאת?

תודה מראש

פורסם

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

תכלס מה שמעניין אותך זה לדעת שיש או שאין iexplorer.exe ברשימת תהליכים.

ובשביל זה ברגע שמצאת אחד אתה יודע שיש ואין לך טעם להמשיך לרוץ על רשימת התהליכים.

לכן אתה יכול לשנות את הקוד שלך ללולאת while והתנאי הוא כל עוד לא מצאת (עדיף משתנה בוליאני) וכל עוד לא הגעת לסוף רשימת התהליכים.

דרך נוספת היא להשתמש בפקודה break שיוצאת מהלולאה.

לדעתי נכון יותר להשתמש בלולאת while כי כשאתה מגדיר לולאת foreach יש כאן אמירה מרומזת שאתה מבצע משהו על כל אובייקט במערך שזאת לא הכוונה שלך פה.

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

שים לב שבדרך כלל הזמן הוא במילי שניות ולכן כדי להגדיר שניה אתה רושם 1000

כשאתה יוצר את האובייקט אתה מגדיר מה ה interval (כל כמה זמן הוא יפעל)

ומה הוא יעשה (פוינטר לפונקציה - או איך שלא קוראים לזה ב#C)

ואז מפעיל אותו עם ()tick או ()start.

פורסם

אם כל מה שהתכנית עושה זה לבדוק משהו ואז לחזור לישון, לא צריך טיימר. אפשר לעשות לולאה פשוטה עם Sleep.

פורסם
  • מחבר

אינלי מושג איך אני עושה טיימר.

אבל מה שאני רוצה. זה שהפקודה תחזור על עצמה. עד שהיא תמצא תהליך iexplore. כי אם אתה נכנס לתוכנה, הפקודה רצה, ורק אז אתה פותח את האקספלורר. אז הפקודה לא קולטת את זה.

לכן, איך אני עושה שהפקודה רצה כל הזמן, עד שהיא מוצאת תהליך אקספלורר בלולאה?

תודה לעוזרים :)

פורסם

טרחת בכלל לקרוא את הלינק הראשון מבין השניים שציינתי? או שבגלל שאין שם בדיוק את שורות הקוד שאתה צריך בשביל לעשות copy paste לא ניסית אפילו?

ארכיון

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

דיונים חדשים