Skocz do zawartości
s0n1c

[batch/c++] Pomoc W Zrobieniu Loadera.

Rekomendowane odpowiedzi

Witam, napisalem sobie prostego loadera:

 

@echo offtitle Wybierz Emulatorclsecho.echo 1. ePSXe 1.6echo 2. ePSXe 1.5.2echo 3. SSSPSX 0.0.3.4echo.set /p choice=Wybierz emulator: if not '%choice%'=='' set choice=%choice:~0,1%if '%choice%'=='1' goto ePSXe160if '%choice%'=='2' goto ePSXe152if '%choice%'=='3' goto SSSPSX0034: ePSXe160start D:\PROGRA~1\ePSXe\ePSXe160.exegoto end: ePSXe152start D:\PROGRA~1\ePSXe\ePSXe152.exegoto end: SSSPSX0034start D:\PROGRA~1\ePSXe\SSSPSX\SSSPSX.exe: end
Moje pytanie brzmi: Czy jest jakas komenda, dzieki ktorej nie bedzie trzeba naciskac ENTER bo wybraniu opcji? (Zeby wystarczalo nacisniecie samego klawisza cyfry).

 

A teraz prosba dla ludzi potrafiacych programowac w okienkach.

Jak wiadomo potrzeba (lenistwo - po co mam dotykac klawiatury, jak moge wybrac myszka) jest matka wynalazkow.

Niestety moja znajmosc programowania na razie ogranicza sie do programow pod console, a chcialbym napisac sobie loadera pod okienka.

Wiem, ze taka aplikacja praktycznie ogranicza sie do 1 formy, labela (opcjonalnie) i 3 buttonow. (I think so)

Niestety brakuje mi wiedzy co nalezy wpisac w buttony. I tutaj kieruje prosbe do uzytkownikow, czy ktos byl by na tyle uprzejmy, zeby napisac mi taka aplikacje. Najlepiej jak by byla w c++ bo wtedy moglbym takze troche przestudiowac kod.

Jesli chodzi o wyglada formy to moge wykonac, tylko ze ona by byla pod/w CLR. (VS C++ 2005 EE).

Edytowane przez s0n1c

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Troche "dlugo" sie laduje, ale wielkie dzieki za poswiecony czas.

 

Wracaja co skryptu batch, jest w ogole taka mozliwosc?

Oczywiscie nadal czekam an wersje/propozycje rozwiazania c++.

 

"Dlugo" tzn, nie potrzebnie jest przeskalowanie. (z duzego okienka na normalnej wielkosci).

Edytowane przez s0n1c

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

C++ .Net / forma z 1 przyciskiem

 

 

 

edit, za kilka minut, bo napisalem w c# zamiast c++

 

» Naciśnij, żeby pokazać/ukryć tekst oznaczony jako spoiler... «

 

edit 2

 

using namespace System::Diagnostics;

button

Process^ myprocess= gcnew Process();		myprocess->Start("c:\\winxp\\notepad.exe");

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Cos strasznie jestem oporny. Nie wiem zbyt dokaldnie gdzie to umiescic.

Umieszczam w zalaczniku gotowa forme. Jesli mozna to prosilbym umieszczenie tutaj pelnego kodu programu (wzgledem mojej formy), lub uzupelniona w kod i zamieszczona gdzies, zebym mogl sobie porownac. Jeszcze raz dzieki za zainteresowanie.

Edytowane przez s0n1c

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Mozna powiedziec, ze skojarzylem:

» Naciśnij, żeby pokazać/ukryć tekst oznaczony jako spoiler... «

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Diagnostics;
U mnie to:

using namespace System;using namespace System::ComponentModel;using namespace System::Collections;using namespace System::Windows::Forms;using namespace System::Data;using namespace System::Drawing;using namespace System::Text;using namespace System::Diagnostics;

» Naciśnij, żeby pokazać/ukryć tekst oznaczony jako spoiler... «

private void button1_Click(object sender, EventArgs e)		{			Process myprocess = new Process();			myprocess.StartInfo.FileName = "c:\\winxp\\notepad.exe";			myprocess.Start();		}
U mnie to:

private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e)		 {			Process myprocess = new Process();			myprocess.StartInfo.FileName = "c:\\winxp\\notepad.exe";			myprocess.Start();		 }
"c:\\winxp\\notepad.exe" <- Oczywiscie w tym miejscu adres do aplikacji

Do tego nie jestem pewien czy:

» Naciśnij, żeby pokazać/ukryć tekst oznaczony jako spoiler... «

public partial class Form1 : Form	{		public Form1()		{			InitializeComponent();		}
to u mnie:

public:		Form1(void)		{			InitializeComponent();			//			//TODO: Add the constructor code here			//		}

Co do reszty to nie mam wiekszej pewnosci gdzie zahaczyc.

 

Nie wiem czy srodowisko mnie przerasta, ale za czasow Borland c++ 6 po utworzeniu formy, bylo tak jakos przejrzysciej i jasniej.

Edytowane przez s0n1c

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Pierwszy kod w spoilerze tak jak napisałem przez pomyłke napisalem w C# zamiast c++.

 

To po drugim edit jest dla c++.

Using juz dodales.

Wstaw pod obsługe przycisku jeszcze prawidowy kod w c++

Process^ myprocess= gcnew Process();		myprocess->Start("c:\\winxp\\notepad.exe");

Reszta kodu jest niewazna i nic tam nie zmieniaj.

 

W vc++ rzeczywiscie nawalone jest troche duzo kodu, bo są dopisane tez informacje co gdzie lezy na formie.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

No, wkoncu zrobione.

 

private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) 		 {			Process^ myprocess= gcnew Process();			myprocess->Start("D:\\Program Files\\ePSXe\\ePSXe160.exe");			Application::Exit();		 }
Jak widac ten kod od C# ladnie mnie mylil. (Myslalem, ze po edycji bledny kod zostal poprawiony. A nie skojarzylem, ze zwiniety przez spoiler to olac).

 

Tylko przeraza mnie szybkosc dzialania i pamieciozernosc.

39,5KB pochlania 15MB :blink: Do tego speed wolniejszy od uruchamiania samego emulatora.

 

Do zwyklej formy zostaly dodane tylko instrukcje do 3 przyciskow. Co powoduje takie cos? .NET?

Edytowane przez s0n1c

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

No wlasnie mnie ta "szybkosc" strasznie dziwi.

3s cold start ~1s pozniejsze.

 

Dla porownania w/w emulatory, winrar, irfan view, etc. Ktore objetosciowo i zlozeniowo so wieksze, uruchamiaja sie rowno z 2 kliknieciem na ikonie! +/-50ms.

 

I wlasnie czy jak by to bylo napisane pod win32 a nie .NET, czy by dzialalo szybciej.

Zobacze jak z pod borlanda 7 bedzie to chodzilo.

 

Btw. Zauwazylem dopiero teraz. Dlaczego nie dziala kompilowanie? (Ctrl+F7, jest nie dostepne)

Edytowane przez s0n1c

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Napisane natywnie pod Win32 dzialaloby duzo, duzo szybciej. Aplikacje .NET'owe maja troche swojego narzutu m.in. przy uruchamianiu. To nie jest technologia do malych aplikacji.

Zrobienie tego natywnie nie jest trudne, z palca nie napisze, bo dawno w WinAPI nie robilem, ale wystarczy znalezc funkcje do odpalania procesow (cos z OpenProcess chyba) i dalej pojechac zgodnie z manualem.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

CreateProcess, ShellExecute lub stary WinExec(ale tego nie powinno się uzywać)

 

Tyle że najpierw trzeba by całą formę napisac i oprogramować od zera. Bez doinstalowanego SDK do windows, VS 2005 Express nie umozliwia pisania okienkowych programów pod win32.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ano fakt.. zapomnialem o formie. Nie wiem jak to wyglada w Express Edition, bo ja uzywam w pracy bardziej przyjaznej wersji.. te SDK jest za free pewnie, tak ? A problemem pewnie jest jego rozmiar? :)

 

Mozna tez napisac konsolowa aplikacje, ktora robi dokladnie to samo co skrypt z pierwszego posta. Mozna tez darowac sobie wywazanie otwartych drzwi i skorzystac z ChoiceEditor'a stworzonego co prawda na potrzeby Total Commander'a, ale dajacego sie ladnie zaadoptowac do Twoich celow:

post-295-1190558491_thumb.jpg

Jesli nie bedzie Ciebie draznila ostatnia opcja "Other program" to powinno Cie to zadowolic. Program ma 20KB i odpala sie blyskawicznie. Dziala w nim i myszka, i klawiatura. Mysle, ze pomoze.

 

http://totalcmd.pl/download/add/add/Choice_Editor

Edytowane przez FiDO

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...