Показать сообщение отдельно
Старый 25.08.2005, 14:43   #5  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2494 (89) +++++++++
Регистрация: 20.08.2005
Фунция ShellExecute запускает не сам файл на исполнение, а лишь передает Windows Shell команду на его запуск. При этом она возвращается после передачи управления в функцию WinMain процесса. А загрузка файла в программу происходит намного позже этого момента. Так что вы успеваете его удалить задолго до этого.

Запустить ShellExecute в синхронном режиме нельзя, так как она не возвращает Handle запущенного процесса. Для этого можно использовать либо ShellExecuteEx, либо CreateProcess, а дальше ч-з WaitForSingleObject с параметром INFINITE ждать завершения процесса и только после этого удалять файл. Но при этом, если не запускать обработку в отдельном Thread'е, то Axapta у вас не будет отвечать на запросы пока не закроете это приложение. Можно повесить это дело на таймер и проверять с немедленным возвратом из функции WaitForSingleObject с определенной периодичностью и только после закрытия процесса удалять файл.

Ну а в общем зачем такие сложности, если проще показать картинку в Axapte?