запуск внешней прогаммы

Тема в разделе "LANGS.C", создана пользователем tnirof, 24 апр 2011.

  1. tnirof

    tnirof New Member

    Публикаций:
    0
    Регистрация:
    17 май 2006
    Сообщения:
    23
    Адрес:
    Russia
    Добрый день.
    Не сочтите за глупый вопрос, но сталкнулся с такой проблемой при написании программы:

    Код (Text):
    1. #include <iostream>
    2. #include <fstream>
    3. #include "windows.h"
    4.  
    5. using namespace std;
    6.  
    7. int main () {
    8.   ofstream myfile;
    9.   myfile.open ("test.vbs");
    10.   myfile << "End if\n";
    11.   myfile.close();
    12.   return 0;
    13.   return 0;
    14. }
    15.  
    16. int __stdcall WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
    17. {
    18.     WinExec("C:\\Dev-Cpp\\test.vbs", SW_SHOWNORMAL);
    19.     return 0;
    20. }
    проблема собственно в том что я не могу ни как запустить Vbs, после его создания.
    так же если можно подскажите как при создании Vbs закинуть его в %windir%
    к сожалению в нашей компании не у всех компов "винда" стоит на диске "С",
    и если есть такая возможность, то как его потом от туда запустить ?

    заранее скажу , что долго искал описание как :
    WinExec
    ShellExecute
    System
    но все упиралось в то что vbs не запускался.

    заранее спасибо.
     
  2. JET

    JET New Member

    Публикаций:
    0
    Регистрация:
    25 авг 2010
    Сообщения:
    4
    Можно сделать так:
    Код (Text):
    1. #include <iostream>
    2. #include <fstream>
    3. #include <string>
    4. #include <windows.h>
    5.  
    6. std::string getWinDir();
    7.  
    8. int main( int argc, char *argv[] ) {
    9.     std::string pathToVbs = getWinDir() + "\\myvbs.vbs";
    10.     std::ofstream outFile( pathToVbs.c_str(), std::ios::out );
    11.  
    12.     if( !outFile ) {
    13.         std::cerr << "Cannot open file!\n";
    14.         return 1;
    15.     }
    16.  
    17.     outFile << "End if\n";
    18.  
    19.     outFile.close();
    20.  
    21.     system( pathToVbs.c_str()  );
    22.  
    23.     return 0;
    24. }
    25.  
    26. std::string getWinDir() {
    27.     char *temp = new char[ MAX_PATH + 1 ];
    28.     std::string windir;
    29.     GetWindowsDirectoryA( temp, MAX_PATH + 1 );
    30.     windir = temp;
    31.  
    32.     return windir;
    33. }
     
  3. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    ShellExecute надо вместо WinExec