На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! user posted image
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.

Соблюдайте общие правила форума

Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как запустить программу/файл? (и дождаться ее завершения)
5. Как перехватить API-функции, поставить hook? (перехват сообщений от мыши, клавиатуры - внедрение в удаленное адресное прстранство)
... (продолжение следует) ...

Внимание:
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки - бан.
Мат в разделе - бан на три месяца...

Полезные ссылки:
user posted image MSDN Library user posted image FAQ раздела user posted image Поиск по разделу user posted image Как правильно задавать вопросы


Выразить свое отношение к модераторам раздела можно здесь: user posted image Rouse_, user posted image Krid

Модераторы: Rouse_, Krid
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> ShellExecuteEx + WaitForSingleObject , Windows 10
    Запускается Excel через ShellExecuteEx и ожидается его завершение через WaitForSingleObject.
    На настольнике с Windows 7 всё ок (причём, даже когда я запускаю просто "excel", а не с полным путём к файлу). А вот на ноуте с Windows 10 проблема: проге сообщается, что Excel закрывается сразу же, хотя по факту он ещё открыт. Пробовал вместо Excel запускать Notepad - всё ок (на 10-ке), а вот с Excel такой глюк.
    Почему так и как это исправить?
    ExpandedWrap disabled
      function RunCommand(const Command, Params: String; ShowType: Integer): THandle;
      var exInfo: TShellExecuteInfo;
      begin
        FillChar(exInfo, SizeOf(exInfo), 0);
        with exInfo do
        begin
          cbSize := SizeOf(exInfo);
          fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_DDEWAIT or SEE_MASK_FLAG_NO_UI;
          Wnd := 0;
          lpVerb := 'open';
          lpFile := PChar(Command);
          lpParameters := PChar(Params);
          nShow := ShowType;
        end;
        if ShellExecuteEx(@exInfo) then Result := exInfo.HProcess
        else Result := 0
      end; // RunCommand
      Судя по всему, Excel.exe запускает ещё один Excel.exe, а сам закрывается. Бред какой-то. Как же это отследить?

      Добавлено
      А вот у Word такой проблемы нет. По крайней мере, судя по start /w winword (с excel выходит сразу).

      Добавлено
      p.s. Office 2016.
        У меня на Win10 Pro (x64) всё нормально запускается (excel тоже x64). Delphi 10.1 Berlin.
        Может с самим excel'ем что-нить не так?
        Приаттачь свой exe'шник, попробую у себя его запустить.
          Krid, дело вообще даже не в Delphi. Попробуй запустить "start /w excel"
          Excel.exe: https://cloud.mail.ru/public/AbwZ/AJKtwV3U5
            скорее дело или в excel или настройках. у меня норм отрабатывает
            пс. консоль держит пока запущеный excel
            user posted image

            Добавлено
            Цитата Jin X @

            ты exe самого excel-а приаталчил? зачем? я предполагаю что Krid имел ввиду exe своей программы, а не самого екселя (но может я не прав :D )
              Ok
              Прикреплённый файлПрикреплённый файлRunExcel.zip (22,96 Кбайт, скачиваний: 194)

              Добавлено
              ViktorXP, у тебя 2016-й? Десятка?
                Цитата Jin X @
                Krid, дело вообще даже не в Delphi. Попробуй запустить "start /w excel"
                Excel.exe: https://cloud.mail.ru/public/AbwZ/AJKtwV3U5

                И "start" работает, и твоё приложение.
                WinXP SP3, Win7.
                  Цитата Jin X @
                  ViktorXP, у тебя 2016-й? Десятка?

                  2013 и десятка

                  Добавлено
                  Jin X, приложение работает нормально. запуск - сообщение с пидом. после закрытия екселя - сообщение "done!"
                    У меня тоже всё работает (и твоя прога и "start /w excel") . Может попробуешь под правами админа запустить?
                      Цитата Jin X @
                      Судя по всему, Excel.exe запускает ещё один Excel.exe

                      Вот это вообще как-то загадочно. Учитывая, что
                      Цитата Jin X @
                      даже когда я запускаю просто "excel", а не с полным путём к файлу

                      Может у тебя какой-нить шаблон в excel'е прописан, или надстройка? В принципе, шаблоны и надстройки могут содержать в себе макросы, которые могут и чудить (например так, как ты написал).

                      Попробуй запусти excel с ключом "/s" или "/safemode" (без кавычек).
                        Цитата ЫукпШ @
                        WinXP SP3, Win7.
                        Цитата ЫукпШ @
                        2013 и десятка
                        Проблема именно на Win10 и 2016 (другие версии не пробовал).

                        Цитата Krid @
                        Попробуй запусти excel с ключом "/s" или "/safemode" (без кавычек).
                        А вот так нормально работает... Хм... И что делать теперь?

                        Добавлено
                        Единственная надстройка, которая была – Mindjet MindManager, но её отключение не помогло...
                        Шаблон стандартный. В нём макросов нет. Также пробовал использовать другой шаблон, который используется в Win7 - та же история.
                          посмотри через ProcessExplorer параметры запуска своей программы
                          http://prnt.sc/c93y4r

                          Еще как вариант (если не в моготу, но очень нужно отслеживать закрытия программ) то можно завязатся на джобы. они конечно их сломали в Win8. поченили ли их уже не знаю (но я так и не заставил их работать в восьмерке. хотя прекрасно работали в Win7 и ниже)
                          Если ты создашь процесс и поместишь его в джобу то все дочерние процессы тоже будут в этой джобе. при этом можно мониторить процессы в джобе.


                          Добавлено
                          и да. включи манифест в свою программу. если работало в win7 ты можешь сказать через манифест что тебе нужно совместимое поведение с win7

                          Добавлено
                          пс. манифест это одна из тех вещей которая должна быть всегда. даже если она тебе не нужна пусть будет с дефолтными значениями.
                          Сообщение отредактировано: ViktorXP -
                            Цитата Jin X @
                            Цитата Krid @
                            Попробуй запусти excel с ключом "/s" или "/safemode" (без кавычек).
                            А вот так нормально работает... Хм... И что делать теперь?

                            Возможно, какая-то несовместимая надстройка (add-in) автоматически подключается при старте. См. рекомендации MS по устранению проблемы

                            Добавлено
                            PS: Еще возможные причины "неполадок, возникающих при загрузке Excel"
                            Сообщение отредактировано: leo -
                              Странно. Сейчас нормально стало всё работать. Надо перезагрузить комп, попробовать ещё...

                              Добавлено
                              Перезагрузился, всё ок. Видимо, какой-то временный глюк был... Хм...
                              Спасибо всем, тревога ложной оказалась... :wall:
                                Ну а с траблой-то разобрался?

                                Просто интересно, в чём дело было :)
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0496 ]   [ 19 queries used ]   [ Generated: 28.03.24, 16:05 GMT ]