|
|
Generowanie prostej aplikacji konsolowej |
Autor |
Wiadomość |
iamiam
Bohater
 
Pojedynki: tak
Pomógł: 1 raz Posty: 60
7974 Prestiż
|
Wysłany: 20-05-2011, 19:01 Generowanie prostej aplikacji konsolowej
|
|
|
Nie, ten poradnik nie będzie miał większego sensu. Pokaże tutaj, jak zrobić w MMF2 (no, nie tylko) program, który wygeneruje malutką aplikację konsolową, która napisze komunikat, poczeka na naciśnięcie entera i się zamknie. Oczywiście wszystko w jednym pliku.
1. Najwpierwiej musimy utworzyć takową aplikację, ja zrobię ją w Delphi 2007, równie dobrze można ją wykonać w innych wersjach Delphi, Pascalu, czy C++ i innych. Kod w Delphi wyglądał będzie tak:
Kod: | program Temp;
{$APPTYPE CONSOLE}
var
x : PChar;
begin
x := 'Jestem inny i dobrze mi z tym =] Jestem inny i dobrze mi z tym =] Jestem inny i dobrze mi z tym =] Jestem inny i dobrze mi z tym =] Jestem inny i dobrze mi z tym =] Jestem inny i dobrze mi z tym =] Jestem inny i dobrze mi z tym =] Jestem inny i dobrze mi';
write(x);
readln;
end. |
Inicjujemy zmienną typu PChar, bo zajmuje mniej miejsca niż string, i wypełniamy ją całym możliwym tekstem 255 znakowym (jeśli zrobimy to statycznie, przy deklaracji, aplikacja zajmuje ciut więcej). Następnie wpisujemy ją na ekran i czekamy aż użytkownik ciśnie w enter (może coś tam sobie jeszcze napisać). Jeśli nie chce się ci tego robić, ściągnij gotowy program: TUTAJ. Teraz otwórz to jakimś hex edytorem. Znajdź tekst zmiennej w pliku, zapisz pozycję jego początku (u mnie 34E4), i zastąp cały ten tekst wartościami #00 (tekst zamieni się w kropki). Otwórz kalkulator, Widok > Naukowy, Hex, wpisz pozycję początku tekstu (u mnie 34E4), i naciśnij na Dec. Zapisz sobie gdzieś tą liczbę (u mnie 13540), bo to w to miejsce będziemy wpisywać do pliku tekst. Zapisz aplikację, możesz ją uruchomić, powinna pojawić się pusta konsola i zamknąć po naciśnięciu entera.
2. Teraz stworzymy w MMF-ie aplikację, która tak-jakby stworzy tą że aplikację konsolową. Dodajemy 4 obiekty - Edit, Button, Binary, Common Dialog. Zwiększamy szerokość Edit-a, nie pozwalamy na automatyczne przewijanie (komunikat może zawierać maksymalnie 255 znaków). Nadajemy Button-owi napis "Zapisz aplikację", zmianiamy jego rozmiar i rozmiar aplikacji, tak aby wszystko dobrze wyglądało i ustawiamy Common Dialog na zapisywanie aplikacji (*.exe). Teraz plik "komunikat.exe" kopiujemy, najlepiej prosto na jakiś dysk, u mnie na dysk D, tak, by jego ścieżką była "D:\komunikat.exe". W MMF-ie klikamy prawym przyciskiem na naszej aplikcji, w oknie "Workspace Toolbar", i wybieramy z menu "Data Elements". Przechodzimy do zakładki "Binary data", klikamy przycisk "Add" i wybieramy naszą aplikcję "komunikat.exe". Jeśli na listę dodało się "D:\komunikat.exe" to wszystko jest git i możesz zamknąć już to okno. Teraz przejdź do zdarzeń aplikacji i utwórz następujące:
Cytat: | Button > Button clicked? --->>
- // Pokazuje zapisywanie pliku ...
- Common dialog > Show open dialog
Common Dialog > After open dialog --->>
- // Wypakowywujemy aplikację
- Special Conditions > Binary files > Extract binary file >
\komunikat.exe
-
- // Otwieranie aplikacji
- Binary object > Load binary from file > BinFileTempName$(D:\komunikat.exe)
-
- // Wpisywanie komunikatu w aplikację
- Binary object > Replace Bytes > Set string at > Edittext$( Edit Box ) > 13540 (* tutaj zaczyna się tekst w aplikacji *)
-
- // Zapisanie aplikacji
- Binary object > Save binary to file > GetFilename$( Common Dialog object )
-
- // Usunięcie wypakowanej aplikacji
- Special Conditions > Binary files > Release binary file >
\komunikat.exe
|
Teraz możesz zapisać aplikację MMF-owską, wygenerowana, nie potrzebuje już żadnych zewnętrzych plików. Tada, działa. |
_________________ #define TRUE FALSE |
|
|
|
 |
Minty
Stwórczyni omc dr fizyki
 
Pojedynki: być może
Pomogła: 259 razy Posty: 3446
33789 Prestiż
|
Wysłany: 20-05-2011, 19:16
|
|
|
To się chyba szczególnie nadaje do programów użytkowych: tworzymy takowy w np. Delphi, a aplikacja w MMF2 robi za swojego rodzaju GUI. |
|
|
|
 |
iamiam
Bohater
 
Pojedynki: tak
Pomógł: 1 raz Posty: 60
7974 Prestiż
|
Wysłany: 20-05-2011, 19:49
|
|
|
No nie wiem, czy do końca zrozumiałeś o co tu chodzi Wpisuje się do edit-a tekst, który ma się wyświetlić w aplikacji, klika się na przycisk i aplikacja się tworzy. Po otworzeniu tej aplikacji, mamy wpisany wcześniej, w poprzedni program tekst. Czyli łopatologiczniej - takie "stworzenie działającej aplikacji", w aplikacji stworzonej w MMF-ie. |
_________________ #define TRUE FALSE |
|
|
|
 |
Minty
Stwórczyni omc dr fizyki
 
Pojedynki: być może
Pomogła: 259 razy Posty: 3446
33789 Prestiż
|
Wysłany: 20-05-2011, 20:39
|
|
|
Czyli jakie jest właściwie potencjalne zastosowanie takiego programu klikowego? Bo ja widzę tylko ładną integrację z programem konsolowym w formie GUI. |
|
|
|
 |
iamiam
Bohater
 
Pojedynki: tak
Pomógł: 1 raz Posty: 60
7974 Prestiż
|
Wysłany: 20-05-2011, 20:57
|
|
|
Oprócz wpisywania danych do innego exeka, to żadne |
_________________ #define TRUE FALSE |
|
|
|
 |
Kira
Starszy szeregowy
 
Posty: 10
102 Prestiż
|
Wysłany: 31-05-2011, 17:12
|
|
|
Nie lepiej tak:
1.Tworzymy nowy projekt w MMF2.
2.Wstawiamy obiekt console.
3.W opcjach projektu ustawiamy "Hidden at start".
4.Dodajemy Zdarzenie "Start of frame >> Open console, Write string 'LoL' ".
Co do Twojego sposobu to w końcu tym komuś kompa rozwalisz .
Tekst nie zawsze będzie występował na pozycji 13540 to zależy od kompilatora i długości tekstu.
Albo wstaw tekst o długości 2mb do pliku 1 mb co zapewne zakryjesz sekcje pliku co spowoduje crash aplikacji.
Poczytaj pierw o budowie plików portable executable (.exe). |
|
|
|
 |
iamiam
Bohater
 
Pojedynki: tak
Pomógł: 1 raz Posty: 60
7974 Prestiż
|
Wysłany: 01-06-2011, 18:43
|
|
|
Nie, chciałem tylko pokazać jak to zrobić w innej aplikacji, że pliki .exe można swobodnie edytować tak jak i każde inne.
Kira napisał/a: | Tekst nie zawsze będzie występował na pozycji 13540 to zależy od kompilatora i długości tekstu. |
iamiam napisał/a: | Znajdź tekst zmiennej w pliku, zapisz pozycję jego początku (u mnie 34E4) |
Plik się nie zepsuje, bo w editboxie nie mieści się nawet te 255 znaków, o to się nie martw. |
_________________ #define TRUE FALSE |
|
|
|
 |
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum
|
Dodaj temat do Ulubionych Wersja do druku
|
|