MOJA PASJA - PROGRAMOWANIE
   Dzisiaj jest Niedziela, 23 kwietnia, 2017r. Ostatnia aktualzacja miała miejsce: 10 grudnia 2006r. Homepage

Programowanie: Artykuły * FAQ * Download * Komponenty * Książki WWW: Artykuły * Narzędzia * Kursy * Darmowe * FAQ * Skrypty * Ksiązki Off-Topic: Aforyzmy * Humor Inne: Forum * Wiki * Liczniki * Linki * Chat * Grafika * Video * Inne



Jak otworzyć jakiś program i poczekać aż skończy się wykonywać ?
   "Normalnie", zewnętrzny program najłatwiej jest otworzyć przez WinExec. Nie daje on jednak możliwości poczekania na zakończenie programu, a czasami, jest to konieczne. Aby więc uruchomić program i poczekać na jego zakończenie musimy skorzystać z dwóch fukcji: CreateProcess (utworzenie procesu, czyli otworzenie programu) i WaitForSingleObject (czekanie aż proces/program zakończy swoje działanie).

   Jako że to pytanie oznaczone jest ikonką dla zaawansowanych, podaje tylko przykładowy kod do uruchomienia i poczekania na zakończenie bardzo wyrafinowanego programu jakim jest.. Notatnik. Dalej męczcie się sami ;).

   Unit1.cpp

   STARTUPINFO si;
   PROCESS_INFORMATION pi;
   AnsiString nazwa = "notepad.exe";
  
   ZeroMemory( &si, sizeof(si) );
   si.cb = sizeof(si);
  
   // Start the child process.
  
if( !CreateProcess( NULL,          // No module name (use command line).
  
                   nazwa.c_str(), // Command line.
  
                   NULL,          // Process handle not inheritable.
  
                   NULL,          // Thread handle not inheritable.
  
                   FALSE,         // Set handle inheritance to FALSE.
  
                   0,             // No creation flags.
  
                   NULL,          // Use parent's environment block.
  
                   NULL,          // Use parent's starting directory.
  
                   &si,           // Pointer to STARTUPINFO structure.
  
                   &pi )      // Pointer to PROCESS_INFORMATION structure.
  
   ) return;
  
   // Wait until child process exits.
  
WaitForSingleObject( pi.hProcess, INFINITE );
  
   // Close process and thread handles.
  
CloseHandle( pi.hProcess );
   CloseHandle( pi.hThread );
  

ComCon vB





   Podziękowania dla Mateusza B. 'Draco' oraz leinada.






Stronę przygotował: Kacper Cieśla (comboy). Wszelkie prawa zastrzeżone.
Reklama * Zgłoś błąd * Kontakt * Hosting * O stronie * Sponsoring
Czas generowania strony: 0.001s