[C#] 외부 프로그램 실행시키고,종료이벤트 처리

C#으로 응용프로그램 프로세스를 실행시키고, 에러가 발생했을 때 강제 종료 시키고 다시 응용프로그램을  실행시키도록 Launcher 프로그램을 만들었다.
그런데 Tray Icon으로 숨겨지는 프로그램, Dialog Base의 응용프로그램의 경우와 에러가 발생했을 때 Message Box가 떠 있는 경우는 상태 파악이 되지 않는 난감한 문제에 직면하게 되었다.
이문제를 해결하는 과정을 메모 해둔다.

C#으로 외부 프로그램을 실행시키기

C#에서 외부 프로그램을 실행시키기 위해서 System.Diagnostics.Process 클래스를 이용하면 된다.

System.Diagnostics.Process ps = new System.Diagnostics.Process();
ps.StartInfo.FileName = "실행할 파일명(xxx.exe)";
ps.StartInfo.WorkingDirectory = "작업 폴더(c:\\프로그램폴더)";
ps.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;
//위와 같이 StartInfo에 실행할 프로그램의 정보를 설정한 후 Start()를 실행하면 된다.
ps.Start();
ps.WaitForExit(1000);//프로세서가 끝 나기를 기다림 1초(1000밀리)

WaitForExit(1000) 의 1000 은 1초를 기다린다는 뜻입니다.파라메타가 없으면 무기한 대기합니다.이 무기한 대기가 사용되면, 호출된 프로세스가 너무 오래 걸릴 경우 끝났는지 아닌지 확인이 안되고 죽어 버리는 문제가 경향이 있으므로 루프롤 돌면서 수시로 체크해야 한다.
또 다른 방법은 종료 이벤트를 확인하는 방법이 있다.

private void RunNotePad()
{
  Process p1 = new Process("notepad.exe");
  p1.EnableRaisingEvents=true;//종료 이벤트를 활성화
  p1.Exited += new EventHandler(ProcessExited);//이벤트 핸들러 지정
  p1.Start();
}
public void ProcessExited(object source, EventArgs e)
{
// 프로세스가 종료 되었을 때 처리 작업을 ...
}

프로세스가 이미 실행되고 있는지 파악해서 이미 실행되고 있다면 에러가 없는지 확인하고 에러가 있으면 종료시키고 다시 실행 시키고 싶다면 어떻게 처리해야 할까?
기본적인 개념은 프로세스가 실행되고 있는지 확인하고, Main윈도우가 정상적으로 Active 되어 있는지 확인하면 된다.
에러가 있으면 Main Window가 닫히고 에러창이 떠게 되니까..

기본 개념에 대한 코드
 [DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);
void Main()///프로세스를 감시하는 thread를 실행시키고
{
 bool bThredAlive = true;
 Thread hThread = new Thread(delegate () { MonitoringProcee(); });
 hThread.Priority = ThreadPriority.Lowest;
 hThread.IsBackground = true;
 hThread.Start();
}
/// Process의 상태를 감시 하도록 루틴을 만듦
public void MonitoringProcee()
{//너무 복잡한 조건을 상정하니까 계속 어려워 진다.
  while (bThredAlive)
  {
    Process[] processs = GetProcessesByName(clsName);//실행 프로그램의 Class이름으로 프로세서 찾기 에:)clsName.exe
    if (processs.Length <= 0)//실행되고 있지 않으면 실행이 되도록 한다
    {
      Start();//Process를 실행시키는 루틴
    }
    else //이미 프로세스가 실행되고 있으면 에러만 처리하도록, 프로세스를 조사하지 않으면 무한 반복으로 응용프로그램을 실행시킨다.
    {
       foreach (Process Pr in processs)
       {
         if(CheckError())//에러를 검출하고 에러가 있을 때 윈도우를 종료 시킨다
           SendMessage(Pr.MainWindowHandle, 0x0010, -1, -1);//윈도우를 종료하게 만든다
            /// 에러가 있을 때 Process클래스의 Close,CloseMainWindow 는 정상작동하지 않는다 ///////////////
            //Pr.Close();
            //Pr.CloseMainWindow();
       }
   }
}

프로세스 클래스를 이용하여 외부 프로그램을 실행시키는 것은 해결 되었다.그러나 에러로 인해 응용프로그램이 자동으로 종료되어버리는 경우 에러창이 남는 경우도 있고, 사용자가 에러창을 수동으로 닫아야만 응용프로그램이 종료되는 경우도 있다.종료된후 에러가 있었다고 메세지를 띄우고 있는 경우 거추장 스런 창들을 자동으로 닫아 줄 필요가 있다.

에러창을 확인하고 닫아야 프로그램이 종료되는 경우, 실제로 응용프로그램은 정상동작 되지 않고 있음에도 불구하고 프로세스를 조사해 보면 해당프로세스가 실행되고 있다는 결과를 얻게 되고 의도했던 에러발생 후 재실행 할 수 있는 효과를 기대할 수 없게 된다. 결국 에러창을 찾아서 닫을 수 있는 어떤 동작이 필요하다.
프로세스 Check 만으로 응용프로그램의 실행여부를 판단할 수 있지만 에러창을 찾아서 닫는 방법은 조금 다르게 처리 되어야한다.예상되는 윈도우를(“윈도우 창의 이름”)모두 검색해서 일일이 닫아야 한다는 것이다. 그러기 위해서는 정상적인 응용프로그램인지 에러창인지 판단 할 수 있어야 한다.
그래서 MainWindow의 상태를 먼저 파악하고 나서 MainWindow가 아닌 에러창들을 닫도록 해야 하는데…. 몇몇 문제가 있다.

Process 클래스의 MainWindowHandle 이용의 문제점(예외상황)

의도는 MainWindow가 비활성화 되면 에러로 처리하려는 목적이었지만 실제 동작결과는 다소 의외다.
Process.MainWindowHandle는 에러메세지 박스가 떠 있는 것과 상관없이 유효한 핸들값을 반환한다.
오혀혀 Tray Icon으로 숨겨진 경우 0을 반환하는 예상밖의 결과를 보여준다.

이렇게 동작된다면 Process.MainWindowHandle를 사용할 수 없다.
그러나 Window Api의 FindWindow의 경우는 TrayIcon으로 처리된 윈도우의 핸들을 반환하므로 FindWindow를 사용하도록 한다.
IntPtr pWnd=FindWindow(null,”윈도우네임”);
API 사용하는 방법–
[DllImport(“user32.dll”, CharSet = CharSet.Auto)] public static extern IntPtr FindWindow(string strClassName, string strWindowName);

Process 클래스의 MainWindowHandle를 이용하여 에러여부를 감지하기 적절치 않지만,API의 FindWindow를 사용하면 TrayIcon으로 처리된 윈도우 일지라도 핸들을 찾을 수 있다.
그리고 API를 이용해서 Error Dialog와 구분해서 판단하는 방법을 살펴보자.
KillErrorProcess Method에서 Application이름으로 응용프로그램을 모두 찾아서 프로세스 ID가 같은 것은 남겨두고 에러 메세지박스 혹은 다이얼로그만 닫는다

public void MonitoringProcee()
{
  while (bThredAlive)
  {
    Process[] processs = GetProcessesByName(clsName);//실행 프로그램의 Class이름으로 프로세서 찾기 에:)clsName.exe
    if (processs.Length <= 0)//실행되고 있지 않으면 실행이 되도록 한다
    {
      Start();//Process를 실행시키는 루틴
    }
    else //이미 프로세스가 실행되고 있으면 에러만 처리하도록, 프로세스를 조사하지 않으면 무한 반복으로 응용프로그램을 실행시킨다.
    {
        foreach (Process Pr in processs)
        {
          if (!Pr.EnableRaisingEvents)//종료이벤트 수신이 되어 있지 않으면 이벤트를 수신하도록 설정
          {
            Pr.Exited += ProcessExited;
            Pr.EnableRaisingEvents = true;//종료 이벤트 수락
          }
          KillErrorProcess(Pr.ProcessName, Pr.Id);//에러창을 강제로 닫기
        }
       Thread.Sleep(5000);
   }
}
//// 에러발생을 알리는 Dialog 또는 MessageBox를 닫자
bool KillErrorProcess(String wndTitle, int ValidprocessID)
{
  uint processID = 0;
  StringBuilder Title = new StringBuilder(256);
  StringBuilder lpClassName = new StringBuilder(256);
  IntPtr tempHwnd = WinApi.FindWindow(null, null); // 최상위 윈도우 핸들 찾기
  while (tempHwnd.ToInt32() != 0)//에러 Dialog를 직접 찾을 방법이 없으로로 윈도우를 모두 뒤져야 한다
  {
   tempHwnd = WinApi.GetWindow(tempHwnd, WinApi.GW_HWNDNEXT); // 다음 윈도우 핸들 찾기
   WinApi.GetWindowText(tempHwnd, Title, Title.Capacity + 1); //윈도우 Title 찾기
   if (Title.ToString().IndexOf(wndTitle) >= 0)
   {
       WinApi.GetWindowThreadProcessId(tempHwnd, out processID);//윈도우의 프로세스 ID 찾기
       if (processID != ValidprocessID)//에러 메세지 박스, 다이알로그 등 윈도우 타이틀로 찾아서 Launch시킨것과 같은지 확인
       {
         WinApi.GetClassName(tempHwnd, lpClassName, lpClassName.Capacity + 1);
         if (lpClassName.ToString().CompareTo("#32770") == 0)//Dialog,MessageBox인 것은 닫고 다른 응용프로그램이면 닫지 않는다
         {
               WinApi.SendMessage(tempHwnd, 0x0010, -1, -1);
         }
       }
   }
  }
}
//API를 사용하려면 Dll을 Import하도록 해주어야한다.
[DllImport("User32.dll", SetLastError = true, CharSet = CharSet.Auto)]
public static extern int GetWindowText(IntPtr hWnd, StringBuilder lpWindowText, int nMaxCount);
[DllImport("user32.dll", SetLastError = true)]
public static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId);
[DllImport("User32.dll", SetLastError = true, CharSet = CharSet.Auto)]
public static extern int GetClassName(IntPtr hwnd, StringBuilder lpClassName, int nMaxCount);

“[C#] 외부 프로그램 실행시키고,종료이벤트 처리”의 267개의 댓글

  1. My programmer is trying to persuade me to move to .net from PHP.
    I have always disliked the idea because of the costs. But he’s tryiong none the less.
    I’ve been using Movable-type on numerous websites for about a year
    and am anxious about switching to another platform.
    I have heard good things about blogengine.net. Is there a way I
    can import all my wordpress posts into it? Any kind of help would be greatly appreciated!

  2. Hi there! Do you know if they make any plugins to help with
    Search Engine Optimization? I’m trying to get my blog to rank for some targeted keywords but I’m not
    seeing very good gains. If you know of any please share.
    Appreciate it!

  3. Have you ever thought about publishing an e-book
    or guest authoring on other blogs? I have a blog based upon on the same ideas you discuss and would really like to have you
    share some stories/information. I know my audience would appreciate your work.
    If you are even remotely interested, feel free to send me
    an e-mail.

  4. Hello, i think that i saw you visited my weblog so i came to “return the favor”.I’m
    attempting to find things to enhance my web site!I suppose its ok to use some of your ideas!!

  5. I simply want to mention I am just very new to blogging and honestly savored you’re blog. Likely I’m going to bookmark your website . You really have wonderful articles and reviews. Regards for revealing your web page.

  6. There is numerous separate years Los angeles Weight reduction eating plan with each a person is a necessity. The pioneer part can be your original getting rid of belonging to the extra pounds. la weight loss

  7. Today, I went to the beachfront with my children. I found a sea shell and gave it to my 4 year old daughter and said “You can hear the ocean if you put this to your ear.” She placed the shell to her ear and screamed. There was a hermit crab inside and it pinched her ear. She never wants to go back! LoL I know this is completely off topic but I had to tell someone!

  8. An excellent share, I simply offered this onto an associate who was doing a little analysis on this. As well as he in fact purchased me breakfast since I found it for him. smile. So let me rephrase that: Thnx for the treat! Yet yeah Thnkx for spending the time to discuss this, I feel highly about it as well as love reading more on this topic. When possible, as you become proficiency, would certainly you mind upgrading your blog with more details? It is extremely helpful for me. Big thumb up for this post!

  9. Wonderful goods from you, man. I’ve understand your stuff
    previous to and you’re just too great. I actually like what you’ve acquired here, really like what you are saying and the way in which you say it.
    You make it entertaining and you still take care of to
    keep it wise. I can not wait to read much more from you.
    This is really a tremendous site.

  10. I’m the business owner of JustCBD Store label (justcbdstore.com) and I am currently looking to broaden my wholesale side of business. I really hope that anybody at targetdomain is able to provide some guidance ! I considered that the very best way to do this would be to reach out to vape shops and cbd retailers. I was hoping if anybody at all could suggest a qualified web-site where I can get Vape Shop B2B Sales Leads I am currently taking a look at creativebeartech.com, theeliquidboutique.co.uk and wowitloveithaveit.com. Not sure which one would be the most ideal solution and would appreciate any assistance on this. Or would it be much simpler for me to scrape my own leads? Suggestions?

  11. Hello, There’s no doubt that your blog could possibly be having web browser compatibility issues. Whenever I look at your site in Safari, it looks fine but when opening in Internet Explorer, it’s got some overlapping issues. I merely wanted to give you a quick heads up! Aside from that, wonderful website!

  12. I?m pleased, I have to say. Actually rarely do I come across a blog site that?s both informative and also entertaining, and also let me tell you, you have struck the nail on the head. Your suggestion is impressive; the problem is something that not enough individuals are speaking intelligently around. I am extremely pleased that I stumbled across this in my search for something relating to this.

  13. Hello there! I could have sworn I’ve been to this blog before but after browsing through a few of the articles I realized it’s new to me. Anyways, I’m definitely pleased I found it and I’ll be book-marking it and checking back often!

  14. The next time I read a blog, Hopefully it does not disappoint me just as much as this one. I mean, I know it was my choice to read through, however I truly thought you’d have something interesting to talk about. All I hear is a bunch of whining about something that you could possibly fix if you weren’t too busy seeking attention.

  15. Can I just say what a comfort to uncover an individual who truly knows what they’re discussing online. You certainly understand how to bring a problem to light and make it important. More and more people ought to read this and understand this side of the story. I was surprised that you are not more popular because you surely have the gift.

  16. May I simply say what a comfort to discover an individual who really understands what they are discussing over the internet. You definitely realize how to bring an issue to light and make it important. More people really need to check this out and understand this side of the story. I was surprised you aren’t more popular given that you most certainly have the gift.

  17. You’re so awesome! I do not suppose I have read through something like this before. So wonderful to find someone with a few genuine thoughts on this issue. Really.. thank you for starting this up. This site is something that is needed on the web, someone with a bit of originality!

  18. After study a few of the article on your website currently, and also I really like your means of blogging. I bookmarked it to my book mark internet site listing and also will be examining back soon. Pls check out my internet site too and let me understand what you assume.

  19. I’m impressed, I must say. Seldom do I come across a blog that’s both equally educative and interesting, and let me tell you, you’ve hit the nail on the head. The problem is something that not enough people are speaking intelligently about. I am very happy I stumbled across this during my search for something concerning this.

  20. Having read this I thought it was very informative. I appreciate you finding the time and energy to put this informative article together. I once again find myself personally spending a significant amount of time both reading and commenting. But so what, it was still worthwhile!

  21. Hi! I could have sworn I’ve been to this web site before but after looking at many of the posts I realized it’s new to me. Anyways, I’m definitely happy I came across it and I’ll be bookmarking it and checking back frequently!

  22. Having read this I thought it was extremely enlightening. I appreciate you spending some time and effort to put this content together. I once again find myself spending a lot of time both reading and leaving comments. But so what, it was still worth it!

  23. Right here is the perfect blog for anyone who wants to understand this topic. You know a whole lot its almost tough to argue with you (not that I personally would want to…HaHa). You definitely put a new spin on a subject which has been written about for ages. Great stuff, just excellent!

  24. Hi, I do believe this is an excellent web site. I stumbledupon it 😉 I’m going to come back once again since i have book marked it. Money and freedom is the best way to change, may you be rich and continue to help other people.

  25. I’m amazed, I have to admit. Rarely do I come across a blog that’s both equally educative and entertaining, and let me tell you, you’ve hit the nail on the head. The problem is an issue that not enough folks are speaking intelligently about. I’m very happy I stumbled across this during my hunt for something regarding this.

  26. After looking over a number of the blog articles on your website, I honestly appreciate your way of blogging. I book marked it to my bookmark website list and will be checking back soon. Take a look at my web site as well and let me know how you feel.

  27. Hi there, I believe your web site might be having internet browser compatibility problems. When I take a look at your website in Safari, it looks fine however, if opening in IE, it has some overlapping issues. I merely wanted to provide you with a quick heads up! Apart from that, wonderful site!

  28. After exploring a few of the blog articles on your web page, I honestly appreciate your technique of blogging. I book marked it to my bookmark website list and will be checking back in the near future. Please visit my website as well and tell me how you feel.

  29. Greetings, There’s no doubt that your site could possibly be having browser compatibility problems. Whenever I take a look at your blog in Safari, it looks fine however, if opening in Internet Explorer, it has some overlapping issues. I simply wanted to give you a quick heads up! Aside from that, great website!

  30. I’m excited to find this great site. I need to to thank you for your time for this particularly wonderful read!! I definitely loved every bit of it and i also have you saved as a favorite to check out new information on your site.

  31. Having read this I believed it was really informative. I appreciate you finding the time and effort to put this short article together. I once again find myself spending way too much time both reading and commenting. But so what, it was still worth it!

  32. An outstanding share! I’ve just forwarded this onto a friend who was conducting a little homework on this. And he in fact bought me lunch due to the fact that I stumbled upon it for him… lol. So allow me to reword this…. Thanks for the meal!! But yeah, thanks for spending some time to discuss this topic here on your web site.

  33. A fascinating discussion is definitely worth comment. I do think that you ought to write more on this issue, it might not be a taboo matter but typically people don’t discuss such subjects. To the next! All the best!!

  34. Oh my benefits! a fantastic short article man. Thanks Nevertheless I am experiencing issue with ur rss. Don?t recognize why Not able to sign up for it. Is there any individual obtaining identical rss issue? Anybody that recognizes kindly react. Thnkx

  35. Hello there! This article could not be written much better! Looking at this post reminds me of my previous roommate! He constantly kept preaching about this. I most certainly will send this information to him. Fairly certain he’ll have a great read. Many thanks for sharing!

  36. I blog quite often and I really thank you for your content. This article has really peaked my interest. I’m going to take a note of your blog and keep checking for new details about once a week. I opted in for your RSS feed too.

  37. Can I just say what a relief to uncover somebody that genuinely understands what they’re discussing on the web. You certainly realize how to bring a problem to light and make it important. More people must look at this and understand this side of your story. It’s surprising you’re not more popular because you certainly have the gift.

  38. Aw, this was a very good post. Finding the time and actual effort to create a great article… but what can I say… I put things off a whole lot and never manage to get nearly anything done.

  39. Aw, this was a very good post. Taking a few minutes and actual effort to produce a very good article… but what can I say… I put things off a whole lot and don’t seem to get nearly anything done.

  40. Hi! I could have sworn I’ve been to your blog before but after looking at some of the articles I realized it’s new to me. Anyways, I’m definitely happy I came across it and I’ll be bookmarking it and checking back frequently!

  41. I’m amazed, I have to admit. Seldom do I come across a blog that’s equally educative and interesting, and without a doubt, you have hit the nail on the head. The issue is something which too few men and women are speaking intelligently about. I’m very happy that I came across this in my search for something relating to this.

  42. An impressive share! I have just forwarded this onto a co-worker who has been conducting a little homework on this. And he actually ordered me dinner because I found it for him… lol. So let me reword this…. Thanks for the meal!! But yeah, thanks for spending some time to discuss this topic here on your internet site.

  43. When I originally commented I appear to have clicked the -Notify me when new comments are added- checkbox and from now on every time a comment is added I recieve 4 emails with the exact same comment. There has to be a way you are able to remove me from that service? Appreciate it!

  44. Right here is the perfect website for everyone who really wants to understand this topic. You realize so much its almost hard to argue with you (not that I really would want to…HaHa). You certainly put a new spin on a topic that has been written about for decades. Wonderful stuff, just excellent!

  45. When I initially left a comment I appear to have clicked the -Notify me when new comments are added- checkbox and now every time a comment is added I recieve four emails with the exact same comment. There has to be a means you can remove me from that service? Kudos!

  46. I’m impressed, I have to admit. Rarely do I encounter a blog that’s both equally educative and entertaining, and let me tell you, you’ve hit the nail on the head. The problem is something that too few people are speaking intelligently about. I am very happy I came across this during my hunt for something relating to this.

  47. Spot on with this write-up, I really believe this website needs far more attention. I’ll probably be back again to read through more, thanks for the info!

  48. When I originally commented I seem to have clicked on the -Notify me when new comments are added- checkbox and from now on every time a comment is added I receive four emails with the same comment. Perhaps there is a means you are able to remove me from that service? Many thanks!

  49. This is the right website for anybody who hopes to understand this topic. You know so much its almost hard to argue with you (not that I personally would want to…HaHa). You definitely put a new spin on a subject which has been discussed for decades. Great stuff, just excellent!

  50. I blog quite often and I really appreciate your content. This article has truly peaked my interest. I’m going to bookmark your blog and keep checking for new details about once a week. I subscribed to your Feed as well.

  51. Hi there, There’s no doubt that your blog could possibly be having browser compatibility problems. When I look at your site in Safari, it looks fine however, if opening in Internet Explorer, it’s got some overlapping issues. I merely wanted to provide you with a quick heads up! Aside from that, wonderful blog!

  52. I’m pretty pleased to discover this web site. I want to to thank you for ones time due to this wonderful read!! I definitely appreciated every bit of it and I have you saved as a favorite to check out new things on your website.

  53. May I just say what a relief to find somebody that genuinely knows what they are talking about over the internet. You certainly understand how to bring a problem to light and make it important. More people should read this and understand this side of your story. I was surprised you aren’t more popular given that you surely have the gift.

  54. You have made some decent points there. I looked on the web to find out more about the issue and found most people will go along with your views on this website.

  55. I blog often and I genuinely appreciate your content. Your article has really peaked my interest. I am going to bookmark your website and keep checking for new details about once a week. I subscribed to your RSS feed too.

  56. Oh my goodness! Amazing article dude! Thank you, However I am experiencing issues with your RSS. I don’t know why I am unable to join it. Is there anybody else getting similar RSS issues? Anyone that knows the solution can you kindly respond? Thanx!!

  57. An intriguing discussion is definitely worth comment. There’s no doubt that that you ought to publish more about this issue, it may not be a taboo matter but generally people don’t discuss such topics. To the next! Best wishes!!

  58. Having read this I thought it was very informative. I appreciate you spending some time and effort to put this informative article together. I once again find myself personally spending a significant amount of time both reading and posting comments. But so what, it was still worth it!

  59. Hey there! I simply would like to offer you a huge thumbs up for your excellent information you have got right here on this post. I will be coming back to your site for more soon.

  60. May I simply just say what a relief to uncover a person that truly knows what they are talking about over the internet. You definitely know how to bring a problem to light and make it important. More people must read this and understand this side of the story. It’s surprising you are not more popular given that you certainly possess the gift.

  61. You’ve made some really good points there. I checked on the net for more information about the issue and found most individuals will go along with your views on this site.

  62. You are so interesting! I don’t believe I’ve truly read anything like this before. So wonderful to discover someone with unique thoughts on this subject. Seriously.. thanks for starting this up. This site is something that is required on the internet, someone with a little originality!

  63. Oh my goodness! Awesome article dude! Thank you so much, However I am experiencing troubles with your RSS. I don’t understand why I cannot subscribe to it. Is there anyone else getting the same RSS problems? Anyone who knows the answer can you kindly respond? Thanx!!

  64. I must thank you for the efforts you’ve put in writing this website. I really hope to view the same high-grade content by you later on as well. In truth, your creative writing abilities has inspired me to get my own, personal blog now 😉

  65. An impressive share! I have just forwarded this onto a friend who has been doing a little homework on this. And he actually bought me breakfast simply because I found it for him… lol. So allow me to reword this…. Thanks for the meal!! But yeah, thanks for spending some time to discuss this topic here on your internet site.

  66. Oh my goodness! Awesome article dude! Thank you so much, However I am having difficulties with your RSS. I don’t know the reason why I am unable to join it. Is there anyone else having identical RSS problems? Anyone that knows the solution will you kindly respond? Thanks!!

  67. Having read this I believed it was really informative. I appreciate you spending some time and effort to put this information together. I once again find myself personally spending a lot of time both reading and leaving comments. But so what, it was still worthwhile!

  68. I blog quite often and I seriously appreciate your content. The article has truly peaked my interest. I am going to book mark your site and keep checking for new details about once per week. I subscribed to your Feed as well.

  69. I was very pleased to discover this web-site. I wanted to thanks for your time for this terrific read!! I most definitely enjoying every little of it and I have you bookmarked to have a look at new things you post.

  70. Hi there! This blog post could not be written any better! Looking at this post reminds me of my previous roommate! He constantly kept talking about this. I most certainly will send this article to him. Fairly certain he’s going to have a very good read. Thank you for sharing!

  71. Having read this I thought it was very enlightening. I appreciate you finding the time and energy to put this informative article together. I once again find myself personally spending way too much time both reading and commenting. But so what, it was still worthwhile!

  72. Good post. I learn something totally new and challenging on blogs I stumbleupon on a daily basis. It’s always useful to read through content from other authors and practice something from other sites.

  73. Oh my goodness! Amazing article dude! Thank you so much, However I am going through difficulties with your RSS. I don’t know why I am unable to join it. Is there anybody having similar RSS issues? Anyone who knows the solution will you kindly respond? Thanks!!

  74. Hi! I could have sworn I’ve been to this website before but after looking at some of the posts I realized it’s new to me. Regardless, I’m certainly happy I came across it and I’ll be bookmarking it and checking back often!

  75. Next time I read a blog, Hopefully it does not disappoint me just as much as this particular one. I mean, I know it was my choice to read through, nonetheless I truly believed you would probably have something helpful to say. All I hear is a bunch of complaining about something that you could fix if you were not too busy searching for attention.

  76. Aw, this was an incredibly good post. Finding the time and actual effort to produce a really good article… but what can I say… I procrastinate a whole lot and don’t seem to get nearly anything done.

  77. Hi, I do think this is a great blog. I stumbledupon it 😉 I will revisit yet again since I book marked it. Money and freedom is the greatest way to change, may you be rich and continue to help others.

  78. I’m amazed, I have to admit. Seldom do I come across a blog that’s both educative and interesting, and let me tell you, you have hit the nail on the head. The issue is something that not enough people are speaking intelligently about. I’m very happy that I came across this during my search for something concerning this.

  79. Oh my goodness! Awesome article dude! Many thanks, However I am having troubles with your RSS. I don’t know the reason why I cannot subscribe to it. Is there anyone else getting similar RSS issues? Anyone who knows the answer will you kindly respond? Thanx!!

  80. Right here is the perfect web site for anybody who really wants to find out about this topic. You understand so much its almost tough to argue with you (not that I actually will need to…HaHa). You definitely put a brand new spin on a subject that has been discussed for decades. Excellent stuff, just excellent!

  81. You made some good points there. I checked on the net for more information about the issue and found most individuals will go along with your views on this website.

  82. Aw, this was an exceptionally nice post. Taking the time and actual effort to generate a top notch article… but what can I say… I procrastinate a lot and don’t manage to get nearly anything done.

  83. Good post. I learn something totally new and challenging on websites I stumbleupon on a daily basis. It’s always interesting to read through content from other authors and practice something from their websites.

  84. Aw, this was an incredibly nice post. Taking the time and actual effort to generate a very good article… but what can I say… I procrastinate a whole lot and don’t manage to get nearly anything done.

  85. You made some decent points there. I looked on the internet for more info about the issue and found most individuals will go along with your views on this web site.

  86. After I originally commented I seem to have clicked on the -Notify me when new comments are added- checkbox and now whenever a comment is added I receive four emails with the exact same comment. There has to be an easy method you are able to remove me from that service? Appreciate it!

  87. You made some decent points there. I looked on the web for more information about the issue and found most individuals will go along with your views on this site.

  88. After checking out a few of the blog articles on your site, I honestly appreciate your technique of blogging. I bookmarked it to my bookmark website list and will be checking back in the near future. Please check out my web site too and tell me your opinion.

  89. After checking out a handful of the blog articles on your web site, I truly appreciate your technique of blogging. I saved as a favorite it to my bookmark webpage list and will be checking back in the near future. Please check out my website too and tell me what you think.

  90. I would like to thank you for the efforts you have put in penning this site. I really hope to check out the same high-grade content by you later on as well. In fact, your creative writing abilities has encouraged me to get my own website now 😉

  91. I really love your blog.. Excellent colors & theme. Did you develop this amazing site yourself? Please reply back as I’m attempting to create my own site and want to know where you got this from or exactly what the theme is named. Many thanks!

  92. Howdy, I do think your web site could be having browser compatibility issues. When I take a look at your blog in Safari, it looks fine however, if opening in IE, it’s got some overlapping issues. I just wanted to give you a quick heads up! Aside from that, great blog!

  93. I would like to thank you for the efforts you have put in penning this blog. I’m hoping to check out the same high-grade content by you in the future as well. In truth, your creative writing abilities has motivated me to get my very own website now 😉

  94. You’ve made some decent points there. I checked on the internet for more info about the issue and found most individuals will go along with your views on this website.

  95. Hi there! This blog post could not be written much better! Looking at this article reminds me of my previous roommate! He always kept talking about this. I am going to forward this article to him. Fairly certain he will have a great read. Thanks for sharing!

  96. Youre so great! I do not suppose Ive review anything like this prior to. So wonderful to find someone with some original ideas on this subject. realy thanks for beginning this up. this website is something that is required online, somebody with a little creativity. useful task for bringing something brand-new to the net!

  97. When I originally left a comment I seem to have clicked the -Notify me when new comments are added- checkbox and from now on every time a comment is added I receive four emails with the same comment. Perhaps there is an easy method you can remove me from that service? Appreciate it!

  98. Hi, I do believe this is an excellent web site. I stumbledupon it 😉 I may return once again since i have saved as a favorite it. Money and freedom is the best way to change, may you be rich and continue to guide others.

  99. An impressive share! I’ve just forwarded this onto a colleague who has been conducting a little research on this. And he actually bought me breakfast simply because I stumbled upon it for him… lol. So allow me to reword this…. Thank YOU for the meal!! But yeah, thanx for spending time to talk about this subject here on your web page.

  100. Can I simply just say what a relief to discover a person that actually understands what they’re talking about on the net. You certainly understand how to bring an issue to light and make it important. More and more people need to read this and understand this side of the story. I was surprised you are not more popular since you certainly have the gift.

  101. I blog quite often and I seriously thank you for your content. This article has really peaked my interest. I will bookmark your website and keep checking for new information about once per week. I subscribed to your RSS feed as well.

  102. After I initially commented I appear to have clicked the -Notify me when new comments are added- checkbox and from now on each time a comment is added I recieve four emails with the exact same comment. Perhaps there is a means you are able to remove me from that service? Thanks!

  103. Having read this I thought it was very enlightening. I appreciate you spending some time and effort to put this information together. I once again find myself spending a lot of time both reading and leaving comments. But so what, it was still worthwhile!

  104. Howdy, I do think your website may be having internet browser compatibility problems. When I look at your web site in Safari, it looks fine however when opening in I.E., it has some overlapping issues. I merely wanted to give you a quick heads up! Apart from that, great site!

  105. Right here is the perfect website for anybody who really wants to understand this topic. You realize a whole lot its almost tough to argue with you (not that I really will need to…HaHa). You definitely put a fresh spin on a subject that has been discussed for ages. Wonderful stuff, just great!

  106. Your style is very unique compared to other people I have read stuff from. Thanks for posting when you have the opportunity, Guess I will just book mark this page.

  107. After research study a few of the article on your web site currently, and also I genuinely like your means of blogging. I bookmarked it to my book mark site listing as well as will be checking back quickly. Pls look into my internet site too and let me know what you think.

  108. Can I simply just say what a comfort to discover somebody that truly knows what they are discussing on the internet. You actually understand how to bring a problem to light and make it important. A lot more people really need to check this out and understand this side of your story. I was surprised you’re not more popular since you definitely possess the gift.

  109. Hey! I realize this is somewhat off-topic however I had
    to ask. Does building a well-established website like yours require a massive amount work?
    I am brand new to running a blog but I do write in my journal
    daily. I’d like to start a blog so I can share my
    personal experience and feelings online. Please let me know if you have any suggestions or tips for brand
    new aspiring bloggers. Appreciate it!

    my page :: GalePDermady

댓글 남기기