Как переименовать созданный процесс WINWORD.EXE?

Тема в разделе "WASM.WIN32", создана пользователем WishMaster, 27 июл 2008.

  1. WishMaster

    WishMaster New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    54
    Адрес:
    Ukraine
    Из своей программы (C++ Builder 6) с помощью компонента TWordApplication создаю новый экземпляр MS Word:

    Код (Text):
    1. WordApplication1->ConnectKind = ckNewInstance;
    2. WordApplication1->Connect();
    3. WordApplication1->set_Visible(1);
    Мне нужно, чтобы пользователь мог работать с созданным мною экземпляром Word – создавать новые документы, открывать уже существующие и т.д. НО если пользователь выберет Пуск-Программы-Microsoft Office Word или же дважды клацнет на каком-либо документе, то новый документ или же открываемый документ должны создаваться не в моем экземпляре Word, а в новом экземпляре. Т.е. я хочу, чтобы документы в созданном мной экземпляре могли создаваться либо программно, либо же через нажатие на кнопки или пункты меню в ЭТОМ экземпляре Word. Чтобы других способов появления документов в созданном мною Word'е не было.

    На сколько я понимаю, при запуске Word из Пуска или при клацаньи на документе Word идет проверка, запущен ли уже процесс WINWORD.EXE и если запущен, то новый процесс не создается, а документ открывается в запущенном процессе. Исходя из этого, я предполагаю, что если каким-либо образом переименовать созданный мною процесс, то он не будет распознаваться системой и для новых документов будет создан новый экземпляр Word. Надеюсь, конечно, что переименование не помешает нормальной работе моего Word.

    Как вы думаете, на сколько реально то, что я здесь написал и как можно переименовать процесс (сделать его неузнаваемым как WINWORD.EXE для системы)?
     
  2. z0mailbox

    z0mailbox z0

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    635
    Адрес:
    Russia СПБ
    вполне возможно

    очень сомневаюсь
    скорее идет FindWindow с именем класса или мутекс, ваще много способов
     
  3. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Скорее там мьютексы и другие объекты межпроцессного взаимодействия, чем сравнение по имени.
     
  4. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    Еще вероятнее - регистрируется как COM-сервер с помощью CoRegisterClassObject и с контекстом CLSCTX_LOCAL_SERVER.
    Впрочем, как сама подсиситема COM потом находит этот процесс, так сразу не скажу.. Может, по тем же мьютексам и окнам.