Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.07;
Скачать: CL | DM;

Вниз

Есть ли у процесса окно?   Найти похожие ветки 

 
Andriy   (2003-07-23 12:41) [0]

Так как отличить процесс, у которого есть окно, от процесса, у котрого его нет? Напр. Ексель.


 
Виктор Щербаков ©   (2003-07-23 12:53) [1]

EnumWindows
GetWindowThreadProcessId


 
Digitman ©   (2003-07-23 13:06) [2]


> Напр. Ексель


С каких это пор Excel перестал быть GUI-приложением и с тех пор, якобы, не имеет окна ?


 
Игорь Шевченко ©   (2003-07-23 13:27) [3]

А никак!


 
Andriy   (2003-07-23 16:06) [4]

Что означает "никак"?
For Digitman:
Я запускаю Ексел (CreateOleObject(...)), потом работаю с ним через вариант
средствами VisualBasic. Выхожу из него(XL.Quit; XL.Close;), а он с процесов
не снимается. Прикол или прокол?


 
clickmaker ©   (2003-07-23 17:06) [5]

А XL.Disconnect сделать ?


 
nikkie ©   (2003-07-23 17:17) [6]

XL := nil;


 
Игорь Шевченко ©   (2003-07-23 17:18) [7]

Andriy (23.07.03 16:06)

Никак означает никак. И больше ничего.


 
Andriy   (2003-07-23 18:41) [8]

Неужели всё так плохо и нет выхода?


 
clickmaker ©   (2003-07-23 19:11) [9]

XL := CreateOleObject(
try
...
finally
XL.Quit;
XL.Disconnect;
XL := nil;
end;

прекрасно работает, все открывает и закрывает


 
Song ©   (2003-07-23 20:23) [10]

Удалено модератором
Примечание: Offtopic


 
Andriy   (2003-07-24 10:55) [11]

Спасибо! Попробую.
Честно говоря, что-то похожее пробовал, только без
"XL := nil;".
А разве можно варианту присвоить nil?! У меня матерится на это.
Только что попробовал этот кусок. На "XL.Disconnect;" тоже матерится.
Может потому-что у меня XP Office?
Переменная XL у меня типа вариант!
Помогите снять висячий Ексель!


 
clickmaker ©   (2003-07-24 10:59) [12]

Варианту можно присвоить Null или Unassigned. Эффект тот же


 
Игорь Шевченко ©   (2003-07-24 11:02) [13]

XL := NULL


 
Andriy   (2003-07-24 14:12) [14]

Та делал я это ещё раньше - не помогает!


 
Игорь Шевченко ©   (2003-07-24 15:13) [15]

А XL.Quit тоже делал ?

<moderator>
И вообще, какое отношение имеет выяснение способа завершения работы с Excel к форуму WinApi ?
</moderator>


 
nikkie ©   (2003-07-24 15:21) [16]

>Andriy
У тебя остаются ссылки на объекты Excel, которые не освобождены. Надо освобождать.

Приведи (желательно минимальный) код, который приводит к тому, что Excel остается в памяти.


 
Digitman ©   (2003-07-24 15:27) [17]


> Andriy (23.07.03 16:06)
> Что означает "никак"?
> For Digitman:
> Я запускаю Ексел (CreateOleObject(...)), потом работаю с
> ним через вариант
> средствами VisualBasic. Выхожу из него(XL.Quit; XL.Close;),
> а он с процесов
> не снимается. Прикол или прокол?


К окнам-то, которые Excel открывает или не открывает, которые видны или не видны при работе с Excel как с сервером автоматизациии, это все какое отношение имеет ?


 
Andriy   (2003-07-24 15:49) [18]

>И вообще, какое отношение имеет выяснение способа завершения работы с Excel к форуму WinApi ?

Я же с начала писал, что хочу снять процесс, у которого нет окна.
Это потому, что Ексель Остаётбся в процессах. А если вслепую все Ексели снимать, то открытые пользователем тоже вырубаются. А зачем?

>Nikkie
Вот укороченый код. Спасибо за понимание! Все бы такими были хорошими!

procedure LoadFromExcel(MD: TdxMemData);
var XL: Variant;
Nom, I, Code: Integer;
begin
XL:=Unassigned;
Nom:=1;

if VarIsEmpty(XL) then try
XL:=CreateOleObject("Excel.Application");
XL.WorkBooks.Open(ExtractFileDir(Application.ExeName) +PathDelim+XLS_DIR+PathDelim+FILENAME);

Val(XL.WorkSheets[WORKSHEET].Range[ID+IntToStr(Nom)], I, Code);
while Code=0 do
begin
with MD do
begin
//
FieldByName("ID").AsInteger:=I;

Inc(Nom);
Val(XL.WorkSheets[WORKSHEET].Range[ID+IntToStr(Nom)], I, Code);
end;
finally
XL.WorkBooks.Close;
XL.Quit;
XL:=NULL;
XL:=Unassigned;
end;
end;


 
nikkie ©   (2003-07-24 16:26) [19]

>Все бы такими были хорошими!
А если бы все публиковали код, который по крайней мере компилялся бы, то я бы знаешь какой добрый был? Уууу...

У меня этот код excel97 в процессах не оставляет.


 
dick ©   (2003-07-24 16:43) [20]

Сделай Excel видимым и посмотри, что там происходит.
Может он у тебя подтверждение на сохранение просит.



Страницы: 1 вся ветка

Текущий архив: 2003.08.07;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.018 c
7-20830
Insider
2003-05-25 08:37
2003.08.07
Свой пункт в меню в таскбаре.


1-20512
Alex_***
2003-07-25 13:27
2003.08.07
Проблема с COM events


14-20694
vidiv
2003-07-23 12:09
2003.08.07
Предложение для Админов форума.


6-20642
Ghost_
2003-05-30 17:50
2003.08.07
SCM connect


1-20471
KA_
2003-07-24 19:37
2003.08.07
RichEdit и Replace