Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
47 / 1 / 0
Регистрация: 12.05.2010
Сообщений: 146
1

Лаунчер для игры. Ярлык с параметрами запуска

17.02.2013, 19:20. Показов 3879. Ответов 12
Метки нет (Все метки)

Всем привет. Пытаюсь написать лаунчер для одного сервера.
Интересует следующие: можно ли средствами Delphi создавать ярлык с определенными параметрами?
Сейчас я делаю так: через button1 нахожу путь до нужного мне ехе файла, запоминаю путь. Через button2 я запускаю уже найденный ехе. Собственно, тут проблем нет. Но мне необходимо запускать этот exe с определенными параметрами (типа -window, -connect и др). Пробовал делать так: параметры храню как константа (cmd='-window'), приписывал эти параметры к ранее найденному пути и записывал это в bat файл или приписываю на кнопке запуска.
В общем с параметрами запускать не получается, хотя если в bat файл будет просто путь до ехе, то все ок.

Как такое можно реализовать?

Пока разбираюсь с тыц, тыц и тыц
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
unit Unit1;
 
interface
 
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, ShellApi, Vcl.StdCtrls, Vcl.Menus;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    OpenDialog1: TOpenDialog;
    Button2: TButton;
    MainMenu1: TMainMenu;
    File1: TMenuItem;
    Help1: TMenuItem;
    Exit1: TMenuItem;
    Label2: TLabel;
    Open1: TMenuItem;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Exit1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 const
  cmd='-window';
var
  Form1: TForm1;
  Filename, myfile: textfile; // файл
  way:string; // путь
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button2Click(Sender: TObject);
begin
 OpenDialog1.Filter := 'Exe file Steam/beta patch|*.exe';   // фильтр по .ехе
 if openDialog1.Execute then
  ShowMessage('successful open. You can launch game. '+ OpenDialog1.FileName)
  //way:=OpenDialog1.FileName;
  else ShowMessage('Open file was cancelled');
  way:=OpenDialog1.FileName;
  openDialog1.Free;
end;
 
procedure TForm1.Exit1Click(Sender: TObject);
begin
 close;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
 if way='' then
 ShowMessage('You must chouse a path of your game!')
 else
  ShellExecute(Application.Handle,PChar('open'),PChar(way),Nil,Nil,SW_SHOW);
end;
 
procedure TForm1.Button3Click(Sender: TObject);
 var
  p:string;
begin
 p:=way+cmd;
 AssignFile(myfile,'MyBat.bat');
 Rewrite (myfile);
 WriteLn(myfile, p);
 Closefile (myfile);
end;
 
end.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.02.2013, 19:20
Ответы с готовыми решениями:

Создать временный файл запуска игры с параметрами
В общем такое дело. Есть игра Arma 2 с модом Dayz. Какой раз пытаюсь создать нормальный лаунчер...

Лаунчер для игры MineCraft
Нашел интересный Батник запуска игры (Майнкрафт) , созданный человеком под ником KRON. Суть в...

Лаунчер для online - игры
Есть одна игра Love Beat (Тайская Версия) и чтобы попасть игру,нужно залогинится на сайте игры. ...

Лаунчер для игры + мониторинг
Здравствуйте Я зделал лаунчер для онлайн игры но мне нужно сделать мониторинг этой игры чтобы...

12
179 / 74 / 8
Регистрация: 27.12.2012
Сообщений: 408
17.02.2013, 19:32 2
unit ShellApi

Описание:

function ShellExecute(hWnd: HWnd; Operation, FileName, Parameters, Directory: PChar; ShowCmd: Integer): HINST; stdcall;

hwnd
- Хендл родительского окна. Определяет родительское окно. Это окно получает любые окна сообщений, которые генерирует приложение. Например, приложение может сообщать об ошибке при помощи окна сообщений.

Operation
- Указатель на строку, определяющую операцию для выполнения. Строка должна завершаться нулевым символом.
Допустимы следующие значения:
"open" Функция открывает файл, указанный в параметре FileName. Файл может быть как исполнимым файлом, так и файлом документа. Файл может быть папкой, которую нужно открыть.
"print" Функция открывает файл, указанный в параметре FileName. Файл должен быть файлом документа. Если файл является исполнимым файлом, функция открывает файл, как если бы было указано значение "open".
"explore" Функция исследует папку, указанную в параметре FileName, експлорером.

FileName
Указатель на строку, определяющую имя файла для открытия или печати, или имя папки для открытия. Строка должна завершаться нулевым символом.

Parameters
- Указатель на строку параметров исполнимого файла. Если файл, заданный в параметре FileName является исполнимым файлом, то Parameters указывает на строку параметров, передаваемых приложению. Строка должна завершаться нулевым символом.

Delphi
1
ShellExecute(Handle, 'open','C:\program files\winrar\rar.exe  ', 'параметр', nil, SW_SHOWNORMAL);
Как-то так?
0
47 / 1 / 0
Регистрация: 12.05.2010
Сообщений: 146
17.02.2013, 19:40  [ТС] 3
noname06, отчасти. Я пробовал делать так, но не работало.
Надо как-то так:
Delphi
1
ShellExecute(Handle, 'open','C:\program files\winrar\rar.exe -window; -border=0  ', 'параметр', nil, SW_SHOWNORMAL);
Чтобы работали параметры запуска.
0
179 / 74 / 8
Регистрация: 27.12.2012
Сообщений: 408
17.02.2013, 19:43 4
А вот так?
Delphi
1
ShellExecute(Handle, 'open','C:\program files\winrar\rar.exe  ', '-window; -border=0', nil, SW_SHOWNORMAL);
0
47 / 1 / 0
Регистрация: 12.05.2010
Сообщений: 146
17.02.2013, 19:51  [ТС] 5
noname06, сейчас попробую протестировать
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
31190 / 20388 / 7940
Регистрация: 22.10.2011
Сообщений: 35,358
Записей в блоге: 6
17.02.2013, 19:55 6
Кто-нибудь мне объяснит зачем тут пробелы-то, в конце третьего параметра? Не надо их там...
0
47 / 1 / 0
Регистрация: 12.05.2010
Сообщений: 146
17.02.2013, 20:15  [ТС] 7
эм. Так не идет.
Window параметр вообще идет для винрара?
Да и вообще, путь через переменную можно ли задать?

Добавлено через 16 минут
смотрите, вот что есть в третей ссылке
Delphi
1
2
 param:='+restart +menu 1 +fullscreen 1 +playerName '+edit2.text+' +playerPassword '+edit3.text;       //parametri
  ShellExecute(Handle,'open', pchar(path), pchar(param),pchar(copy(path,1,length(path)-8)) , SW_SHOWNORMAL) ;
только я пока не понял что у него хранится в edit2, edit3 и что вот тут происходит: pchar(copy(path,1,length(path)-8))
0
179 / 74 / 8
Регистрация: 27.12.2012
Сообщений: 408
17.02.2013, 20:39 8
Команда запускает рар и из папки c:\ARHIV\ делает файл c:\backup.rar Проверил, точно работает (win7 + delphi 7)
Delphi
1
ShellExecute(Handle, 'open','C:\program files\winrar\rar.exe', 'a -r c:\backup c:\ARHIV\*', nil, SW_SHOWNORMAL);
т.е. нужно
Delphi
1
ShellExecute(Handle, 'open','адрес exe', 'параметры запуска', nil, SW_SHOWNORMAL);
1
47 / 1 / 0
Регистрация: 12.05.2010
Сообщений: 146
17.02.2013, 21:01  [ТС] 9
noname06, буду завтра тестить. На ноуте нет игры.
Так все-таки адрес ехе как поменять на переменную way?
0
179 / 74 / 8
Регистрация: 27.12.2012
Сообщений: 408
17.02.2013, 22:37 10
Могу предположить что
Delphi
1
2
3
4
5
6
7
var
  way:string;
 
...
 
way:='адрес exe';
ShellExecute(Handle, 'open', way , 'параметры запуска', nil, SW_SHOWNORMAL);
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
31190 / 20388 / 7940
Регистрация: 22.10.2011
Сообщений: 35,358
Записей в блоге: 6
17.02.2013, 22:39 11
Delphi
1
ShellExecute(Handle, 'open', PChar(way) , 'параметры запуска', nil, SW_SHOWNORMAL);
, сам компилятор привести string к PChar-у не может.
0
2474 / 1850 / 242
Регистрация: 14.09.2012
Сообщений: 5,981
Записей в блоге: 2
17.02.2013, 22:53 12
Начинался топик вопросом
Интересует следующие: можно ли средствами Delphi создавать ярлык с определенными параметрами?
Пример реализации для блокнота.
1
47 / 1 / 0
Регистрация: 12.05.2010
Сообщений: 146
17.02.2013, 23:21  [ТС] 13
noname06, по задумке я через btn1 уже нахожу этот way. F через btn2 беру way и подставляю к нему параметры запуска.
Как-то так.

Добавлено через 2 минуты
angstrom, спасибо.
Завтра буду с этим разбираться.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.02.2013, 23:21

Лаунчер для игры + мониторинг + новости
Лаунчер для игры + мониторинг Здравствуйте Я зделал лаунчер для онлайн игры но мне нужно сделать...

Как сделать лаунчер для игры?
Делаю игру на unity. Вот хочу сейчас закинуть сырую бетку в интернет. Подскажите, как сделать к ней...

Обновление с удаленного сервера (лаунчер для игры)
Приветствую всех! Прошу Вашего совета или помощи в следующей задаче: есть приложение (игровой...

Unity ярлык для запуска
Доброго времени суток, недавно установил себе Юнити но для того штобы запустить его нужно заходить...


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

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

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