Avatar billede henrik_p Nybegynder
06. november 2002 - 23:08 Der er 12 kommentarer og
1 løsning

starte 2 programmer samtidig

jeg er ved at forsøge at automatisere nogle ting , men er
kommet i den specielle situation at to eksterne programmer jeg benytter skal køre samtidig , er det noget der overhovedet kan lade sig gøre ?
Avatar billede arne_v Ekspert
06. november 2002 - 23:17 #1
Selvfølgelig.

Der er mange mulige måder at gøre det på.

Det nemmeste er, hvis dit operativ-system
tillader dig at starte baggrunds-job med
et simpelt system kald (så de kører videre
når system kaldet returnerer).

Men ellers kan du måske starte et par threads
til at køre de 2 programmer.

Men det hele afhænger altså en del af platform
og evt. specielle krav.
Avatar billede trp79 Nybegynder
06. november 2002 - 23:31 #2
Hvis det er linux du bruger kan du starte et program i baggrunden ved at skrive "./programnavn &"
Hvis du tænker på at de to programmer skal startes på præcis samme tid, så kan det kun lade sig gøre hvis du har et multi-cpu-system.
Avatar billede mosquito Nybegynder
07. november 2002 - 07:45 #3
anvendelse af batch filer kan være en løsning.
Avatar billede jpk Nybegynder
07. november 2002 - 08:44 #4
Hvilket operativsystem skal de køre på?
Avatar billede henrik_p Nybegynder
07. november 2002 - 10:05 #5
det skal helst køre på en win98 og programmerne behøves ikke at starte præcist på samme tid
Avatar billede trp79 Nybegynder
07. november 2002 - 10:18 #6
Hvis det ene program bare kan starte når det andet er færdigt kan du fx. lave en kør.bat fil. Du kan blot starte notepad eller lignede og skrive

program1.exe
program2.exe

og gemme det som kør.bat
derefter er det muligt at starte de to programmer ved at eksekvere kør.bat
Avatar billede henrik_p Nybegynder
07. november 2002 - 10:41 #7
problemet er desværre at det ene program stadig skal køre mens det andet startes
Avatar billede jpk Nybegynder
07. november 2002 - 11:53 #8
#include <windows.h>
#include <stdio.h>
#include <string>
using std::string;

int Launch(char* strPrg)
{
  PROCESS_INFORMATION pInfo;
  STARTUPINFO        sInfo;

  sInfo.cb              = sizeof(STARTUPINFO);
  sInfo.lpReserved      = NULL;
  sInfo.lpReserved2    = NULL;
  sInfo.cbReserved2    = 0;
  sInfo.lpDesktop      = NULL;
  sInfo.lpTitle        = NULL;
  sInfo.dwFlags        = 0;
  sInfo.dwX            = 0;
  sInfo.dwY            = 0;
  sInfo.dwFillAttribute = 0;
  sInfo.wShowWindow    = SW_SHOW;

  if (!CreateProcess(NULL,
                strPrg,
                      NULL,
                      NULL,
                      FALSE,
                      0,
                      NULL,
                      NULL,
                      &sInfo,
                      &pInfo)) {
      printf("ERROR: Cannot launch child process\n");
      return 1;
  }

  return 0;
}

int main()
{
    Launch("program1.exe");
    Launch("program2.exe");

    return 0;
}
Avatar billede kamikaze Nybegynder
07. november 2002 - 12:15 #9
Følgende kompilerer i M$VC++, konsol applikation:

#include <windows.h>
#include <iostream.h>
#include <conio.h>

void RunProgram(char* pszAppName, char* pszParams)
{
    ShellExecute(NULL,
                "open",
                pszAppName,
                pszParams,
                NULL,
                SW_SHOW);
}

int main()
{
    RunProgram("winword.exe", NULL);
    RunProgram("notepad.exe", NULL);
    cout << "Press any key to terminate..." << endl;
    getch();
    return 0;
}
Avatar billede kamikaze Nybegynder
07. november 2002 - 12:18 #10
jpk >> Har læst at man generelt bør holde sig fra CreateProcess, da den vil udgå....Ved ikke om det har noget på sig, mener det var på MSDN jeg læste det. De foreslog at bruge spawnl eller ShellExecute.
Avatar billede jpk Nybegynder
07. november 2002 - 12:38 #11
kamikaze >> Det skal jeg ikke kunne sige, men der står, så vidt jeg kan se, ikke noget om det i beskrivelsen...

Kan ShellExecute håndtere at køre processer under andre brugere osv., altså det som CreateProcessAsUser og CreateProcessWithLogonW dækker over (jeg går udfra at hvis CreateProcess udgår, gør de også..?)?
Avatar billede henrik_p Nybegynder
07. november 2002 - 14:41 #12
tak kamikaze , det virker sku.
Avatar billede kamikaze Nybegynder
07. november 2002 - 16:10 #13
jpk << Det ved jeg ikke - har ikke prøvet. Men jeg er ikke stødt på noget i de beskrivelser jeg har læst.

henrik_p << tak for points :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester