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

[problem]Konsola


Lobod

Rekomendowane odpowiedzi

Opublikowano

Mam pytanie czy dało by się przez AutoIt otworzyć konsole (cmd.exe) Z wczytanymi już pewnymi informacjami, tak jakby je wpisać i wcisnąć ENTER?

kb8.png

Opublikowano

Znalazłem ten kod jakiś czas temu ale nie bawiłem się tym. Żeby zadziałało trzeba skompilować.

 

 

#include<WinAPI.au3>
Global $aResult, $hConsole
If Not _WinAPI_AttachConsole() Then
   $ret = DllCall("Kernel32.dll", "long", "AllocConsole")
   If $ret = 0 Then Exit MsgBox(0, 'EXIT', "No Console allocated!")
EndIf
$hConsole = _WinAPI_GetStdHandle(1)
$hConsoleIn = _WinAPI_GetStdHandle(0)
If $hConsole = -1 Then
   MsgBox(0, "Error", "GetStdHandle failed")
   Exit
EndIf
_WinAPI_WriteConsole($hConsole, "Name: ")
$test = DllStructCreate("char[10000]")
$read = 500
_WinAPI_ReadFile($hConsoleIn, DllStructGetPtr($test), DllStructGetSize($test), $read)
MsgBox(0, '', DllStructGetData($test, 1))

If Not _WinAPI_WriteConsole($hConsole, "Hello World" & @CRLF) Then
   MsgBox(0, "Error", "WriteConsole Failed")
EndIf
_WinAPI_WriteConsole($hConsole, "PAUSE: Press ENTER ")
_WinAPI_ReadFile($hConsoleIn, DllStructGetPtr($test), DllStructGetSize($test), $read)
Exit

 

 

Opublikowano

Bajer.

No to ja może wyjaśnię o co chodzi w tym kodzie :D

Najpierw próbujemy się dobić do konsoli. Jeśli przez WinAPI się nie uda, próbujemy DLLCall. Jak nawet to nie wyjdzie, to szlag trafił i wychodzimy ze skryptu.

Potem próbujemy otrzymać uchwyty do strumieni wejścia/wyjścia konsoli

 

Potem piszemy coś w konsoli i tworzymy strukturę byte[10000]

 

Potem podajemy swoje imię w konsoli, program próbuje wypisać Hello World (jeśli się nie udaje - pokazuje o tym info)

 

Jak widać _WinAPI_ReadFile służy do odczytu streama z konsoli :D

Ciekawe...

846331404756772371599.jpeg
Opublikowano

Zawsze można stworzyć i uruchomić plik .bat.

 

Mam wrażenie, iż zaraz zostanę zjechany :(.

 

@Down Nie wiem, myślałem, że może chodziło mu o coś nieco innego :).

obraz24.png


Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...