Avatar billede screwdriver Nybegynder
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
Avatar billede hrc Mester
10. marts 2004 - 00:49 #1
Måske kan du finde ud af hvordan pdf-filer har associeret ekstensionen og så sammenligne den med doc'erne.
Avatar billede hrc Mester
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.
Avatar billede screwdriver Nybegynder
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;
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester