|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - [решено] Как узнать, когда пользователь закроет документ? |
|
Delphi - [решено] Как узнать, когда пользователь закроет документ?
|
Новый участник Сообщения: 16 |
Профиль | Отправить PM | Цитировать Word:=CreateOleObject('Word.Application'); Word.Documents.Open(FileName:=GetTempDirectory+filename+'.tmp',ReadOnly:=true); Word.visible:=True; Doc:=Variant(Word).ActiveDocument; while doc=filename+'.tmp' do //не нравится мне это... но другого способа не нашел. try Doc:=Word.ActiveDocument; except Doc:=''; end; дальше мой код... |
|
Отправлено: 10:55, 01-11-2011 |
Новый участник Сообщения: 40
|
Профиль | Отправить PM | Цитировать Это неправильно: при переключении на другой документ получите бяку.
А вообще нормального способа определить, когда офис закрывает документ извне, не существует. Только когда открывается и редактируется СУЩЕСТВУЮЩИЙ файл, можно проверить его на доступность для записи. |
Отправлено: 11:07, 01-11-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать AlexVol, Бяку не получал. Файл открывается существующий, я (его предварительно копирую во временную папку). Как проверить его доступность для записи?
|
Отправлено: 12:01, 01-11-2011 | #3 |
Новый участник Сообщения: 40
|
Профиль | Отправить PM | Цитировать Попробовать открыть с правом записи в монопольном режиме. Если получается исключение - файл занят.
|
Отправлено: 13:57, 01-11-2011 | #4 |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать AlexVol, попробую, но мне кажется будет также грузить проц. Я ведь правильно понимаю, что это нужно сделать в цикле?
|
|
Отправлено: 14:04, 01-11-2011 | #5 |
В Поисках Истины Сообщения: 802
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 14:11, 01-11-2011 | #6 |
Пользователь Сообщения: 69
|
Профиль | Отправить PM | Цитировать есть нормальный способ:
unit Unit1; interface uses WordXP, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure WordApplicationDocumentBeforeClose(ASender: TObject; const Doc: _Document; var Cancel: WordBool); private { Private declarations } WordApplication1: TWordApplication; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin WordApplication1:=TWordApplication.Create(Self); WordApplication1.Visible:=True; WordApplication1.Documents.Add(EmptyParam, EmptyParam, EmptyParam, EmptyParam); WordApplication1.OnDocumentBeforeClose:=WordApplicationDocumentBeforeClose; end; procedure TForm1.FormDestroy(Sender: TObject); begin WordApplication1.Quit; WordApplication1.Free; end; procedure TForm1.WordApplicationDocumentBeforeClose(ASender: TObject; const Doc: _Document; var Cancel: WordBool); begin ShowMessage('WordApplicationDocumentBeforeClose'); end; end. |
Отправлено: 14:57, 01-11-2011 | #7 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] Как узнать - обладет ли текущий пользователь правами Админа? | NewOLDi | AutoIt | 3 | 28-05-2010 20:56 | |
Разное - узнать когда я дефрагментировал диск | AlexM | Microsoft Windows 2000/XP | 0 | 06-02-2010 09:25 | |
как узнать по каким папка лазил пользователь | vova_king | Хочу все знать | 1 | 09-03-2009 18:29 | |
Как узнать когда появиться та или иная прога в PORTS? | kaEwituS | Новости и флейм из мира *nix | 14 | 22-11-2006 19:32 | |
как узнать кто/чем/когда пользовался из (локальной)сети? | Guest | Microsoft Windows NT/2000/2003 | 7 | 06-11-2002 16:54 |
|