Отвечено WinApi запуск приложения из программы

  • 2 августа 2011 г. 5:36
     
     

    Моя задача сделать так, чтобы из моего приложения запускался Word и его окно располагалось бы в правой части экрана.

     Я пишу так

      AnsiString s = "C:\\Program Files\\Microsoft Office\\Office12\\WINWORD;
    ::ShellExecute(0, NULL, s.c_str(), NULL, NULL, SW_RESTORE);
    if(GetLastError == 0) {
    HWND h = GetNextWindow(h, GW_HWNDNEXT);
    SetWindowPos(h, 0, 500, 10, 300, 800, SWP_SHOWWINDOW);
    }

    но Word запускается на весь экран

Все ответы

  • 2 августа 2011 г. 7:44
     
     Предложенный ответ

    Т.е. Word запускает в максимизированном состоянии? Попробуйте поиграться с флагом запуска в ShellExecute. Попробуйте SW_SHOWNORMAL или SW_SHOWDEFAULT.


    Для связи [mail]
  • 4 августа 2011 г. 9:52
     
     Отвечено С кодом

    Пробовал) Вообщем, получилось запустить окно приложения на половину экрана, только не получилось это сделать с вордом. Adobe Acrobat, блокнот - открываются так как задано флагом в ShellExecute. А ворд игнорирует флаг и запускается на весь экран

    вот код

    HWND H=Handle;
        ShellExecute(Handle, NULL, "t4.doc", NULL, NULL, SW_HIDE);
        Sleep(1500);
        char Pch[128];
        int i=0;
        do
        {
            H = GetNextWindow(H,GW_HWNDPREV);
            GetWindowText(H,Pch,128);
            if(AnsiString(Pch).Pos("t4"))
                break;
        } while(H);
        if(H)
        SetWindowPos(H, 0, 600, 10, 400, 800, SWP_SHOWWINDOW);

    тему можно закрывать