Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Rekomendowane odpowiedzi

Opublikowano

­Witam,

 

Mam plik napisany w autoit, jak mam zrobić by z pliku TXT to co tam jest napisane wpisywało się w ten program?

Opublikowano

Co czytało, sprecyzuj .

  Chcesz zrobić exek z pliku co masz to użyj Scite.

 

Jeśli chodzi o wczytanie zawartości pliku to komendy związane z FileOpen

Mózg to nie mydło; nie ubędzie Ci go, gdy go użyjesz.

Opublikowano

­

 

Co czytało, sprecyzuj .

  Chcesz zrobić exek z pliku co masz to użyj Scite.

 

Jeśli chodzi o wczytanie zawartości pliku to komendy związane z FileOpen

 

Mam plik txt, a w tym pliku txt komendy autoit.

Co mam wpisac by te komendy wczytalo z txt do autoit?

Opublikowano

Ale chodzi chyba o to aby w już gotowym programie EXE załadować plik TXT i wykonać z niego komendy?


int o = 1, y = 1;

while(o == y && y < o && o < y){

printf("Co ja tworze....");

}

Opublikowano

Dla kogoś piszącego skrypty w AutoIt wyraźnie napisał że ma gotowy skrypt ( jak to napisał KOMENDY, napisany ) i chce go zamienić na program. 

 

Nadal nie zajarzył że należy skrypt wczytać w edytorze Scite i w nim skompilować sobie na exe CTRL+F7. Informatyk jak widać to z niego żaden jak w prosty sposób nie potrafi powiedzieć czego chce albo co chce zrobić.

Mózg to nie mydło; nie ubędzie Ci go, gdy go użyjesz.

Opublikowano

­

 

Dla kogoś piszącego skrypty w AutoIt wyraźnie napisał że ma gotowy skrypt ( jak to napisał KOMENDY, napisany ) i chce go zamienić na program. 

 

Nadal nie zajarzył że należy skrypt wczytać w edytorze Scite i w nim skompilować sobie na exe CTRL+F7. Informatyk jak widać to z niego żaden jak w prosty sposób nie potrafi powiedzieć czego chce albo co chce zrobić.

 

Zajrzałem, a to że nie odpisałem nie oznacza iż nie zrozumiałem twojej odpowiedzi. :D

I wiem jak komplikować lecz wcześniej pytałem o to czy da się z tego txt czytać TZN

 

Plik txt >> Plik Exe

 

I dziękuje za odpowiedź wcześniejszą leci +.

 

I mógł byś mi to wytłumaczyć?

"Nadal nie zajarzył że należy skrypt wczytać w edytorze Scite i w nim skompilować sobie na exe CTRL+F7. Informatyk jak widać to z niego żaden jak w prosty sposób nie potrafi powiedzieć czego chce albo co chce zrobić."

 

Przecież nie jestem aż taki tępy bym nie wiedział że to robi się w edytorze, a napisałem ci dokładnie o co chodzi...

 

 

EDIT

Chociaż jak tak patrze to źle się wysłowiłem w pytaniu :D

Chodzi dokładnie mi o to że napisałem skrypt piszący skrypty, a za długo by mi zajęło co chwile kopiowanie ich i wklejanie oraz robienie EXE.

I chciałem by zapisywało skrypty w TXT, a potem EXE czytało z tego jednego TXT które się co jakiś czas w kodzie zmienia.

Opublikowano

Z tego co wiem to AutoIT nie ma wbudowanej takiej możliwości, ale oczywiście jacyś ludzie wymyślili i napisali Au3Int, który spełni twoje wymagania: http://www.autoitscript.com/forum/topic/114330-autoit3-interpreter/ Jeśli chcesz aby można było zamieniać na .exe, to program musi dźwigać cały kompilator i go uruchamiać.
 
PS: Swoją drogą jesteś pewien że potrzebujesz czegoś takiego, że nie da się rozwiązać tego normalnymi sposobami?

Opublikowano

­

 

Z tego co wiem to AutoIT nie ma wbudowanej takiej możliwości, ale oczywiście jacyś ludzie wymyślili i napisali Au3Int, który spełni twoje wymagania: http://www.autoitscript.com/forum/topic/114330-autoit3-interpreter/ Jeśli chcesz aby można było zamieniać na .exe, to program musi dźwigać cały kompilator i go uruchamiać.
 
PS: Swoją drogą jesteś pewien że potrzebujesz czegoś takiego, że nie da się rozwiązać tego normalnymi sposobami?

 

Chyba nie, ale w sumie to sam nie wiem. Robię to tak bym nie miał z tym problemu, choć bym miał robić to dłużej. :P

Nagrywam klawisze na Hooku z niego one ida do pliku txt, a z niego mialy by trafiac do exe.

 

Kod hook mniej wiecej tak wyglada (dam przyklad na jednym)

HotKeySet("{UP}", "W")

Func W()
FileWriteLine("KOD.txt","Send('{UP down}')")
FileWriteLine("KOD.txt","Sleep(100)")
FileWriteLine("KOD.txt","Send('{UP up}')")
EndFunc

Sens polega na tym ze "program" zapisuje jak chodzę w grze, przez co mogę później za pomocą kodu to odwzorować.

Opublikowano

­

 

i jaki problem jest zapisywac sama tresc send, a nastepnie odczytywac?

 

Taki ze send nie dziala w tej grze :<

Opublikowano

Znacznie prościej wymyślić jakiś prosty sposób zapisu tych zdarzeń niż zapisywać to w kodzie i zaprzęgać do roboty cały interpreter języka. Przykład:

 

 

HotKeySet("{UP}", W)
HotKeySet("{F7}", odtworz)

While True
    Sleep(100)
Wend

Func W()
FileWriteLine("KOD.txt","K{UP down}")
FileWriteLine("KOD.txt","S100")
FileWriteLine("KOD.txt","K{UP up}")
EndFunc

Func odtworz()

    $plik = Fileopen("KOD.txt")

    $t = FileRead($plik, 1)
    $data = FileReadline($plik)

    While (NOT @error)

        Switch $t
            Case "K"
                Send($data)
            Case "S"
                Sleep($data)
        EndSwitch

        $t = FileRead($plik, 1)
        $data = FileReadline($plik)
    WEnd

    FileClose($plik)
EndFunc

 

 

Opublikowano

­

 

Znacznie prościej wymyślić jakiś prosty sposób zapisu tych zdarzeń niż zapisywać to w kodzie i zaprzęgać do roboty cały interpreter języka. Przykład:

 

 

HotKeySet("{UP}", W)
HotKeySet("{F7}", odtworz)

While True
    Sleep(100)
Wend

Func W()
FileWriteLine("KOD.txt","K{UP down}")
FileWriteLine("KOD.txt","S100")
FileWriteLine("KOD.txt","K{UP up}")
EndFunc

Func odtworz()

    $plik = Fileopen("KOD.txt")

    $t = FileRead($plik, 1)
    $data = FileReadline($plik)

    While (NOT @error)

        Switch $t
            Case "K"
                Send($data)
            Case "S"
                Sleep($data)
        EndSwitch

        $t = FileRead($plik, 1)
        $data = FileReadline($plik)
    WEnd

    FileClose($plik)
EndFunc

 

 

 

Racja ^^ dzięki. Ale chyba zostanę przy starym kodzie ;P

Ale przed chwila coś odkryłem (wcześniej było ok), dlaczego ten hook robi ze nie mogę klikać w grze? Jak by blokował te kliknięcia tak to wyglada.

To normalne czy coś zrobiłem źle w kodzie?

 

KOD HOOKA

#include <FileConstants.au3>

HotKeySet("{UP}", "W")
HotKeySet("{DOWN}", "S")
HotKeySet("{LEFT}", "A")
HotKeySet("{RIGHT}", "D")
HotKeySet("(E)", "E")
HotKeySet("(Z)", "Z")

While 1
    Sleep(100)
WEnd

Func W()
FileWriteLine("KOD.txt","Send('{UP down}')")
FileWriteLine("KOD.txt","Sleep(100)")
FileWriteLine("KOD.txt","Send('{UP up}')")
EndFunc

Func S()
FileWriteLine("KOD.txt","Send('{DOWN down}')")
FileWriteLine("KOD.txt","Sleep(100)")
FileWriteLine("KOD.txt","Send('{DOWN up}')")
EndFunc

Func A()
FileWriteLine("KOD.txt","Send('{LEFT down}')")
FileWriteLine("KOD.txt","Sleep(100)")
FileWriteLine("KOD.txt","Send('{LEFT up}')")
EndFunc

Func D()
FileWriteLine("KOD.txt","Send('{RIGHT down}')")
FileWriteLine("KOD.txt","Sleep(100)")
FileWriteLine("KOD.txt","Send('{RIGHT up}')")
EndFunc

Func E()
FileWriteLine("KOD.txt","Send('{E down}')")
FileWriteLine("KOD.txt","Sleep(100)")
FileWriteLine("KOD.txt","Send('{E up}')")
EndFunc

Func Z()
FileWriteLine("KOD.txt","Send('{Z down}')")
FileWriteLine("KOD.txt","Sleep(100)")
FileWriteLine("KOD.txt","Send('{Z up}')")
EndFunc

KOD GLOWNEGO PROGRAMU

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		 Case $Ilosc
FileWrite("KOD.txt","for $i=1 to ")
FileWriteLine("KOD.txt",GUICtrlRead($il))
		Case $record
		   Run("nagrywacz.exe")
		Case $stop
		   ProcessClose("nagrywacz.exe")
		   FileWriteLine("KOD.txt","next")
	EndSwitch
WEnd
Opublikowano

Najpierw chcesz uzyc komendy send, a nastepnie piszesz ze w grze send nie dziala..

Hotkeyset blokuje calkowicie przycisk, poprostu na poczatku funkcji musisz go wylaczyc, wyslac przycisk i na koniec znowu wlaczyc.

Opublikowano

­

 

Najpierw chcesz uzyc komendy send, a nastepnie piszesz ze w grze send nie dziala..

Hotkeyset blokuje calkowicie przycisk, poprostu na poczatku funkcji musisz go wylaczyc, wyslac przycisk i na koniec znowu wlaczyc.

 

A jak go wylaczyc a potem wyslac?

Opublikowano

Co do kodu : nie lepiej tak?

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1_1 = GUICreate("Nagrywarka", 299, 146, 322, 157)
$up = GUICtrlCreateButton("/\", 40, 16, 41, 41)
GUICtrlSetFont(-1, 30, 400, 0, "MS Sans Serif")
$left = GUICtrlCreateButton("<", 2, 55, 41, 41)
GUICtrlSetFont(-1, 30, 400, 0, "MS Sans Serif")
$right = GUICtrlCreateButton(">", 80, 57, 41, 41)
GUICtrlSetFont(-1, 30, 400, 0, "MS Sans Serif")
$down = GUICtrlCreateButton("\/", 42, 97, 41, 41)
GUICtrlSetFont(-1, 30, 400, 0, "MS Sans Serif")
$run = GUICtrlCreateButton("Uruchom pielgrzymkę", 144, 8, 137, 41)
$atak = GUICtrlCreateButton("E", 0, 8, 33, 33)
$zamknij = GUICtrlCreateButton("Z", 88, 8, 33, 33)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $up
			FileWriteLine ("droga.ini","w")
		Case $left
			FileWriteLine ("droga.ini","a")
			Case $right
			FileWriteLine ("droga.ini","d")
		Case $down
			FileWriteLine ("droga.ini","s")
		Case $atak
			FileWriteLine ("droga.ini","e")
		Case $zamknij
			FileWriteLine ("droga.ini","z")
		Case $run
			Sleep (500)
			$r = 1
			While 1
		$co = FileReadLine ( "droga.ini" ,$r )
		$r = $r + 1
If $co = "w" Then Send ("w")
If $co = "a" Then Send ("a")
If $co = "d" Then Send ("d")
If $co = "s" Then Send ("s")
If $co = "e" Then Send ("e")
If $co = "z" Then Send ("z")
		WEnd
	EndSwitch
WEnd

Wiem już po co Tobie ten skrypt :D

No oczywiście musisz jeszcze dodać przytrzymywanie klawiszy, czyszczenie trasy, powtórka drogi itp

Tysiące lat wojen, ani jednego dnia pokoju,

pytam czy to skończy się.

 

Zegarek BB

Opublikowano

­

 

poprostu

   HotKeySet("z")

 wyslanie

send

 

Tak to ma być zapisane? Bo tak zrobiłem i dziala to co powiedzialeś ale dlaczego zapisuje sie "E" mimo iz nie klikne "E" i tak samo z innymi?

HotKeySet("{UP}", "W")
FileWriteLine("KOD.txt","Send('{UP down}')")
FileWriteLine("KOD.txt","Sleep(100)")
FileWriteLine("KOD.txt","Send('{UP up}')")


HotKeySet("{DOWN}", "S")
FileWriteLine("KOD.txt","Send('{DOWN down}')")
FileWriteLine("KOD.txt","Sleep(100)")
FileWriteLine("KOD.txt","Send('{DOWN up}')")


HotKeySet("{LEFT}", "A")
FileWriteLine("KOD.txt","Send('{LEFT down}')")
FileWriteLine("KOD.txt","Sleep(100)")
FileWriteLine("KOD.txt","Send('{LEFT up}')")


HotKeySet("{RIGHT}", "D")
FileWriteLine("KOD.txt","Send('{RIGHT down}')")
FileWriteLine("KOD.txt","Sleep(100)")
FileWriteLine("KOD.txt","Send('{RIGHT up}')")


HotKeySet("{E}", "E")
FileWriteLine("KOD.txt","Send('{E down}')")
FileWriteLine("KOD.txt","Sleep(100)")
FileWriteLine("KOD.txt","Send('{E up}')")


HotKeySet("{Z}", "Z")
FileWriteLine("KOD.txt","Send('{Z down}')")
FileWriteLine("KOD.txt","Sleep(100)")
FileWriteLine("KOD.txt","Send('{Z up}')")

W pliku txt coś takiego dostaje

Send('{UP down}')
Sleep(100)
Send('{UP up}')
Send('{DOWN down}')
Sleep(100)
Send('{DOWN up}')
Send('{LEFT down}')
Sleep(100)
Send('{LEFT up}')
Send('{RIGHT down}')
Sleep(100)
Send('{RIGHT up}')
Send('{E down}')
Sleep(100)
Send('{E up}')
Send('{Z down}')
Sleep(100)
Send('{Z up}')


­

 

Co do kodu : nie lepiej tak?

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1_1 = GUICreate("Nagrywarka", 299, 146, 322, 157)
$up = GUICtrlCreateButton("/\", 40, 16, 41, 41)
GUICtrlSetFont(-1, 30, 400, 0, "MS Sans Serif")
$left = GUICtrlCreateButton("<", 2, 55, 41, 41)
GUICtrlSetFont(-1, 30, 400, 0, "MS Sans Serif")
$right = GUICtrlCreateButton(">", 80, 57, 41, 41)
GUICtrlSetFont(-1, 30, 400, 0, "MS Sans Serif")
$down = GUICtrlCreateButton("\/", 42, 97, 41, 41)
GUICtrlSetFont(-1, 30, 400, 0, "MS Sans Serif")
$run = GUICtrlCreateButton("Uruchom pielgrzymkę", 144, 8, 137, 41)
$atak = GUICtrlCreateButton("E", 0, 8, 33, 33)
$zamknij = GUICtrlCreateButton("Z", 88, 8, 33, 33)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $up
			FileWriteLine ("droga.ini","w")
		Case $left
			FileWriteLine ("droga.ini","a")
			Case $right
			FileWriteLine ("droga.ini","d")
		Case $down
			FileWriteLine ("droga.ini","s")
		Case $atak
			FileWriteLine ("droga.ini","e")
		Case $zamknij
			FileWriteLine ("droga.ini","z")
		Case $run
			Sleep (500)
			$r = 1
			While 1
		$co = FileReadLine ( "droga.ini" ,$r )
		$r = $r + 1
If $co = "w" Then Send ("w")
If $co = "a" Then Send ("a")
If $co = "d" Then Send ("d")
If $co = "s" Then Send ("s")
If $co = "e" Then Send ("e")
If $co = "z" Then Send ("z")
		WEnd
	EndSwitch
WEnd

Wiem już po co Tobie ten skrypt :D

No oczywiście musisz jeszcze dodać przytrzymywanie klawiszy itp

 

Już testuje i dodam te klawisze ^^

Opublikowano

­

 

Co do kodu : nie lepiej tak?

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1_1 = GUICreate("Nagrywarka", 299, 146, 322, 157)
$up = GUICtrlCreateButton("/\", 40, 16, 41, 41)
GUICtrlSetFont(-1, 30, 400, 0, "MS Sans Serif")
$left = GUICtrlCreateButton("<", 2, 55, 41, 41)
GUICtrlSetFont(-1, 30, 400, 0, "MS Sans Serif")
$right = GUICtrlCreateButton(">", 80, 57, 41, 41)
GUICtrlSetFont(-1, 30, 400, 0, "MS Sans Serif")
$down = GUICtrlCreateButton("\/", 42, 97, 41, 41)
GUICtrlSetFont(-1, 30, 400, 0, "MS Sans Serif")
$run = GUICtrlCreateButton("Uruchom pielgrzymkę", 144, 8, 137, 41)
$atak = GUICtrlCreateButton("E", 0, 8, 33, 33)
$zamknij = GUICtrlCreateButton("Z", 88, 8, 33, 33)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $up
			FileWriteLine ("droga.ini","w")
		Case $left
			FileWriteLine ("droga.ini","a")
			Case $right
			FileWriteLine ("droga.ini","d")
		Case $down
			FileWriteLine ("droga.ini","s")
		Case $atak
			FileWriteLine ("droga.ini","e")
		Case $zamknij
			FileWriteLine ("droga.ini","z")
		Case $run
			Sleep (500)
			$r = 1
			While 1
		$co = FileReadLine ( "droga.ini" ,$r )
		$r = $r + 1
If $co = "w" Then Send ("w")
If $co = "a" Then Send ("a")
If $co = "d" Then Send ("d")
If $co = "s" Then Send ("s")
If $co = "e" Then Send ("e")
If $co = "z" Then Send ("z")
		WEnd
	EndSwitch
WEnd

Wiem już po co Tobie ten skrypt :D

No oczywiście musisz jeszcze dodać przytrzymywanie klawiszy, czyszczenie trasy, powtórka drogi itp

 

Przerobiłem to na 1 button, i jeśli klikam te strzałkę na programie to mi nie chodzi w grze ;_;

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $up
			FileWriteLine("droga.ini","Send('{UP down}')")
            FileWriteLine("droga.ini","Sleep(100)")
            FileWriteLine("droga.ini","Send('{UP up}')")
		Case $left
			FileWriteLine ("droga.ini","a")
			Case $right
			FileWriteLine("droga.ini","d")
		Case $down
			FileWriteLine ("droga.ini","s")
		Case $atak
			FileWriteLine ("droga.ini","e")
		Case $zamknij
			FileWriteLine ("droga.ini","z")
		Case $run
			Sleep (500)
			$r = 1
			While 1
		$co = FileReadLine ( "droga.ini" ,$r )
		$r = $r + 1
If $co = "w" Then
Send ("{UP down}")
Sleep(100)
Send ("{UP up}")
EndIf
If $co = "a" Then Send ("a")
If $co = "d" Then Send ("d")
If $co = "s" Then Send ("s")
If $co = "e" Then Send ("e")
If $co = "z" Then Send ("z")
		WEnd
	EndSwitch
WEnd

Coś źle wpisałem? :P Jeśli tak to jak mam to dobrze wpisać?

Opublikowano

To jest odpowiedź na pytanie z twojego wątku, a nie rozwinięcie tego skomplikowanego rozwiązania.

Możesz np. zapisywać komendy linia po linii w pliku, odczytać je tak samo i kod wykonać przez Execute.

 

Ten kto powiedział w tym wątku że autoit nie ma możliwości wykonywania zewnętrznie podanego mu kodu, nie zna możliwości autoita i zanim odpowiedział powinien był zajrzeć w google. To jest przecież język interpretowany, exeki z nim mają w sobie kawałek interpretera i sam kod, dzięki temu exeki au3 mogą sobie dokładać kod do wykonania bez żadnych przeszkód. Jedna z nielicznych zalet AutoITa.

846331404756772371599.jpeg
Opublikowano

­

 

To jest odpowiedź na pytanie z twojego wątku, a nie rozwinięcie tego skomplikowanego rozwiązania.

Możesz np. zapisywać komendy linia po linii w pliku, odczytać je tak samo i kod wykonać przez Execute.

 

Ten kto powiedział w tym wątku że autoit nie ma możliwości wykonywania zewnętrznie podanego mu kodu, nie zna możliwości autoita i zanim odpowiedział powinien był zajrzeć w google. To jest przecież język interpretowany, exeki z nim mają w sobie kawałek interpretera i sam kod, dzięki temu exeki au3 mogą sobie dokładać kod do wykonania bez żadnych przeszkód. Jedna z nielicznych zalet AutoITa.

 

A wiesz może dlaczego te klawisze po kliknięciu nie robią tego co im przypisałem? (cała reszta to robi)

HotKeySet("{E}", "E")
Func  E()
FileWriteLine("KOD.txt","Send('{E down}')")
FileWriteLine("KOD.txt","Sleep(100)")
FileWriteLine("KOD.txt","Send('{E up}')")
EndFunc

HotKeySet("{Z}", "Z")
Func Z()
FileWriteLine("KOD.txt","Send('{Z down}')")
FileWriteLine("KOD.txt","Sleep(100)")
FileWriteLine("KOD.txt","Send('{Z up}')")
EndFunc

To zły sposób zapisu?

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...