• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Uruchomienie pliku EXE przez przycisk

0 głosów
1,813 wizyt
pytanie zadane 21 maja 2020 w C# przez zdridox Nowicjusz (210 p.)
zmienione kategorie 21 maja 2020 przez ScriptyChris

czy da się zrobić tak że jak mam jedną aplikacje Form1 to klikając przycisk odpala się plik 1.exe

a klikając inny przycisk odpala się plik 2.exe ale żeby wszystko było zawarte w jednym pliku

zastosowanie:

odpalasz plik przyklad.exe

i masz w nim 2 przyciski klikając jeden odpalasz 1.exe a klikając drugi odpalasz 2.exe 

to przyciski

tu musze wpisac kod

po kliknięciu przycisku chcę żeby to się odpalało 

Wszystko robię w visual studio 2017 

komentarz 21 maja 2020 przez zdridox Nowicjusz (210 p.)
chodzi mi o to że nie wiem jak to zrobić :(
komentarz 21 maja 2020 przez j23 Mędrzec (195,220 p.)

ale żeby wszystko było zawarte w jednym pliku

Wszystko, czyli co? Te dwa pliki wykonywalne?

komentarz 21 maja 2020 przez zdridox Nowicjusz (210 p.)
jak mam plik exe to chce żeby były w nim zawarte te 2 pliki wykonywalne
komentarz 21 maja 2020 przez j23 Mędrzec (195,220 p.)

Dodaj te aplikacje do zasobów aplikacji uruchamiającej. Przed uruchomieniem którejś z nich zapisz zasób w katalogu tymczasowym i uruchom np. funkcją ShellExecute.

Od razu mówię, że nie wiem, jak wygląda sprawa z dodawaniem czegokolwiek do zasobów w projektach C++/CLI.

komentarz 21 maja 2020 przez zdridox Nowicjusz (210 p.)
a jesteś w stanie podać mi przykład shellexecute w c#? proszę
komentarz 22 maja 2020 przez j23 Mędrzec (195,220 p.)
Nie.

2 odpowiedzi

+2 głosów
odpowiedź 22 maja 2020 przez Dorion300 Szeryf (90,250 p.)
edycja 22 maja 2020 przez Dorion300

Możesz plik .exe dodać do zasobów, ale nie znam sposobu na bezpośrednie i uniwersalne uruchomienie kodu z pliku zasobów.

Ale taki plik możesz bez problemu wypakować:

using(var fs = File.OpenWrite("hello.exe"))
    fs.Write(Resources.hello);

A następnie uruchomić:

var ps = new System.Diagnostics.Process();
ps.StartInfo.FileName = "hello.exe";
ps.StartInfo.Arguments = "";
ps.StartInfo.UseShellExecute = false;
ps.StartInfo.CreateNoWindow = false;
ps.Start();

W zależności jak chcesz proces uruchomić, tak ustawiasz "StartInfo".

Sprawdź czy w "Properties" nie masz już Pliku zasobów.
Jak nie masz utworzonego zasobu to możesz stworzyć nowy: Dodaj -> Nowy element -> Plik zasobów.
Następnie wchodzisz do Pliku zasobów (z listy plików) i tam dodajesz nowy plik.

Pamiętaj także o lokalizacji gdzie chcesz taki plik .exe wypakować, gdyż jak zrobisz dokładnie tak jak ci podałem, oraz uruchomisz program główny ale w innej lokalizacji, (np. poprzez terminal jednocześnie znajdując się w folderze innym niż plik wykonalny programu głównego) to plik zostanie wypakowany w folderze w którym się obecnie znajdujesz.

komentarz 22 maja 2020 przez JakSky Stary wyjadacz (14,770 p.)
Nie trzeba otwierać pliku i nie trzeba mieć go w zasobach z tego co wiem.
komentarz 22 maja 2020 przez zdridox Nowicjusz (210 p.)

@Dorion300, 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using (var fs = File.OpenWrite("WallHack.exe")) fs.Write(Resources.WallHack);

namespace cheatpack
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

            var ps = new System.Diagnostics.Process();
            ps.StartInfo.FileName = "WallHack.exe";
            ps.StartInfo.Arguments = "";
            ps.StartInfo.UseShellExecute = false;
            ps.StartInfo.CreateNoWindow = false;
            ps.Start();


        }
    }

 

wyskakuje 10 błędów:

 

1: oczekiwano identyfikatora

2: oczekiwano średnika (;)

3: oczekiwano znaku )

4:   Oczekiwano definicji typu lub przestrzeni nazw albo znacznika końca pliku.   

5:Przestrzeń nazw nie może bezpośrednio zawierać składowych, takich jak pola lub metody

6: oczekiwano znaku )

7:Oczekiwano definicji typu lub przestrzeni nazw albo znacznika końca pliku.   

8:Przestrzeń nazw nie może bezpośrednio zawierać składowych, takich jak pola lub metody

9:Krotka musi zawierać co najmniej dwa elementy.

10:Oczekiwano definicji typu lub przestrzeni nazw albo znacznika końca pliku.

 

+ tutaj wyskakuje brak określonego pliku

 

Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());

 

sory ale jestem początkującym i nie umiem prawie nic ale jak umiesz mi pomóc z tym będę bardzo wdzięczny

 

 

komentarz 22 maja 2020 przez Dorion300 Szeryf (90,250 p.)

@zdridox
Słowo "using" można używać dwojako:
1.Aby skracać i nie pisać za każdym razem przestrzeń nazw w którym dana klasa (lub inny obiekt) się znajduje.
2.Aby automatycznie zwolnił zasoby wskazanego obiektu w nawiasach. (wskazany obiekt musi dziedziczyć IDisposable)
Czyli nie będziesz musiał ręcznie zamykać, zwalniać. (np. fs.close())

Ten kod z using musisz wkleić do metody "button1_Click".

@JakSky
Tak, nie trzeba mieć go w zasobach.
Ale tego chciał użytkownik @zdridox.

jak mam plik exe to chce żeby były w nim zawarte te 2 pliki wykonywalne

+1 głos
odpowiedź 22 maja 2020 przez JakSky Stary wyjadacz (14,770 p.)

Użyj tego:

System.Diagnostics.Process.Start("app.exe");

 

komentarz 22 maja 2020 przez zdridox Nowicjusz (210 p.)
to by działało ale musiałbym dodać ten plik exe do systemu32 jak wiesz jak to zrobić i mógłbyś mi powiedzieć byłbym wdzięczny :)
komentarz 9 kwietnia 2023 przez Stanisław Juszczyk Nowicjusz (100 p.)

@JakSky, Dzięki, wszystko działa.

Podobne pytania

+1 głos
1 odpowiedź 331 wizyt
pytanie zadane 6 lutego 2017 w Systemy operacyjne, programy przez niko64 Użytkownik (630 p.)
0 głosów
1 odpowiedź 521 wizyt
pytanie zadane 6 grudnia 2016 w C i C++ przez niezalogowany
0 głosów
1 odpowiedź 890 wizyt
pytanie zadane 28 lipca 2016 w Sieci komputerowe, internet przez Dash Nałogowiec (29,650 p.)

93,743 zapytań

142,682 odpowiedzi

323,299 komentarzy

63,330 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...