Убить насмерть Excel процесс

Здравствуйте
Программно создаю (точнее заполняю готовую форму файла Excel) товарную накладную.
Методика: в папке с формами хранится Excel шаблон, программа копирует его в tmp-папку с tmp-именем, открывает эту копию и заполняет. Причем Excel становится видимым
[code]m.loExcel.Visible= .T.[/code]
только в самом конце процесса заполнения.
Если вдруг во время этого процесса что-то произошло (не корректные данные и пр.), то программа "вылетает". а Excel-процесс с tmp-именем остаётся "висеть" невидимым и при следующей попытке копирования шаблона в tmp-папку с tmp-именем возникает ошибка. Программа выводит соответствующее сообщение.
Изначально делалось для себя, я открывал Диспетчер и убивал процесс.
Но теперь пользуются другие и начинают орать "все пропало!"
Естественно методика не выдерживает критики, но самое простое решение - убить этот скрытый процесс и, ничего не сообщая, создать новый.
Поэтому:
1. Я легко получаю HWND этого окна
2. Легко его могу сделать видимым (но Юзеру придется превозмогая страх и непонимание его закрыть не сохраняя)
3. Легко могу послать [code]sendmessage(lhwnd,WM_CLOSE,0,0)[/code] - опять паника, потому что появляется Сохранить Да Нет в корявом (или вообще невидимом файле)
4. Никак не могу убить этот процесс по HWND
Пытаюсь делать так:
[code]LPARAMETERS lhwnd
DECLARE integer TerminateProcess IN WIN32API integer, integer
DECLARE integer OpenProcess IN WIN32API integer, integer, integer
DECLARE integer CloseHandle IN WIN32API integer
DECLARE integer GetWindowThreadProcessId IN WIN32API integer, integer @
LOCAL hProcess, pid
GetWindowThreadProcessId(lhwnd, @PID);
hProcess=OpenProcess(1,1,pid)
TerminateProcess(hProcess,0)
CloseHandle(hProcess)
[/code]
и получаю ошибку "Syntax error" в строке GetWindowThreadProcessId(lhwnd, @PID);
???

0

Автор публикации

Пользователи не найдены
Оставить комментарий
Авторизация
*
*
Генерация пароля