Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.17.74.153] |
|
Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Запускается Excel через ShellExecuteEx и ожидается его завершение через WaitForSingleObject.
На настольнике с Windows 7 всё ок (причём, даже когда я запускаю просто "excel", а не с полным путём к файлу). А вот на ноуте с Windows 10 проблема: проге сообщается, что Excel закрывается сразу же, хотя по факту он ещё открыт. Пробовал вместо Excel запускать Notepad - всё ок (на 10-ке), а вот с Excel такой глюк. Почему так и как это исправить? 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 |
Сообщ.
#2
,
|
|
|
Судя по всему, Excel.exe запускает ещё один Excel.exe, а сам закрывается. Бред какой-то. Как же это отследить?
Добавлено А вот у Word такой проблемы нет. По крайней мере, судя по start /w winword (с excel выходит сразу). Добавлено p.s. Office 2016. |
Сообщ.
#3
,
|
|
|
У меня на Win10 Pro (x64) всё нормально запускается (excel тоже x64). Delphi 10.1 Berlin.
Может с самим excel'ем что-нить не так? Приаттачь свой exe'шник, попробую у себя его запустить. |
Сообщ.
#4
,
|
|
|
Krid, дело вообще даже не в Delphi. Попробуй запустить "start /w excel"
Excel.exe: https://cloud.mail.ru/public/AbwZ/AJKtwV3U5 |
Сообщ.
#5
,
|
|
|
скорее дело или в excel или настройках. у меня норм отрабатывает
пс. консоль держит пока запущеный excel Добавлено ты exe самого excel-а приаталчил? зачем? я предполагаю что Krid имел ввиду exe своей программы, а не самого екселя (но может я не прав ) |
Сообщ.
#6
,
|
|
|
Ok
Прикреплённый файлRunExcel.zip (22,96 Кбайт, скачиваний: 194) Добавлено ViktorXP, у тебя 2016-й? Десятка? |
Сообщ.
#7
,
|
|
|
Цитата Jin X @ Krid, дело вообще даже не в Delphi. Попробуй запустить "start /w excel" Excel.exe: https://cloud.mail.ru/public/AbwZ/AJKtwV3U5 И "start" работает, и твоё приложение. WinXP SP3, Win7. |
Сообщ.
#8
,
|
|
|
Цитата Jin X @ ViktorXP, у тебя 2016-й? Десятка? 2013 и десятка Добавлено Jin X, приложение работает нормально. запуск - сообщение с пидом. после закрытия екселя - сообщение "done!" |
Сообщ.
#9
,
|
|
|
У меня тоже всё работает (и твоя прога и "start /w excel") . Может попробуешь под правами админа запустить?
|
Сообщ.
#10
,
|
|
|
Цитата Jin X @ Судя по всему, Excel.exe запускает ещё один Excel.exe Вот это вообще как-то загадочно. Учитывая, что Цитата Jin X @ даже когда я запускаю просто "excel", а не с полным путём к файлу Может у тебя какой-нить шаблон в excel'е прописан, или надстройка? В принципе, шаблоны и надстройки могут содержать в себе макросы, которые могут и чудить (например так, как ты написал). Попробуй запусти excel с ключом "/s" или "/safemode" (без кавычек). |
Сообщ.
#11
,
|
|
|
Цитата ЫукпШ @ WinXP SP3, Win7. Цитата ЫукпШ @ Проблема именно на Win10 и 2016 (другие версии не пробовал).2013 и десятка Цитата Krid @ А вот так нормально работает... Хм... И что делать теперь? Попробуй запусти excel с ключом "/s" или "/safemode" (без кавычек). Добавлено Единственная надстройка, которая была – Mindjet MindManager, но её отключение не помогло... Шаблон стандартный. В нём макросов нет. Также пробовал использовать другой шаблон, который используется в Win7 - та же история. |
Сообщ.
#12
,
|
|
|
посмотри через ProcessExplorer параметры запуска своей программы
http://prnt.sc/c93y4r Еще как вариант (если не в моготу, но очень нужно отслеживать закрытия программ) то можно завязатся на джобы. они конечно их сломали в Win8. поченили ли их уже не знаю (но я так и не заставил их работать в восьмерке. хотя прекрасно работали в Win7 и ниже) Если ты создашь процесс и поместишь его в джобу то все дочерние процессы тоже будут в этой джобе. при этом можно мониторить процессы в джобе. Добавлено и да. включи манифест в свою программу. если работало в win7 ты можешь сказать через манифест что тебе нужно совместимое поведение с win7 Добавлено пс. манифест это одна из тех вещей которая должна быть всегда. даже если она тебе не нужна пусть будет с дефолтными значениями. |
Сообщ.
#13
,
|
|
|
Цитата Jin X @ Цитата Krid @ А вот так нормально работает... Хм... И что делать теперь? Попробуй запусти excel с ключом "/s" или "/safemode" (без кавычек). Возможно, какая-то несовместимая надстройка (add-in) автоматически подключается при старте. См. рекомендации MS по устранению проблемы Добавлено PS: Еще возможные причины "неполадок, возникающих при загрузке Excel" |
Сообщ.
#14
,
|
|
|
Странно. Сейчас нормально стало всё работать. Надо перезагрузить комп, попробовать ещё...
Добавлено Перезагрузился, всё ок. Видимо, какой-то временный глюк был... Хм... Спасибо всем, тревога ложной оказалась... |
Сообщ.
#15
,
|
|
|
Ну а с траблой-то разобрался?
Просто интересно, в чём дело было |