Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Sistemas operativos > Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-10-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Acceso directo a plantilla de Word

Hola,

Pues eso, lo que quiero es crear un acceso directo a una plantilla de Word, pero no para crear un documento basado en ella sino para editar la plantilla en sí.

El problema es que la acción por defecto al "ejecutar" un .DOT es crear un documento, y, si queremos editar la plantilla, debemos seleccionar la opción "Abrir" del menú contextual.

Una forma de hacer esto sería poniendo

"C:\ruta\a\winword.exe" /open "C:\ruta\a\la\plantilla.dot"

en el acceso directo. Pero el problema es que yo quiero crear este acceso directo con Inno Setup para la instalación de un programa, y no sé de antemano, cual sea la ruta a winword.exe. Si no le pongo ruta, sino sólo winword.exe, no funciona.

Intenté poniendo

"C:\ruta\a\la\plantilla.dot" /open

en el acceso directo pero no funciona tampoco.

// Saludos
Responder Con Cita
  #2  
Antiguo 08-10-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Hola

Inno Setup te permite ejecutar codigo delphi por lo que habría que crear una funcion que nos retorne la ruta de Winword.

Algo mas o menos así

Código Delphi [-]
[code]
function GetPathWindWord: String;
var
   PrevPath: String;
begin
   PrevPath := '';
   if not RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Office\10.0\Common\InstallRoot', 'Path', PrevPath) then begin
      Result := '';
   end
   else Result := PrevPath;
end;

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #3  
Antiguo 08-10-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Mmm, pudiera ser Eliseo, pero creo que ahí dependo de la versión exacta del Office que esté instalado ¿no?

Tengo la idea de que puede usarse algo como RunDLL32 Shell32 para abrir documentos al estilo de ShellExecute, pero hasta ahora sólo he logrado poner

rundll32.exe shell32.dll, ShellExec_RunDLL "C:\ruta\a\la\plantilla.dot"

lo cual abre un nuevo documento basado en la plantilla, pero no logro acomodarle el open.

Gracias Eliseo.

// Saludos
Responder Con Cita
  #4  
Antiguo 08-10-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por roman Ver Mensaje
Mmm, pudiera ser Eliseo, pero creo que ahí dependo de la versión exacta del Office que esté instalado ¿no?

Tengo la idea de que puede usarse algo como RunDLL32 Shell32 para abrir documentos al estilo de ShellExecute, pero hasta ahora sólo he logrado poner

rundll32.exe shell32.dll, ShellExec_RunDLL "C:\ruta\a\la\plantilla.dot"

lo cual abre un nuevo documento basado en la plantilla, pero no logro acomodarle el open.

Gracias Eliseo.

// Saludos
Cierto, ese si es un problema.

Tal vez algo asi

Código Delphi [-]
[Run]
Filename: {sys}\rundll32.exe; Parameters: "C:\ruta\a\la\plantilla.dot"; WorkingDir: {app};

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #5  
Antiguo 08-10-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Yo me voy por la primera solucion;

Código:
HKEY_CLASSES_ROOT\Word.Application\CurVer
Lo obvio; obtenemos la version del Word, y concatenamos su parte numerica con la clave mostrada por eliseo.

Saludos
__________________
RTFM > STFW > Foro > Truco > Post > cHackAll > KeBugCheckEx
Responder Con Cita
  #6  
Antiguo 08-10-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¡Ah! Muy bien , voy a intentarlo y les cuento.

Gracias

// Saludos
Responder Con Cita
  #7  
Antiguo 08-10-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por roman Ver Mensaje
¡Ah! Muy bien , voy a intentarlo y les cuento.

Gracias

// Saludos
Solo una modificación que ya probe y abre Word

Código Delphi [-]
[code]
function GetPath(Param:String): String;
var
  PrevPath: String;
begin
  PrevPath := '';
  if not RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Office\11.0\Word\InstallRoot', 'Path', PrevPath) then begin //Aqui modifique la clave 
     Result := '';
  end
  else Result := PrevPath;
end;

[Run]
Filename: "{code:GetPath|''}\WINWORD.EXE"; Parameters: "" //Aqui me falta la parte del dot que no encontre donde estan 

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #8  
Antiguo 08-10-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Pregunto>
Este hilo no se podría poner con alguna etiqueta?.
Es que ver que Roman tenga una duda o que incluso pregunte es de verse.
Hay que enmarcar este hilo.
Saludos Maestros.
__________________
Siempre Novato
Responder Con Cita
  #9  
Antiguo 08-10-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Hola

Tal vez esto sea mejor.

Código Delphi [-]
[code]
function Ejecuta(Param:String): String;
var
  ErrorCode: Integer;
begin
  if not ShellExec('', ExpandConstant('C:\Documents and Settings\ctoomer\Application Data\Microsoft\Word\Qué queremos evaluar.doc'),
     '', '', SW_SHOW, ewWaitUntilTerminated, ErrorCode) then
  begin
    Result := inttostr(ErrorCode);
  end;
end;

[Run]
FileName: "{code:Ejecuta|''}"

Tiene un pequeño detalle al final que es cosa de ver con calma, pero de que abre el archivo, lo abre

Salud OS

PD, Ah que mi amigo Caral
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #10  
Antiguo 08-10-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Ha quedado así

Código Delphi [-]
function GetWordVersion(): String;
var
  PrevVersion: String;

begin
 PrevVersion := '';

 if not RegQueryStringValue(HKCR, 'Word.Application\CurVer', '', PrevVersion) then
  begin
    Result := '';
  end
  else
    Result := Copy(ExtractFileExt(PrevVersion), 2, MaxInt) + '.0';
end;

function GetWordPath(Param: string): String;
var
  PrevPath: String;
   
begin
 PrevPath := '';
   
 if not RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Office\' + GetWordVersion() + '\Common\InstallRoot', 'Path', PrevPath) then
  begin
    Result := '';
  end
  else
    Result := PrevPath;
end;

Muchas gracias.

Eliseo, lo último que pones no lo entiendo. Serviría para abrir el archivo desde el instalador, pero lo que necesito es crear un acceso directo, ¿o entiendo mal?

// Saludos
Responder Con Cita
  #11  
Antiguo 08-10-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por roman Ver Mensaje
Eliseo, lo último que pones no lo entiendo. Serviría para abrir el archivo desde el instalador, pero lo que necesito es crear un acceso directo, ¿o entiendo mal?
El que ha entendido mal soy yo, estaba metido con que querias abrir un documento

Lo importante que ya funcionó como lo requerias.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #12  
Antiguo 08-10-2008
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Hola...

roman, ¿checaste la clave: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Winword.exe?

Esa clave, en su valor predeterminado, guarda la ruta completa de WinWord.exe, sea la versión que sea la que tengas instalada. Esa es la clave que usa el comando Ejecutar... (Menu Inicio - Ejecutar...) cuando escribes algo como: Winword o Regedit...

También puedes encontrar en el valor Path la ruta en la que se encuentra instalado.


Saludos...
Responder Con Cita
  #13  
Antiguo 08-10-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Marcos, muchas gracias, así queda todavía más fácil

// Saludos
Responder Con Cita
  #14  
Antiguo 08-10-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Con la sugerencia de maeyanes ha quedado así:

Código Delphi [-]
function WinWordPath(Param: String): String;
begin
  if not RegQueryStringValue(
    HKLM,
    'SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Winword.exe',
    '',
    Result)
  then
    Result := '';
end;

Y la creación del icono así:

Código:
Name: "{group}\Modificar plantilla"; FileName: "{code:WinWordPath}"; Parameters: """{app}\plantillas\plantilla.dot""";
Por si hiciera falta, nótense las dobles dobles comillas en Parameters.

De nuevo, muchas gracias a todos.

// Saludos
Responder Con Cita
  #15  
Antiguo 08-10-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Pues ya quedo redondito este asunto, quedo muy optimizado el código amigo roman.

Cabe mencionar que a mi también me ha servido porque tenia en mente hacer algo que esto que se ha hecho me ha aclarado la idea

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #16  
Antiguo 08-10-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Pues vaya, ha resultado ser aún más fácil. Nos olvidamos del código y usamos las constantes {reg: } que para eso están

Código:
Name: "{group}\Modificar plantilla"; FileName: "{reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Winword.exe,}"; Parameters: """{app}\plantillas\plantilla.dot""";
// Saludos
Responder Con Cita
  #17  
Antiguo 08-10-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por roman Ver Mensaje
Pues vaya, ha resultado ser aún más fácil. Nos olvidamos del código y usamos las constantes {reg: } que para eso están
No pues cuando se trata de optimizar código, lo mejor es eliminarlo

Muy bien

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
modificar una plantilla de word luxus OOP 9 26-08-2008 21:13:48
Acceso directo jorgegetafe Varios 10 05-06-2007 21:35:00
aplicacion en red, con un acceso directo? m8estrella83 Conexión con bases de datos 2 25-09-2006 22:48:01
Registro en Plantilla Word JulioGO Firebird e Interbase 2 12-09-2004 00:42:34
crear un acceso directo tango01 Varios 7 20-06-2003 16:42:48


La franja horaria es GMT +2. Ahora son las 14:38:30.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi