Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

How to determine if a program that i have started has finished loading

Posted on 2003-11-17
6
270 Views
Last Modified: 2010-04-17
I need to know how to determine if a program that i have started with a call to CreateProcess() has finshed loading. I have developed a program that starts and stops programs all over a network and need to send messages to tell the programs to turn on or off but have to wait until they are through loading or sometimes the message isnt processed. I have the ProcessId, ThreadId and Handle of each program and am at this point saving their titles and sending the message after i find the title on the screen (very inefficient). If any one can help...
0
Comment
Question by:derekthompson
6 Comments
 
LVL 22

Accepted Solution

by:
cookre earned 25 total points
ID: 9768787
if (0==CreateProcess(NULL,TempStr,NULL,NULL,FALSE,0,NULL,NULL,&StartInfo,&ProcInfo))
   {
   ...Unable to spawn
   }
else
  {
  Stati=0;
  lRC=GetExitCodeProcess(ProcInfo.hProcess,&Stati);
  while (lRC && Stati==STILL_ACTIVE)
          {
          Sleep(500);
          lRC=GetExitCodeProcess(ProcInfo.hProcess,&Stati);
          }
  }

Of course, no need for a loop to wait for it, just call GetExitCodeProcess() whenever you want to check and see if it returns STILL_ACTIVE.

0
 
LVL 1

Assisted Solution

by:rgenius
rgenius earned 25 total points
ID: 9768932
i did something similar, but what i did was to create entries in a database for each user. once my program is executed, i add an entry to a table. when the user exists, i delete the entry.

simple but it works for me..  just a thought.... :-)
0
 

Author Comment

by:derekthompson
ID: 9771272
im running some tests with this now but i dont think this is really any different that what im using now to detect if its been started, while (!IsWindow(hWnd)), the problem (i think) is the programs i am starting are all written in VB and are loading a common DLL they are using to load their window frame so if you watch real closely you can see the window actually change its name form ShellClient to the program name. If they receive a message during this time to start processing, for some resaon the message isnt processed (sending a msg of VK_F5 to start processing) which im pretty sure is due to the shellclient dll being loaded. The problem would be pretty simple to solve if the stupid things didnt take so long to load the dll. Some times a program can take as long as 30 sec to open (how inefficient is that) and other times the same program will open in less than a second. I put a timer in my program for a delay but its inefficient because of the inconstency of the time it takes to start up the other programs which results in A.my program seems slow because im waiting too long for other programs to start or B.not all of the programs start processing. I thought getting the actual title from the window for each added program would do the trick but i can watch in task manager and see the name of the program but it isnt on the screen yet which im pretty sure is when my program is sending the F5 message and its getting ignored. At this point i feel the only hope i have is if i can somehow tell if the window is actually visible to the user (if this is possible) but im not really for sure of anything. all comments are appreciated i still may be going down the wrong path
0

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Whether you've completed a degree in computer sciences or you're a self-taught programmer, writing your first lines of code in the real world is always a challenge. Here are some of the most common pitfalls for new programmers.
Computer science students often experience many of the same frustrations when going through their engineering courses. This article presents seven tips I found useful when completing a bachelors and masters degree in computing which I believe may he…
Viewers will learn how to properly install Eclipse with the necessary JDK, and will take a look at an introductory Java program. Download Eclipse installation zip file: Extract files from zip file: Download and install JDK 8: Open Eclipse and …

839 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question