Saya cukup baru di C#, saya pernah bermain-main dengannya sebelumnya, tetapi saya benar-benar ingin mengetahuinya sekarang. Saya ingin membuat aplikasi konsol luar untuk sebuah game, game tersebut adalah port yang buruk dan membutuhkan banyak program untuk dibuka di latar belakang agar lebih dapat dimainkan. Jadi saya memutuskan untuk membuat program yang menggantikan launcher.exe dengan yang meluncurkan semua program saat game dimulai dan menutupnya saat game ditutup.

Gamenya adalah BioShock 2 tepatnya, tapi kemungkinan besar saya akan membuat program ini sehingga saya bisa menggunakannya dengan game lain yang juga bisa menggunakan program ini. Inilah masalah saya, ketika saya memulai debug itu akan membuka salah satu program untuk membantu permainan (FlawlessWidescreen) tetapi permainan itu sendiri tidak akan terbuka. Saya sudah mencoba menjalankan BioShock2 tetapi itu menunjukkan itu berjalan sebentar dan kemudian menutup, tidak ada kesalahan jadi saya tidak tahu persis apa yang saya lakukan salah.

Berikut kode saya.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
using System.Security;

namespace Bioshock2_Advanced_Launcher
{
        public class SecurityException : SystemException
    {
        static void Main(string[] args)
        {
            Process.Start("F:\\Steam Library\\steamapps\\common\\BioShock 2\\SP\\Builds\\Binaries\\FlawlessWidescreen.lnk");
            Process.Start("F:\\Steam Library\\steamapps\\common\\BioShock 2\\SP\\Builds\\Binaries\\Bioshock2.exe");
        }
    }
}

FlawlessWidescreen adalah jalan pintas, saya harus memberikan izin yang lebih tinggi sehingga saya tidak perlu menjalankan aplikasi sebagai admin sepanjang waktu.

Saya juga ingin tahu apakah ada di antara Anda yang tahu cara memeriksa apakah BioShock2 ditutup sehingga program lain juga akan ditutup. Ada ide?

Terima kasih

Sunting: Saya juga ingin menambahkan bahwa game lain yang saya coba luncurkan dengan baik.

0
ShadyOrb09 28 Juli 2016, 16:34
Jika Anda menyimpan hasil proses, Anda dapat memeriksa apakah itu masih hidup
 – 
BugFinder
28 Juli 2016, 16:37
Ubah awal dengan objek ProcessStartInfo tempat Anda menyetel EnableRaisingEvents = true. Kemudian simpan proses yang dimulai dalam sebuah variabel dan kaitkan event Exited. Pertahankan aplikasi Anda tetap hidup sampai saat itu. (msdn.microsoft. com/en-us/library/…)
 – 
Maximilian Gerhardt
28 Juli 2016, 16:39
5
Mengapa nama kelas program Anda adalah SecurityException : SystemException? Silakan ubah ke Program
 – 
OrMiz
28 Juli 2016, 16:41

1 menjawab

Jawaban Terbaik

Memperbaikinya dengan menggunakan WorkingDirectory.

ProcessStartInfo bioshock2Info = new ProcessStartInfo();
bioshock2Info.FileName = (@"F:\Steam Library\steamapps\common\BioShock 2\SP\Builds\Binaries\Bioshock2.exe");
bioshock2Info.WorkingDirectory = Path.GetDirectoryName(@"F:\Steam Library\steamapps\common\BioShock 2\SP\Builds\Binaries\Bioshock2.exe");
Process bioshock2 = Process.Start(bioshock2Info);
2
ShadyOrb09 6 Agustus 2016, 02:54