Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Jak ukryć konsolę Windows?

Ostatnio zmodyfikowano 2010-07-03 17:40
Autor Wiadomość
021995
Temat założony przez niniejszego użytkownika
Jak ukryć konsolę Windows?
» 2010-07-02 23:42:17
Witam

Potrzebuje kodu na:
1. automatycznie minimalizowanie się konsoli zaraz po jej włączeniu.
2. działanie konsoli podczas zminimalizowania jej.
3. nie pokazywanie się na pasku zadań konsoli.

nie będę pisał do czego mi to jest potrzebne ale zapewniam że do niczego złego
raczej żeby się pośmiać ;] a przy okazji głębiej poznam c++ ;]

z góry dzięki za pomoc
P-18539
DejaVu
» 2010-07-03 00:29:13
Nie da się napisać aplikacji konsolowej, która NIE będzie widoczna na pasku (przynajmniej ja nie wiem jak to zrobić). Alternatywnym rozwiązaniem jest WinAPI i tam da się uruchomić aplikację, która nie będzie na pasku oraz będzie uruchomiona (ale wtedy chyba będzie musiała być w tray'u - tego do końca teraz pewien nie jestem).

/edit:
Choć jak by się lepiej zastanowić to być może i się da - trzeba pobrać uchwyt do okna konsoli - jak to będziesz miał to już powinno być z górki.

/edit2:
Zależy co chcesz osiągnąć. Możesz zrobić to na dwa sposoby:

1) Kompilujesz program w WinAPI do pliku exe a następnie piszesz konsolówkę i w tym programie uruchamiasz tego exe'ka (poszukaj w msdnie o funkcji, która zwie się bodajże CreateProcess).

2) Zamiast WinMain piszesz int main() i tam tworzysz okno. Wtedy okno się utworzy na konsoli, w której dalej będziesz mógł wykonywać instrukcje po zniszczeniu tego okna. Od razu odpowiadam: tak, w funkcji int main() też można uzyskać parametr typu HINSTANCE będący uchwytem na bieżącą instancję aplikaji. Realizuje to funkcja ...(nie pamiętam nazwy, zdaj się na google albo kogoś z lepszą pamięcią)...

EDIT:
robisz tak:
C/C++
HWND WindowHandle = GetConsoleWindow();
a następnie:
C/C++
LONG Instance = GetWindowLong( WindowHandle, GWL_HINSTANCE );

I już masz pobrany uchwycik 
Źródło: http://forum.pclab.pl/lofiversion/index.php?t575708.html
P-18543
021995
Temat założony przez niniejszego użytkownika
» 2010-07-03 00:57:36
tylko jest mały problem nie znam się jeszcze na WIN API ;[

C/C++
#include <iostream>
#include <conio.h>
#include <fstream>
using namespace std;
int main()
{
    fstream plik;
    plik.open( "nazwa.txt" );
    char znak;
    do
    {
        znak = getch();
        plik << znak;
        while( kbhit() )
             cout << endl;
       
    }
    while( znak != 27 );
   
    plik.close();
    return 0;
}
P-18544
VND
» 2010-07-03 01:23:30
Schowanie okna konsoli - nie widać ani na pasku ani w trayu.
C/C++
HWND okno = FindWindowA( "ConsoleWindowClass", NULL );
ShowWindow( okno, SW_HIDE );

// lub

HWND okno = GetConsoleWindow();
ShowWindow( okno, SW_HIDE );

Edit:
Teraz zauważyłem twojego drugiego posta.
To nie przejdzie, po schowaniu nie masz dostępu do klawiatury. Program może wykonywać jakieś obliczenia itd. ale nie pobierać dane od użytkownika.

Ewentualnie użyj funkcji FreeConsole()
http://msdn.microsoft.com/en-us/library/ms683150%28VS.85%29.aspx
ona też ukryje okno konsoli, a odczyt klawiatury zrób na GetAsyncKeyState()
P-18545
lenrokskate
» 2010-07-03 10:34:37
to pierwse rozwiązanie będzie lepsze, bo jak psizesz wirusa to po ci pobieranie danych z klawiatury?
P-18547
malan
» 2010-07-03 12:12:40
..., bo pisze Keyloggera?
P-18548
lenrokskate
» 2010-07-03 12:14:27
ale nie potrzebne mu sygnały z klawiatury dla okna konsoli tylko potrzebuje globalnego hacka

to można zrobić nie ważne czy masz okno czy nie
P-18549
021995
Temat założony przez niniejszego użytkownika
» 2010-07-03 13:51:51
w c++ jestem niezbyt ogarnięty znam tylko podstawowe "rzeczy" ;]

wpisałem to co napisałeś u góry ale tak jak mówiłeś że działa bo jej zminimalizowane ;]

a ta funkcja z strony microsoft'u to nie wiem jak to zapisać
P-18550
« 1 » 2 3
  Strona 1 z 3 Następna strona