03. marts 2004 - 14:37
Der er
2 kommentarer og
1 løsning
Word dokumenter i WebBrowser ( Åbn / Gem )
Jeg har behov for at få vist et preview af forskelligt typer dokumenter, f.eks doc, pdf, jpg
Det gør jeg ved hjælp af en TWebBrowser:
f.eks
WebBrowser2.Navigate( 'C:\findit.doc' ) ;
Men når jeg vælger et *.doc, bliver jeg spurgt om jeg vil åbne / gemme filen, som når man downloader en fil.
Hvordan undgår jeg at få det spørgsmål, uden at slå det fra i Windows
10. marts 2004 - 00:55
#2
Kom til at tænke på at det måske er farligt at åbne doc-filerne ukritisk. Der er jo noget kaldet VBA og det hænder jo at halvdårlige (teenage) programmører kopierer en script-virus på nettet, retter den til og kalder den for deres egen.
Antager det kan være risikabelt.
10. marts 2004 - 08:12
#3
Jeg har selv fundet en løsning
Åben / Gem dialogboksen kan slåes fra, med et lille flueben. Jeg fandt så et program der kunne se ændringer i registreringsdatabasen, og fandt ud af hvad der blev ændret. Så gemmer jeg den originale værdi, og ændre den, og når jeg lukker programmet, så lægger jeg den originale værdi derned igen .... Og det virker :-)
Koden ser således ud:
procedure TForm1.RemoveOpenSaveDialog ;
var
Registry: TRegistry;
EditFlag, BufferSize, BytesWritten : Integer ;
begin
Registry := TRegistry.Create(KEY_READ);
try
Registry.Access := KEY_ALL_ACCESS ;
Registry.RootKey := HKEY_LOCAL_MACHINE;
// False because we do not want to create it if it doesn't exist
// Slå Open/ Save dialogen fra i word
CheckBox1.Checked := Registry.OpenKey('SOFTWARE\Classes\Word.Document.8\', False);
Registry.ReadBinaryData('EditFlags', OriginalWordEditFlagValue, BufferSize);
EditFlag := 65536 ;
BufferSize := 4 ;
Registry.WriteBinaryData('EditFlags', EditFlag, BufferSize );
Registry.CloseKey ;
// Slå Open/ Save dialogen fra i Excel
Registry.Access := KEY_ALL_ACCESS ;
Registry.RootKey := HKEY_LOCAL_MACHINE;
CheckBox2.Checked := Registry.OpenKey('SOFTWARE\Classes\Excel.Sheet.8\', False);
Registry.ReadBinaryData('EditFlags', OriginalExcelEditFlagValue, BufferSize);
EditFlag := 65536 ;
BufferSize := 4 ;
Registry.WriteBinaryData('EditFlags', EditFlag, BufferSize );
Registry.CloseKey ;
finally
Registry.Free;
end;
end;
procedure TForm1.RestoreOpenSaveDialog ;
var
Registry: TRegistry;
EditFlag, BufferSize, BytesWritten : Integer ;
begin
Registry := TRegistry.Create(KEY_READ);
try
Registry.Access := KEY_ALL_ACCESS ;
Registry.RootKey := HKEY_LOCAL_MACHINE;
// False because we do not want to create it if it doesn't exist
Registry.OpenKey('SOFTWARE\Classes\Word.Document.8\', False);
BufferSize := 4 ;
Registry.WriteBinaryData('EditFlags', OriginalWordEditFlagValue, BufferSize );
Registry.CloseKey ;
Registry.OpenKey('SOFTWARE\Classes\Excel.Sheet.8\', False);
Registry.WriteBinaryData('EditFlags', OriginalExcelEditFlagValue, BufferSize );
Registry.CloseKey ;
finally
Registry.Free;
end;
end;