Войти

Показать полную графическую версию : Как указать путь к исполняему файлу и запустить его (Visual Studio 2010)


steff
21-03-2011, 16:50
Доброго всем времени суток! Пишу лаунчер для одной игрушки, в ходе написания столкнулся с проблемкой. Суть проблемы в том, что лаунчеру нужно указать исполняемый (пусковой .exe) файл игры, а затем запомнить путь к нему и запустить. Реализовать решил просто указав путь к папке в котором находится файл и все, но не получается. Помогите советом.



Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Me.Hide()
Dim procID As Integer
Dim procIS As String
If My.Computer.FileSystem.FileExists("RUN_GAME.exe") Then
procID = Shell("RUN_GAME.exe", AppWinStyle.NormalFocus)
Else
'MsgBox("File RUN_GAME.exe not found.")
'Me.Show()
Try
With fldlgList
.RootFolder = Environment.SpecialFolder.MyComputer
.Description = "Выберите дирректорию в которую установлена игра"
.ShowNewFolderButton = False
If .ShowDialog = Windows.Forms.DialogResult.OK Then
procIS = Windows.Forms.Application.StartupPath("RUN_KF.exe")
procID = procIS & Shell("RUN_GAME.exe", AppWinStyle.NormalFocus)
End If
End With
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Exclamation, Me.Text)
End Try
End If
End Sub



P.S. код какбэ рабочий, но после указания папки с файлом пишит, и нажатия "ОК", пишит что "файл не найден" (естветсвенно в папке он присутствует)

Beyound
21-03-2011, 18:06
а ты не пробовал указывать не просто имена, а еще и полный путь к файлу. И ты точно уверен что в папке debug или куда там компилируется есть этот файл.

steff
22-03-2011, 00:33
Конечно пробовал, и указывал полный путь к файлу, и закидывал "лаунчер" в папку с "RUN_GAME.exe" оба варинта отлично работают, но представь ситуацию когда пользователь при установке "лаунчера" проигнорит сообщение о том, что его нужно ставить в папку с установленой игрой, и при запуске лаунчера получит ошибку связанную с невозможностью найти пусковой файл игры (я уже не говорю про, то чтобы указывать полный путь к файлу, ведь он у всех отличается у всех). Для этого я и хочу сделать так чтобы, в случае когда когда "лаунчер" неможет найти исполняемый файл "RUN_GAME.exe" в своей корневой папке, запускалось диалоговое окно в котором пользователю необходимо указать путь к папке в которой находится "RUN_GAME.exe".
Представленый выше код кокраз этим и занимается, есдинственное в чем проблема, он почемуто не может запустить "RUN_GAME.exe" хотя путь указан через диалоговое окно

Ответ на свой основной вопрос нашел, "лаунчер" теперь находит в указаном пути необходимый исполняемый файл

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Me.Hide()
Dim procID As Integer
Dim FolderBrowserDialog1 As New FolderBrowserDialog()
FolderBrowserDialog1.Description = "Укажите путь к папке с установленной игрой"
If My.Computer.FileSystem.FileExists("RUN.exe") Then
Me.Hide()
procID = Shell("RUN.exe", AppWinStyle.NormalFocus)
Me.Close()
Else
If FolderBrowserDialog1.ShowDialog = System.Windows.Forms.DialogResult.OK Then
My.Computer.FileSystem.CurrentDirectory = FolderBrowserDialog1.SelectedPath
If My.Computer.FileSystem.FileExists("RUN.exe") Then
Me.Hide()
procID = Shell("RUN.exe", AppWinStyle.NormalFocus)
Me.Close()
Else
MsgBox("Файл не найден")
Me.Show()
End If
End If
FolderBrowserDialog1.Dispose()
End If
End Sub

теперь необходимо осуществить сохранение пути к исполняемому файлу указанное пользователем в диалоге (FolderBrowserDialog1.SelectedPath) во внешний файл .ini или .conf, а затем применять сохраненый путь при следующих запусках "лаунчера" (чтобы пользователь не указывал путь к папке с иполняемым файлом при каждом запуске "лаунчера"), как осуществить сохранение результатов в файл мне известно, но как перехватить результат выбора пользователя и потом обращатся к файлу для считываний из него пути?

LilLoco
22-03-2011, 07:46
как перехватить результат выбора пользователя »
Если я правильно понял что требуется, то просто сохраните значение FolderBrowserDialog1.SelectedPath + "RUN.exe" ну или без имени файла, в место где хотите хранить(например, app.config). Запись производить во время выбора пути в диалоге!
потом обращатся к файлу для считываний из него пути? »
Допустим в таком порядке :
Проверка существования RUN.exe в корне
Если в корне нету, проверка ключа в app.config
Если ключ имеется, запуск из значения в том ключе
Если ключа нет, опять же Диалог выбора, с последующей записью ключа




© OSzone.net 2001-2012