getRuntime().exec() path internacional para WORD [resolvido]
10 respostas
A
anaeckel
Bom Dia todos!
Estou desenvolvendo um sistema para Holanda que precisa abrir o word.
Já sei que com getRuntime().exec() consigo fazer isso. O problema é o path, como saber qual o caminho instalado o word, tipo, aqui no Brasil comumente veremos o caminho “C:/Arquivos de programas/Microsoft Office/OFFICE11/WINWORD.EXE” mas o usuário poderia instalar em outro caminho, e também, obviamente na Holanda o caminho é outro!
Então, será que existe um alias para WINWORD.EXE? Como posso garantir sempre pegar o caminho correto em qualquer lugar do mundo?!!!
Alguma sugestão?
Muito obrigada!
em algum ponto de sua aplicação, vc nao poderia perguntar isso pro usuário?
T
thingol
Você precisa chamar o Word “vazio” ou então passando o nome de um documento? Se puder passar o nome de um documento, sempre dá para executar o comando do Windows (obviamente via exec()):
rundll32.exe Shell.dll,ShellExec_RunDLL “C:<i>diretório<i>o documento que você quer abrir.doc”
(isto chama automaticamente a aplicação registrada para arquivos .doc, que provavelmente é o MS Word. Se for o OpenOffice vai chamar o OpenOffice. Portanto você nem precisa saber se é o Office 2003, Office 2000, Office XP, Word 6.0 - mande tudo às favas)
EDIT - sorry, é shell32.dll, não shell.dll
Então:
rundll32.exe Shell32.dll,ShellExec_RunDLL “C:<i>diretório<i>o documento que você quer abrir.doc”
R
renanpl
Usamos o alis winword em iniciar>executar>winword
pek
Nunca fiz isto nem sei se é possivel com java, mas em ambiente windows poderá obter o caminho do word através do registo do próprio windows, fazendo uma pesquisa por uma string do género “SOFTWARE\JavaSoft\Java Runtime Environment” e um parametro “JavaHome” (neste exemplo para a localizacao do JRE).
A grande questão será como fazer esta pesquisa usando Java.
T
thingol
A vantagem da solução “rundll32” que lhe mostrei é que você não precisa saber qual é a versão do Office instalada na máquina do sujeito. Se ele nem tiver o Office, mas apenas o WordPad, continua funcionando e mostrando o documento.
Se você não puder iniciar o Office com um documento, você pode criar um documento vazio default, e iniciar o Office com esse documento vazio. Aí o problema é saber onde é que você tem de criar esse documento vazio (transferi o seu problema de descobrir onde é que está o “Program Files” para o problema de descobrir onde está o “My Documents” - he he he…
Mas isso acho que é mais fácil, pois provavelmente o seu aplicativo já deve ter um padrão para o diretório de criação de documentos.
A
anaeckel
Sim thingol, gostei desta solução, me parece bem adequada para meu problema.
Porém fui testá-la e ocorreu os seguintes erros:
“O aplicativo ou a Dll C:\WINDOWS\system32\Shell.dll não é uma imagem válida para o windows. Compare com o disco de instalação.”
“Erro ao carregar Shell.dll %1 não é um aplicativo Win32 válido.”
o comando que fiz foi: String caminho = “rundll32.exe Shell.dll,ShellExec_RunDLL C:\teste\Arquivo.doc” Runtime.getRuntime().exec(caminho);
Maravilha!!!
Funcionou colocando as barras duplas.
Valeuuuuu todos!!!
E
escordeiro
Nunca fiz isto nem sei se é possivel com java, mas em ambiente windows poderá obter o caminho do word através do registo do próprio windows, fazendo uma pesquisa por uma string do género “SOFTWARE\JavaSoft\Java Runtime Environment” e um parametro “JavaHome” (neste exemplo para a localizacao do JRE).
A grande questão será como fazer esta pesquisa usando Java.
Só respondendo, pela API de preferences (java.util.pref) acho que dá pra fazer…esse tipo de informação é obtida do registro como preferência do sistema, mas, se não me engano, essa API depende de restrições do SO (usuário deve ter permissão de acesso ao registro)
T
thingol
Infelizmente java.util.Preferences não acessa o Registry inteiro, só um pedacinho dele, cujas chaves são criadas pela classe Preferences, e é mais apropriada para guardar alguma configuração de alguma aplicação do usuário.