Wstawka do batcha

0

Witam. Chciałbym zrobić wkładkę do batcha, ale nie wiem jak wyświetlić coś w batchu, tak abym mógł to odczytać funkcją errorlevel. Przykładowo:

 
Var
 a:string;
Begin
 a:=plyplyply;
end.
@echo off
nazwaprogramu.exe
echo %errorlevel%
1

EXE:

Program NazwaProgramu;
Var
 a:string;
Begin
  a:=plyplyply;
  //domyślnie ExitCode:=0;
  If JakisWarunek1 then ExitCode:=1;
  If JakisBlad1 then ExitCode:=2;
end.

BAT:

@echo off
NazwaProgramu.exe
echo %errorlevel% //errorlevel=1 jeśli w programie NazwaProgramu.exe był spełniony warunek JakisWarunek1
                 //errorlevel=2 jeśli w programie NazwaProgramu.exe wystąpił błąd JakisBlad1
                 //domyślnie errorlevel = 0
0

Dziękuję, ale jak wyświetlić zmienną typu string? Albo jakiś tekst?

0

Może tekst zapisać do pliku a w batchu wyświetlić plik poleceniem Type

0

Chciałem zrobić coś w stylu sterownika keyboard. Program czeka na naciśnięcie klawisza a następnie zwraca wartość do errorlevel. Wiem jak to zrobić, tylko chodzi mi właśnie o zwracanie tej wartości.

0

Wiem że nie minęło 24 godziny, ale pół godziny szybciej robię refresz.

0
DarkSlayer napisał(a):

Wiem że nie minęło 24 godziny, ale pół godziny szybciej robię refresz.

Dostałeś odpowiedź, tylko jesteś zbyt głupi żeby ją zrozumieć. Próbujesz wymyślić koło od nowa.

0

Chodzi o odpowiedź Pelsty czy Xitama? Bo nie chodziło mi o odpowiedź Pelsty a od Xitama nie znalazłem nic o tym, same komendy dosa. Chodziło mi o to aby zrobić coś podobnego do keyboard.exe w batchu.

@echo off
keyboard
echo %errorlevel%

Czeka na naciśnięcie przycisku i zwraca jego wartość w ansi. A jak zrobić aby w Pascalu wyświetlić tekst, bo cyfry napisał kolega wcześniej.

1
DarkSlayer napisał(a):

Czeka na naciśnięcie przycisku i zwraca jego wartość w ansi. A jak zrobić aby w Pascalu wyświetlić tekst, bo cyfry napisał kolega wcześniej.

1.Zaakceptowałeś już odpowiedź. Czyli problem rozwiązany, czyż nie? Nie umiesz pytać to i masz problem żeby zaakceptować odpowiedź.
2. Nie posiadasz TBrain i nie potrafisz powiązać faktów. Tobie trzeba dać kod, bo inaczej będziesz bumpować i czekać na gotowca, a na wszelkie odpowiedzi będziesz patrzeć tak: Nie ma gotowca? To na co mi to.
Czekaj sobie na kogoś kto ci pomoże w twojej głupocie. Ja się pod tym nie piszę.

2

@DarkSlayer: przepraszam, ale czy jesteś w jakiś sposób ograniczony? Nie rozumiesz słowa pisanego czy coś w tym stylu? Przecież @marogo dał Tobie jasną odpowiedź. Jaki problem aby ExitCode wynosiło Ord(Znak)?

0

Łatwiej by było jakby dawało znak, ale na to co napisałeś olesio wpadłem wcześniej. Troszkę się męczyłem bo zamiast Orb to pisałem char/chr. Dzięki wam gra i buczy :P Podzielę się kodem jaki "zrobiłem".

uses Crt;
begin
 if keypressed then exitcode:=ord(readkey);
end.

Jeżeli wciśnięty guzik to zwraca jego wartość. Może komuś bawiącego się w batchu przyda się(np. w jakimś scroolu czy filmiku).

1

Z tego co pamiętam, to po wciśnięciu klawisza funkcyjnego, ReadKey zwraca #0 a właściwy kod klawisza odczyta się kolejnym wywołaniem ReadKey. Pewnie dotyczy to również jakichś innych klawiszy nie-alfanumerycznych.

0

O wielkie dzięki, teraz próbuję pisać grę i musiałem wykorzystać wsad bo strzałki nie działały.

0

Heh - pisać grę w batchu wspierając się zewnętrznym programem w FPC? To już lepiej całośc napisać w FPC, a będzie prościej, więcej możliwości

True. Batch służy do tworzenia skryptów do kompilacji gier, nie do tworzenia gier.

i nikt w prosty sposób nie podejrzy oraz nie wyedytuje zawartości batcha "psując" grę ;/

Tja, bo w notatniku nie otworzy? IDA i jedziemy... Dziwi mnie to przekonania o 'nienaruszalności' plików PE. To że trzeba mieć lepsze narzędzie jeszcze nie znaczy że nawet bez jakiejś dużej wiedzy można zmodyfikować (kursów w necie masa).

0
-123oho napisał(a)

Tja, bo w notatniku nie otworzy? IDA i jedziemy... Dziwi mnie to przekonania o 'nienaruszalności' plików PE. To że trzeba mieć lepsze narzędzie jeszcze nie znaczy że nawet bez jakiejś dużej wiedzy można zmodyfikować (kursów w necie masa).

Toć ja nie twierdzę, że nie można użyć zewnętrznych narzędzi. Ale pospolita tak zwana lama (a takich pełno niestety, a może i stety) w exeku grzebać raczej nie będzie. A na swoim blogu w jednym z wpisów pokazałem, że nie protectnięty exek Delphi VCL równie szybko idziej zmodyfikowac posiłkując się IDR, co grzebiąc bezpośrednio w źródłach. To samo inne exeki Windowsowe pod chociażby IDA bardzo łątwo można analizować, co pokazałem na przykładzie ConEmu. Podsumowując: wszystko da się zrobić, jeżeli tylko wiemy co robimy i robimy to z głową. Chodzi o to, że otwierając exek w zwykłym notatniku za wiele nie zobaczymy, a otwierając batcha już tak.

0

Batch to język skryptowy, ale ja go nazywam open sourcowy :P Jak byłem na pewnym forum to się nim bawiłem, ale mnie zbanowali za zmienienie każdego posta na "A ten tego :P". A to teraz to było tylko tak dla testów.

0
olesio napisał(a):

Toć ja nie twierdzę, że nie można użyć zewnętrznych narzędzi. Ale pospolita tak zwana lama (a takich pełno niestety, a może i stety) w exeku grzebać raczej nie będzie. A na swoim blogu w jednym z wpisów pokazałem, że nie protectnięty exek Delphi VCL równie szybko idziej zmodyfikowac posiłkując się IDR, co grzebiąc bezpośrednio w źródłach. To samo inne exeki Windowsowe pod chociażby IDA bardzo łątwo można analizować, co pokazałem na przykładzie ConEmu. Podsumowując: wszystko da się zrobić, jeżeli tylko wiemy co robimy i robimy to z głową. Chodzi o to, że otwierając exek w zwykłym notatniku za wiele nie zobaczymy, a otwierając batcha już tak.

I co taka lama zrobi z batchem? Zmieni zawartość na wirusa?
Ani jedno ani drugie jakieś trudne specjalnie nie jest, kwestia determinacji i wiedzy. Ale nieprotectowanego EXE jeszcze bym nie traktował w kwestii dobrze zabezpieczone :P

Btw. Nie wiedziałem że masz blog . Will take a look on ur malware later on.

Batch to język skryptowy, ale ja go nazywam open sourcowy

Powtórz: Interpretowany

Jak byłem na pewnym forum to się nim bawiłem, ale mnie zbanowali za zmienienie każdego posta

Żeś się pochwalił.

0

Witam. Ponownie mam problem. W free pascalu działa ExitCode:=1; ale w turbo pascalu już nie. Można to jakoś obejść? Używanie free pascala odpada gdyż nie działa tam mysz.

0

Witam. Ponownie mam problem. W free pascalu działa ExitCode:=1; ale w turbo pascalu już nie. Można to jakoś obejść? Używanie free pascala odpada gdyż nie działa tam mysz.

A czemu nie zrobisz nowego tematu? Bo ten się nazywa "Wszystkie pytania od DarkSlayera"?? Następnym razem ogar tworzenie tematów.
Używasz DOSa? Jeżeli to Windows to mam dla ciebie dobrą wiadomość: Jest FPC pod Windows, nawet jest śliśtaśne GUI: Lazarus.

I po co robisz ten offtop? Kogo obchodzi twoja "wiedza" na temat reverse engineeringu?

Ciebie skoro odpisujesz.

To że widziałeś Syser, OllyDbg, IDA czy starsze zabytki jak SoftICE i w32Dasm umiesz użyć Hiew i pisałeś programy w asm pod debug nie czyni z ciebie crackersa.

Nie twierdzę że jestem pr0, po prostu złamałem parę prostych zabezpieczeń i piszę swoje. Więc to czy jestem crackersem zależy od twojej definicji. Zresztą, podobno ciebie to nie obchodzi?

0

Ponownie mam problem. W free pascalu działa ExitCode:=1; ale w turbo pascalu już nie. Można to jakoś obejść? Używanie free pascala odpada gdyż nie działa tam mysz.

Piszesz pod 128 MHz komputery z DOS'em, że używasz jeszcze Turbo Pascala?
Jestem pewien, że FPC obsługuje wszystko, co Turbo Pascal - wystarczy poszukać.

0

Poszukałem za Ciebie... Masz tu kilka linków odnośnie FPC i myszki:

Czytaj, czytaj, czytaj...

0

Najlepiej pobierz moduł WinGraph.
Masz w zestawie WinGraph do grafiki, WinCRT do wczytywania tekstu etc. oraz WinMouse do obsługi myszki.
Czasami także z niego korzystam, jak potrzebuję coś zrobić, a i więcej możliwości w porównaniu do zwykłego unitu Graph.

0
``` Uses Mouse,CRT; Var Butt,MX,MY:Word; Begin InitMouse; ShowMouse; Butt:=GetMouseButtons; MX:=GetMouseX; MY:=GetMouseY; ExitCode:=MX; Delay(1000); End. ``` Ten kod po uruchomieniu powinien zwracać wartość x myszki do konsoli ale zwraca zero, wie ktoś dlaczego? A dopisałem się do tego tematu bo chodzi o exitcode. Teraz mam kolejny problem. Jak połączyć zmienne MX i MY w jedną? Np. MX ma wartość 1 a MY 2, jak zrobić aby A miała 12?
0

Teraz mam kolejny problem. Jak połączyć zmienne MX i MY w jedną? Np. MX ma wartość 1 a MY 2, jak zrobić aby A miała 12?

10 = 1*10 + 0*1
12 = 1*10 + 2*1
1024 = 1*1000 + 0*100 + 2*10 + 4*1

lub, skoro są to zmienne typu word:
zmienna_typu_integer = mx << 16 | my
w Pascalu to będzie: zmienna_typu_integer := (mx shl 16) or my.
W tym wypadku pierwsze 16 bitów to będzie zmienna mx, a następne to my.

1

Teraz mam kolejny problem. Jak połączyć zmienne MX i MY w jedną? Np. MX ma wartość 1 a MY 2, jak zrobić aby A miała 12?

Czy to jest forum czy jakiś czat gdzie wyskakujesz z pytaniami co parę godzin? Naucz się rozwiązywać problemy a nie pytać na forum.

1 użytkowników online, w tym zalogowanych: 0, gości: 1