Avatar billede larsaasted Nybegynder
21. juni 2002 - 15:01 Der er 7 kommentarer

Hvordan køre man en exe fil i c++ Builder??

Hvordan køre man en .exe fil fra en form man har lavet i c++ Builder
Avatar billede thomashove Nybegynder
21. juni 2002 - 15:24 #1
man kunne kalde funktionen CreateProcess der er defineret således

BOOL CreateProcess(

    LPCTSTR lpApplicationName,    // pointer to name of executable module
    LPTSTR lpCommandLine,    // pointer to command line string
    LPSECURITY_ATTRIBUTES lpProcessAttributes,    // pointer to process security attributes
    LPSECURITY_ATTRIBUTES lpThreadAttributes,    // pointer to thread security attributes
    BOOL bInheritHandles,    // handle inheritance flag
    DWORD dwCreationFlags,    // creation flags
    LPVOID lpEnvironment,    // pointer to new environment block
    LPCTSTR lpCurrentDirectory,    // pointer to current directory name
    LPSTARTUPINFO lpStartupInfo,    // pointer to STARTUPINFO
    LPPROCESS_INFORMATION lpProcessInformation     // pointer to PROCESS_INFORMATION 
  );
Avatar billede thomashove Nybegynder
21. juni 2002 - 15:27 #2
f.eks.

void __fastcall TForm1::Executebat(AnsiString file)
{
STARTUPINFO StartupInfo;
  bool Result;

  memset(&StartupInfo, 0, sizeof(STARTUPINFO));
  StartupInfo.cb = sizeof(STARTUPINFO);


  Result = CreateProcess
          (
            "C:\\cert\\start.bat",    // pointer to name of executable module
            NULL,                            // pointer to command line string
            NULL,                            // pointer to process security attributes
            NULL,                            // pointer to thread security attributes
            false,                            // handle inheritance flag
            0,                                // creation flags
            NULL,                            // pointer to new environment block
            "C:\\cert\\",                        // pointer to current directory name
            &StartupInfo,                        // pointer to STARTUPINFO
            &ProcessInformation                 // pointer to PROCESS_INFORMATION
          );

  if (!Result)
  {
    Memo1->Lines->Add("Create Process failed. Errorcode: "+IntToStr(GetLastError()));
  }else
  {
    Memo1->Lines->Add("Create Process OK");
  }
}
Avatar billede thomashove Nybegynder
21. juni 2002 - 15:29 #3
ovenstående eksempel kører start.bat og skriver ud i et memofelt om det gik godt
Avatar billede larsaasted Nybegynder
21. juni 2002 - 15:30 #4
Har selv fundet en meget lettere løsning.......sorry

ShellExecute(NULL, NULL, "NyBruger.bat", NULL, NULL, SW_SHOW);
Avatar billede thomashove Nybegynder
21. juni 2002 - 15:33 #5
ok
Avatar billede soepro Nybegynder
24. juni 2002 - 08:54 #6
metoden spawn.. er cross-platform, og giver dig en ekstra mulighed - nemlig at programmet venter mens child-processen kører:

spawnlp(P_WAIT, "NyBruger.bat", "NyBruger.bat", /*INGEN PARMS*/ NULL);

Hvis du ikke vil vente, skal du bare udskifte P_WAIT med P_NOWAIT.
Avatar billede soepro Nybegynder
20. januar 2003 - 08:13 #7
Så luk sagen !
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