Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi для начинающих

Войти
Регистрация
Восстановить пароль
 
Socol
0 / 0 / 0
Регистрация: 17.11.2012
Сообщений: 9
#1

CreateProcess и java - Delphi

09.06.2013, 09:34. Просмотров 772. Ответов 4
Метки нет (Все метки)

возникла проблема с запуском джавы. через бат файл запускается.
C++
1
start javaw -Xmx512m -Djava.library.path=%APPDATA%/.minecraft/bin/natives -cp %APPDATA%/.minecraft/bin/minecraft.jar;%APPDATA%/.minecraft/bin/jinput.jar;%APPDATA%/.minecraft/bin/lwjgl.jar;%APPDATA%/.minecraft/bin/lwjgl_util.jar net.minecraft.client.Minecraft Username
а вот через деньфи не как.

Delphi
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
procedure TForm1.Button1Click(Sender: TObject);
var
SI: TStartupInfo;
PI: TProcessInformation;
JavaMachineExe, Params, WorkFolder: AnsiString;
login, pass: string;
begin
login := edit1.Text;
pass := edit2.Text;
FillChar(SI, SizeOf(SI), 0);
SI.cb := SizeOf(SI);
SI.wShowWindow := SW_SHOWNORMAL;
SI.dwFlags := STARTF_USESHOWWINDOW;
 
JavaMachineExe := 'C:\Program Files\Java\jre7\bin\javaw.exe';
Params := AnsiQuotedStr(JavaMachineExe, '"') + '-Xmx1024M -Xms1024M -Djava.Library.path='+minecraft+'natives -cp '+minecraft+ 'minecraft.jar;'+ minecraft+ 'jinput.jar;'+minecraft+'Lwjgl.jar;'+minecraft+'Lwjgl_util.jar nrt.minecraft.client.minecraft '+ login+ ' '+ pass+'"';
WorkFolder := minecraft;
 
if not CreateProcess(nil, Pointer(Params), nil, nil, False, NORMAL_PRIORITY_CLASS,
nil, Pointer(WorkFolder), SI, PI) then RaiseLastOSError;
 
try
WaitForInputIdle(PI.hProcess, INFINITE);
//...
finally
CloseHandle(PI.hProcess);
CloseHandle(PI.hThread);
end;
end;
 
procedure TForm1.FormShow(Sender: TObject);
var
userName : String;
userNameLen : dword;
nameclear, install : String;
begin
userNameLen := 255;
SetLength(userName, UserNameLen);
if GetUserName(PChar(UserName), UserNameLen) then
 nameclear:= Copy(UserName,1,UserNameLen -1)
else begin
 nameclear:= 'error';
end;
minecraft:= ('C:\Users\'+ nameclear +'\AppData\Roaming\.minecraft\bin\');
end;
на мой взгляд, так все правильно. но джава думает иначе. подскажите в чем я ошибся.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2013, 09:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос CreateProcess и java (Delphi):

CreateProcess - Delphi
Дайте пожалуйста код для открытия файла с помощью CreateProcess. Файл находится в папке с программой \kart.exe

CreateProcess Delphi - Delphi
Здравствуйте, недавно столкнулся с одной проблемой. Пытаюсь запустить процесс из своего приложения. Процесс запускается но он идет как...

Запуск через CreateProcess - Delphi
Как запустить программу через CreateProcess и передать параметры запуска ? Если нужно исходник выложу!

Ошибка при CreateProcess - Delphi
Требуется осуществить перехват вывода консоли в Memo. Нашел тройку процедур в интернете для осуществления сей задачи, но во всех троих...

CreateProcess, нажатие клавиши - Delphi
Как передать дочерней программе нажатую клавишу. П.с. дочерняя программа, написанная на C++, запущена createprocess'ом родительской...

CreateProcess - не дожидается окончания - Delphi
Здравствуйте, подскажите в чем проблема, я написал чтобы после завершения процесса выполнялась другая процедура расчета, но почему-то не...

4
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
24782 / 16456 / 5073
Регистрация: 22.10.2011
Сообщений: 29,076
Записей в блоге: 5
09.06.2013, 13:28 #2
Цитата Сообщение от Socol Посмотреть сообщение
на мой взгляд, так все правильно
Даже никому не нужная кавычка в самом конце строки? Попробуй посмотреть, что у тебя получается в строке Params, выведи ее куда-нибудь, перед тем, как отправлять в функцию.

О том, какие еще проблемы часто возникают при использовании CreateProcess - см. здесь: Этот проблемный CreateProcess...
0
Dr_Quake
Заблокирован
09.06.2013, 14:52 #3
В Params НЕ пишут имя exe самого. Зайди в форум Delphi WinAPI. А вообще для новичков есть winexec простейший - с ним легче.
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
24782 / 16456 / 5073
Регистрация: 22.10.2011
Сообщений: 29,076
Записей в блоге: 5
09.06.2013, 15:13 #4
Цитата Сообщение от Dr_Quake Посмотреть сообщение
В Params НЕ пишут имя exe самого.
Еще один... Ты по ссылке-то ходил, или "и так всё знаешь"? Значит, плохо знаешь, иди и читай.

Цитата Сообщение от Dr_Quake Посмотреть сообщение
А вообще для новичков есть winexec простейший
WinExec, который уже много лет, как deprecated:
This function is provided only for compatibility with 16-bit Windows.
, и всё никак не подохнет? Ясно всё с тобой...
0
Dr_Quake
Заблокирован
09.06.2013, 15:20 #5
Знаю и использовал его так постоянно.

Да, deprecated, уже лет 10 как, всё никак не подохнет, самый простой способ. В данном раскладе CreateProcess нафиг не нужен тоже by design, тогда уж ShellExecute как положено.
0
09.06.2013, 15:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.06.2013, 15:20
Привет! Вот еще темы с ответами:

Как скрыть окно createprocess - Delphi
вопрос заключается непосредственно в название темы пробовал так: var SI: TStartupInfo; begin SI.wShowWindow:= 0; ...

Вырубание дочернего процесса CreateProcess - Delphi
И так я запускаю программу через CreateProcess и дальше программа следит за запущенным процессом и через определенное время надо выключать...

Пробелы в имени файла (CreateProcess) - Delphi
Здравствуйте. Нужно запаковать файл в архив и по завершению архивирования подключиться к базе. Проблема в том что в пути к архиватору и...

Запустить консольное приложение CreateProcess - Delphi
Мне необходимо запустить консольное приложение с некими параметрами. делаю так: procedure start(name,par:string); var Rlst:...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.