Форум: "Основная";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];
ВнизКак узнать, открыт ли Excel? Найти похожие ветки
← →
}|{yk © (2005-02-28 17:11) [0]Собственно.
← →
}|{yk © (2005-02-28 17:18) [1]Можна например так
GetPidFromProcessName("EXCEL.EXE") <> $FFFF
но это как-то неправильно...
← →
MU (2005-02-28 17:21) [2]может,
function GetActiveOleObject(const ClassName: string): IDispatch;
← →
wild_arg © (2005-02-28 17:22) [3]
if MessageDlg("А не открыт ли у Вас Excel?", mtConfirmation, [mbYes,mbNo],0)=mrYes
then
//открыт
else
//не открыт
:) сорьки, не удержался...
← →
pasha_golub © (2005-02-28 17:25) [4]wild_arg © (28.02.05 17:22) [3]
LOL
MU (28.02.05 17:21) [2]
ИМХО, не пойдет. Ибо откроет новое и скажет, шо есть..
← →
Ольга (2005-02-28 17:27) [5]function GetActiveOleObject в отношении к EXCEL работает некорректно. Я и сама в этом убедилась, а потом нашла в книге "СОМ-технологии" подтверждение, авторы пишут "... по непонятным причинам"
← →
MU (2005-02-28 17:28) [6]2 pasha_golub ©
подойдет
← →
ArchValentin © (2005-02-28 18:10) [7]не гони, всё можно намутить гораздо проще, перебираешь все окошки
FindWindow
, и проверяешь если первые n букв в названии равны "MS Exel" то => он открыт иначе нихрена подобного.
← →
Ольга (2005-02-28 18:25) [8]А если смотреть в корень: зачем вам знать открыт ли Excel? Может нужно просто корректно закрывать "свои" Excel-и, а то можно закрыть открытый пользователем Excel, не имеющий никакого отношения к вашему приложению.
← →
aus (2005-02-28 18:30) [9]ArchValentin © (28.02.05 18:10) [7]
не гони, я ведь имею право свой хелловорлд назвать "MS Exel"
← →
Алхимик © (2005-02-28 18:40) [10]
> [3] wild_arg © (28.02.05 17:22)
> if MessageDlg("А не открыт ли у Вас Excel?", mtConfirmation,
> [mbYes,mbNo],0)=mrYes
> then
> //открыт
> else
> //не открыт
С точки зрения программиста, пользователь - это периферийное устройство,
вводящее набор символов в ответ на команду READ. :)
← →
GanibalLector © (2005-03-01 02:10) [11]Вариант№1(облегченный)
var Excels:Variant;
begin
try
try
Excels:=GetActiveOleObject("Excel.Application");
finally
//значит есть ;)
Excels:=Unassigned;
end;
except
MessageDlg("Нет его тут!",mterror,[MbOk],0);
end;
end;
← →
GanibalLector © (2005-03-01 02:16) [12]Вариант №2(с коннектом)
var Excels:Variant;
n:integer;
begin
try
try
Excels:=GetActiveOleObject("Excel.Application");
Caption:="Найдено документов:"+ IntToStr(Excels.WorkBooks.Count);
for n:=1 to Excels.WorkBooks.Count do
begin
if AnsiSameText("E:\Kharkov.xls",Excels.Workbooks[n].FullName) then
begin
// тут работаем
Excels.WorkBooks[1].WorkSheets[1].Name:="Привет из Харькова!";
//
end;
end;
finally
Excels:=Unassigned;
end;
except
MessageDlg("Excel не найден!",mterror,[MbOk],0);
end;
end;
← →
GanibalLector © (2005-03-01 02:22) [13]2 }|{yk ©
И еще,хотел поинтересоваться...
В статье http://www.delphimaster.ru/articles/frames/index.html Вы работаете с INI на мой взгяд не корректно.Ведь не всегда есть права на запись! Тут бы try ... except не помешали .
З.Ы.Пардон,если что...
← →
ArchValentin © (2005-03-01 03:41) [14]
> aus (28.02.05 18:30) [9]
...и сколько ты видел программ с заголовком "Microsoft Exel"? если не секрет. Вот мне только некая прога из какого-то Office"a попадалась :)))
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.036 c