Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Как указать путь к исполняему файлу и запустить его (Visual Studio 2010) (http://forum.oszone.net/showthread.php?t=202590)

steff 21-03-2011 16:50 1640244

Как указать путь к исполняему файлу и запустить его (Visual Studio 2010)
 
Доброго всем времени суток! Пишу лаунчер для одной игрушки, в ходе написания столкнулся с проблемкой. Суть проблемы в том, что лаунчеру нужно указать исполняемый (пусковой .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 1640293

а ты не пробовал указывать не просто имена, а еще и полный путь к файлу. И ты точно уверен что в папке debug или куда там компилируется есть этот файл.

steff 22-03-2011 00:33 1640592

Конечно пробовал, и указывал полный путь к файлу, и закидывал "лаунчер" в папку с "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 1640676

Цитата:

Цитата steff
как перехватить результат выбора пользователя »

Если я правильно понял что требуется, то просто сохраните значение
Код:

FolderBrowserDialog1.SelectedPath + "RUN.exe"
ну или без имени файла, в место где хотите хранить(например, app.config). Запись производить во время выбора пути в диалоге!
Цитата:

Цитата steff
потом обращатся к файлу для считываний из него пути? »

Допустим в таком порядке :
  • Проверка существования RUN.exe в корне
  • Если в корне нету, проверка ключа в app.config
  • Если ключ имеется, запуск из значения в том ключе
  • Если ключа нет, опять же Диалог выбора, с последующей записью ключа


Время: 00:53.

Время: 00:53.
© OSzone.net 2001-