Kdaj Word zapre datoteko

Odpiranje, tiskanje, pisanje v datoteke in drugo.
Odgovori
TonyCaker
Prispevkov: 312
Pridružen: 27.09.2003 18:33:35

Kdaj Word zapre datoteko

Odgovor Napisal/-a TonyCaker » 06.06.2006 13:59:38

S ShellExecute odpiram razne datoteke, predvsem Word in Excel.

Moje vprasanje: kako bi v programu vedel, kdaj uporabnik v Wordu zapre datoteko (word seveda lahko ostane odprt).

Razmisljam v smeri cakanja, da jo odklene. Pri odpiranju jo nekako zaklene, saj npr. pri poskusu socasnega odpiranja z Wordpadom dobim sporocilo "...in use by another application and cannot be accessed".

LP
A s ti tut not padu ?

Lenny
Prispevkov: 500
Pridružen: 18.12.2003 09:55:16

Kdaj Word zapre datoteko

Odgovor Napisal/-a Lenny » 06.06.2006 15:08:42


Savage
Prispevkov: 266
Pridružen: 04.01.2004 00:57:40

Kdaj Word zapre datoteko

Odgovor Napisal/-a Savage » 06.06.2006 15:50:05

Hm, mogoče z EnumChildWindows,
ki ga preverjaš na časovnem intervalu.

Silver_War
Prispevkov: 664
Pridružen: 01.06.2004 14:50:41

Kdaj Word zapre datoteko

Odgovor Napisal/-a Silver_War » 06.06.2006 17:37:06

@Savage tvoj odgovor ni najboljši, saj lahko uporabnik tisto datoteko shrani pod drugo ime in bo s tem odklenil prejšnjo datoteko, zaklenjena pa bo bila tista druga.

TonyCaker
Prispevkov: 312
Pridružen: 27.09.2003 18:33:35

Kdaj Word zapre datoteko

Odgovor Napisal/-a TonyCaker » 06.06.2006 18:13:23

Ce se malo pojasnim:

1. V BLOB (Firebird) imam npr. doc dokument, ki ga s SaveToFile zapisem na disk in odprem preko ShellExecute.
2. V aplikaciji nato cakam (non-modal)...
3. Ob zapiranju aplikacije ali podobnem postopku moram na hitro ugotoviti, ali je bila datoteka spremenjena. Ce je bila, jo moram naloadati nazaj v bazo.

Odlocil sem se za mesano varianto:
1. ob zapisu pogledam Timestamp datoteke
2. vsake toliko casa pogledam timestamp in ce se razlikuje, se jaz shranim datoteko
3. ob zapiranju okna preko Enum... preverim (Savage), ce je ustrezno Word okno aktivno. Ce je, ga aktiviram in prepustim uporabniku, da naj shrani ali pa ne...

Zaenkrat stvar funkcionira, ampak se mi zdi strikanje. Bolj vsec mi je OLE Automation, kot je predlagal Lenny in bom sel v to smer cez vikend (ce ne bo prevec lepo vreme).

Thx in LP
A s ti tut not padu ?

aoven
Prispevkov: 2338
Pridružen: 27.06.2001 23:56:07

Kdaj Word zapre datoteko

Odgovor Napisal/-a aoven » 07.06.2006 11:33:58

Ah, pa saj si imel odgovor ves čas na dlani... Tvoj citat:
pri poskusu socasnega odpiranja z Wordpadom dobim sporocilo "...in use by another application and cannot be accessed".
Torej naredi isto, kot Wordpad! Pokliči CreateFile s flagom OPEN_EXISTING, ali pa uporabi TFileStream.Create('document1.doc', fmOpenRead or fmShareExclusive), kar je bolj "delphijevsko".
Če stvar crkne (v prvem primeru poglej return value + GetLastError, v drugem dobiš pa exception), potem je datoteka zaklenjena, sicer ni.

Aleksander

Lenny
Prispevkov: 500
Pridružen: 18.12.2003 09:55:16

Kdaj Word zapre datoteko

Odgovor Napisal/-a Lenny » 07.06.2006 12:26:40

V demosu
C:\Program Files\Borland\Delphi6\Demos\ActiveX\OleAuto\Word8
je lepo rešen OLE. Mogoče nastane problem pri različnih verzijah worda.

LP

Savage
Prispevkov: 266
Pridružen: 04.01.2004 00:57:40

Kdaj Word zapre datoteko

Odgovor Napisal/-a Savage » 08.06.2006 09:05:58

Slučajno sm naletu na tale link. Poglej če ti kej koristi. ;)

Odgovori