Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/165: Рейтинг темы: голосов - 165, средняя оценка - 4.50
Я Фоюмчанин ? дааааа)
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
1

Как запустить *.exe из кода мой программы?

29.12.2012, 19:53. Показов 29665. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток и с Наступающим.
Вообщем вопрос в Заголовке.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.12.2012, 19:53
Ответы с готовыми решениями:

Как запустить exe вайл из своей программы
вобщем нужно что бы при нажатии на кнопку открывалась программа не знаю как правильно прописать это...

как запустить exe-шник программы C# .net 2.0 с сетевого диска?
Подскажите, пожалуйста, как запускать программу, написанную на C# .net 2.0, c сетевого диска?...

Есть один листинг программы который нужно запустить и скомпилировать!(код не мой).
Вообщем скачал с inet листинг программы на Delphi и как вы уже догадались не смог с ним...

Для запуска программы надо запустить её из командной строки: SBAppLocale.exe 1033 "C:\Program Files\Captcha Sniper\CaptchaSniper.exe"
Добрый день. Для запуска программы надо запустить её из командной строки: SBAppLocale.exe 1033...

14
104 / 104 / 27
Регистрация: 11.08.2011
Сообщений: 301
29.12.2012, 19:55 2
Java
1
2
File file=new File("путь к файлу в формате C:\\some folder\\file.exe");
Desktop.getDesktop().open(file);
Добавлено через 30 секунд
ну или
Java
1
Desktop.getDesktop().open("путь к файлу в формате C:\\some folder\\file.exe");
1
Я Фоюмчанин ? дааааа)
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
29.12.2012, 20:11  [ТС] 3
Vortal, 1 не работает, а 2 вообще ругаеться

Добавлено через 7 минут
Работает только с расширением .lnk
0
104 / 104 / 27
Регистрация: 11.08.2011
Сообщений: 301
29.12.2012, 20:19 4
Надо краем глаза глянуть нужный кусок кода, однозначно должно работать я у себя быстро набросал
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.awt.Desktop;
import java.io.File;
import java.io.IOException;
 
 
public class OpenExe {
    public static void main(String args[]){
        File file =new File("C:\\Downloads\\qip8082.exe");
        try {
            Desktop.getDesktop().open(file);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
 
}
Добавлено через 1 минуту
или так
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
import java.awt.Desktop;
import java.io.File;
import java.io.IOException;
 
 
public class OpenExe {
    public static void main(String args[])throws IOException{
        File file =new File("C:\\Downloads\\qip8082.exe");
    
            Desktop.getDesktop().open(file);
        
        }
    }
1
512 / 454 / 119
Регистрация: 17.02.2012
Сообщений: 1,032
Записей в блоге: 1
29.12.2012, 20:47 5
Java
1
Runtime.getRuntime().exec("C:\\Program Files\\Mozilla Firefox\\firefox.exe");
1
2586 / 2259 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
30.12.2012, 14:35 6
Java
1
ProcessBuilder b = new ProcessBuilder("C:\\troyan.exe","-arg1", "-arg2");
Java
1
2
List<String> params = java.util.Arrays.asList("C:\\troyan.exe", "-arg1", "-arg2");
ProcessBuilder b = new ProcessBuilder(params);
0
7 / 7 / 1
Регистрация: 27.05.2011
Сообщений: 297
07.04.2013, 05:55 7
Юзаю
Java
1
2
      ProcessBuilder pb = new ProcessBuilder("starter.bat");
              pb.start();
Не помогает. Файл видит, но он его не запускает.

Java
1
2
      
                Runtime.getRuntime().exec("starter.bat");
тоже самое. В чем может быть проблема?
0
2586 / 2259 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
07.04.2013, 09:53 8
Цитата Сообщение от waip Посмотреть сообщение
В чем может быть проблема?
в том что bat это не программа а команды шеллу cmd.exe, чтобы его запустить его надо запустить шелл и передать bat как параметр шеллу
0
7 / 7 / 1
Регистрация: 27.05.2011
Сообщений: 297
07.04.2013, 14:48 9
А если нужно запустить другой класс файл?

Java
1
2
3
ProcessBuilder pb = new ProcessBuilder("java","-JavaApplication");
 
pb.start();
подойдет?
0
2586 / 2259 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
07.04.2013, 15:05 10
скажите уже наконец что именно вы хотите запустить
для запуска Ява классов вовсе не обязательно стартовать новую JVM (хотя и это возможно)

есть 2 пути, загрузить класс в системный класс лоадер или в новый свой и там уже выполнить запуск через рефлекшен
0
7 / 7 / 1
Регистрация: 27.05.2011
Сообщений: 297
07.04.2013, 15:20 11
Цитата Сообщение от mutagen Посмотреть сообщение
скажите уже наконец что именно вы хотите запустить
Задумка у меня такая.
Программа стучится на веб сервер и читает файл. Сверяет его с локальным файлом. Если версия файла на веб сервере новее чем локальный то необходимо выключить себя и запустить вторую программу которая удалит первую и загрузит обновленную и по окончанию загрузки запустит ее и закроет себя.
Так сказать самообновление продукта.
Поэтому встал вопрос как запустить вторую программу(которая удалит первую и скачает новую).
С батником как видно не получилось(батник запускал другой класс-файл), запускать вторую JVM не рационально, тогда вполне подходит

Цитата Сообщение от mutagen Посмотреть сообщение
новый свой и там уже выполнить запуск через рефлекшен
как это реализовать?
0
2586 / 2259 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
07.04.2013, 16:17 12
В таком случае у вас больше проблем чем кажется.
Даже если обойти проблему ланчером, который по патерну команда будет просто скачивать и запускать на выполнение свежую версию, JVM будет матюкаться на попытку загрузить новый класс если класс с таким именем уже есть в статик контексте.
Повлиять както на то чтобы JVM выгрузила класс пользователь не может, поэтому придётся грузить его новым инстансом класслоадера.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package classtricks;
 
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Method;
 
/**
 *
 * @author mutagen
 */
public class ClassLoadTricks {
 
    public static void main(String[] args) throws Exception {
        CustomLoader cc1 = new CustomLoader(ClassLoadTricks.class.getClassLoader());
        File pathToClass = new File("build/classes/classtricks/ClassLoadTricks.class");
        Class c1 = cc1.getClassFromFile(pathToClass, "classtricks.ClassLoadTricks");
        Method m1 = c1.getMethod("start", String.class);
        Object o1 = c1.newInstance();
        m1.invoke(o1, "1.0");
 
        CustomLoader cc2 = new CustomLoader(ClassLoadTricks.class.getClassLoader());
        Class c2 = cc2.getClassFromFile(pathToClass, "classtricks.ClassLoadTricks");
        Method m2 = c2.getMethod("start", String.class);
        Object o2 = c2.newInstance();
        m2.invoke(o2, "2.0");
        
        System.out.println("Is it the same class ? " + (o1.getClass() == o2.getClass()));
        System.out.println("But how about name:");
        System.out.println("\t" + o1.getClass().getCanonicalName());
        System.out.println("\t" + o2.getClass().getCanonicalName());
 
    }
    
    public void start(String version) {
        System.out.println("Start a new app version: " + version);
        // do real start
    }
 
    static class CustomLoader extends ClassLoader {
 
        public CustomLoader(ClassLoader parent) {
            super(parent);
        }
 
        public Class getClassFromFile(File f, String name) {
            byte[] raw = new byte[(int) f.length()];
            InputStream in = null;
            try {
                in = new FileInputStream(f);
                in.read(raw);
            } catch (Exception e) {
                e.printStackTrace();
            }
            try {
                if (in != null) {
                    in.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            return defineClass(name, raw, 0, raw.length);
        }
    }
}
0
7 / 7 / 1
Регистрация: 27.05.2011
Сообщений: 297
08.04.2013, 09:19 13
Так... это очень сложно для понимания.
Тогда пойдем проще.
Я скомпилировал батник в ехе-файл. Попытался его запустить - итог нулевой.
Попытался вызвать вторую виртуальную машину
Java
1
2
 ProcessBuilder pb = new ProcessBuilder("jdk1.7.0_03\\bin\\java.exe","-version");
                pb.start();
Такое ощущение, что процессы запускаются в инвизе
0
2586 / 2259 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
08.04.2013, 10:33 14
Цитата Сообщение от waip Посмотреть сообщение
Такое ощущение, что процессы запускаются в инвизе
а вы что думали для вас ява стартанёт консоль и станет отображать всё там?
она забирает поток ввода, вывода и ошибок приложения на себя и пытается его менеджить (если вы конечно это предусмотрели в своей программе)
0
7 / 7 / 1
Регистрация: 27.05.2011
Сообщений: 297
08.04.2013, 10:38 15
Цитата Сообщение от mutagen Посмотреть сообщение
а вы что думали для вас ява стартанёт консоль и станет отображать всё там?
Нет, я думал, что запустится тот объект, который мне нужен и он будет работать независимо от объекта, который его вызвал.
0
08.04.2013, 10:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.04.2013, 10:38
Помогаю со студенческими работами здесь

Возможно ли как-то открыть файл .exe в Visual Studio для просмотра кода программы?
Возможно ли как-то открыть файл .exe в Visual Studio для просмотра кода программы?

Запустить .exe файл из программы
Здравствуйте ! Хочу запустить свою программу используя, system(&quot;start C:\\test file.exe&quot;). Файл...

Запустить из подкаталога программы файл exe
как запустить из подкаталога программы файл например 111.exe? То есть я написал программу, а потом...

Запустить exe файл из Android-программы
Доброго времени суток! Вопрос такой. Предположим имеется консольный exe файл который выполняется...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru