Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > ShellExecute


Автор: ChVovan 6.9.2004, 01:15
Есть ли в Java аналог ShellExecute?

Автор: sergejzr 6.9.2004, 01:50
Посмотри здесь smile.gif
http://forum.vingrad.ru/index.php?showtopic=21934&hl=

Автор: ChVovan 6.9.2004, 05:47
Спасибо. Посмотрел ссылку, все работает, но если я хочу открыть например документ Word у меня не происходит автоматического связывания документа с приложением.

Я cделал следующее:

Пишу Win программку:
Код
#include "stdafx.h"
#include "ShellApi.h"

int APIENTRY _tWinMain(HINSTANCE hInstance,
                    HINSTANCE hPrevInstance,
                    LPTSTR    lpCmdLine,
                    int       nCmdShow)
{
ShellExecute( 0, "open", lpCmdLine, NULL, NULL, SW_SHOW);
return 0;
}


И затем вызываю ее из Java:
Код

       String s = "ShellExecute.exe " + fileName;
       
       try {
           Runtime.getRuntime().exec(s);
       }
       catch (IOException e) {
           System.out.println(e.getMessage());
       }


Как это сделать не используя Win програм?

Автор: AntonSaburov 6.9.2004, 09:57
Попробуй вот такой вариант командной строки:

start Document1.doc

Правда там надо еще с ковычками повозиться - если название из нескольких слов не всегда срабатывает.

Автор: ChVovan 7.9.2004, 03:14
"start \'" + fileName + "\'" ;
"start \"" + fileName + "\"" ;
"start " + fileName;

В таких вариантах не пашет. Как быть?

Автор: AntonSaburov 7.9.2004, 10:56
А удвоить слэш ты не пробовал ?

Автор: LSD 7.9.2004, 11:01
У меня работает так:
Код
start "" "<file_name>"

Автор: Orange 7.9.2004, 12:26
и так:
Код

import java.io.*;


public class test{

public static void main(String[] args){

String startLine = "D:\\Program Files\\MS Office 2000\\Office\\winword.exe C:\\JAVA_PROJECTS\\trash\\qwert.doc";

Runtime r=Runtime.getRuntime();

try{
r.exec(startLine);
}

catch(IOException e){

System.out.println("error in "+e);
}

}

}

Автор: AntonSaburov 7.9.2004, 15:45
Orange
ShellExecute интересна тем, что вызывает приложение в зависимости от типа файла. Так что твой вариант немного не туда smile.gif

Автор: ChVovan 8.9.2004, 21:30
start "" "<file_name>"
Попробовал неполучается. Может код покажите?

Автор: LSD 8.9.2004, 23:22
У меня работает такой код:
Код
Runtime r = Runtime.getRuntime();
try
{
 r.exec("cmd /C start \"\" \"C:\\TEMP\\Новый документ.doc\"");
}
catch(Exception e)
{
 e.printStackTrace();
}

если винда семейства 9Х, то cmd надо заменить, на command.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)