Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не получается в хуке по перехвату ввода в клаву, сохранять в файл 
V
    Опции темы
barin_Student
Дата 1.12.2008, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 488
Регистрация: 10.8.2007
Где: Казахстан , Алмат ы

Репутация: нет
Всего: 2



Код

//--------------------------
#include <vcl.h>
#include <fstream.h>
#include <winuser.h>
#include <stdio.h>
#include <IniFiles.hpp>
#include <DateUtils.hpp>
#pragma hdrstop
//--------------------------
// 
extern "C" __declspec(dllexport) LRESULT CALLBACK
KeyboardProc(int code, WPARAM wParam, LPARAM lParam);
//--------------------------
// "
//--------------------------
LRESULT CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAM lParam)
{
//FILE *f;
  char *iniFileName=".\ hook.ini";
  TIniFile *ini = new TIniFile(iniFileName);
  int key1=ini->ReadInteger("hook settings","key1",120);
  int key2=ini->ReadInteger("hook settings","key2",121);
  int key3=ini->ReadInteger("hook settings","key3",122);
  int key4=ini->ReadInteger("hook settings","key4",123);
  delete ini;
  AnsiString compareWParam =(AnsiString)wParam;
  AnsiString compareKey1=(AnsiString)key1;
  if(compareWParam==compareKey1)//
   {
                TDateTime date;
                TStringList *List = new TStringList();
                ShowMessage("Key1");
                unsigned short year, month, day, hour, min, sec,msec;
                DecodeDateTime(date.CurrentDate(), year, month, day, hour, min, sec,msec);
                 AnsiString str="c:\\"+(AnsiString)month+year+"key1.quit";
                char *filePath=str.c_str();
                {
                        ShowMessage("Na4ninaem Sohraniat");
                        List->LoadFromFile(filePath);
                        List->SaveToFile(date.CurrentDateTime().TimeString()+" "+compareKey1);
                        ShowMessage("sohranili");
                }
                delete List;
        }
return CallNextHookEx(NULL, code, wParam, lParam);
}

Выводит :
key1
Na4naem sohraniat'
key1
Na4naem sohraniat'

файл создается , но ничаго в файле нет.. smile 
Builder 6.0

Это сообщение отредактировал(а) barin_Student - 1.12.2008, 14:24


--------------------
Нехорошо блин!!!
PM MAIL   Вверх
xvr
Дата 1.12.2008, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(barin_Student @ 1.12.2008,  13:55)
Код

//--------------------------
#include <vcl.h>
#include <fstream.h>
#include <winuser.h>
#include <stdio.h>
#include <IniFiles.hpp>
#include <DateUtils.hpp>
#pragma hdrstop
//--------------------------
// 
extern "C" __declspec(dllexport) LRESULT CALLBACK
KeyboardProc(int code, WPARAM wParam, LPARAM lParam);
//--------------------------
// "
//--------------------------
LRESULT CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAM lParam)
{
//FILE *f;
  char *iniFileName=".\ hook.ini";
  TIniFile *ini = new TIniFile(iniFileName);
  int key1=ini->ReadInteger("hook settings","key1",120);
  int key2=ini->ReadInteger("hook settings","key2",121);
  int key3=ini->ReadInteger("hook settings","key3",122);
  int key4=ini->ReadInteger("hook settings","key4",123);
  delete ini;
  AnsiString compareWParam =(AnsiString)wParam;
  AnsiString compareKey1=(AnsiString)key1;
  if(compareWParam==compareKey1)//
   {
                TDateTime date;
                TStringList *List = new TStringList();
                ShowMessage("Key1");
                unsigned short year, month, day, hour, min, sec,msec;
                DecodeDateTime(date.CurrentDate(), year, month, day, hour, min, sec,msec);
                 AnsiString str="c:\\"+(AnsiString)month+year+"key1.quit";
                char *filePath=str.c_str();
                {
                        ShowMessage("Na4ninaem Sohraniat");
                        List->LoadFromFile(filePath);
                        List->SaveToFile(date.CurrentDateTime().TimeString()+" "+compareKey1);
                        ShowMessage("sohranili");
                }
                delete List;
        }
return CallNextHookEx(NULL, code, wParam, lParam);
}

Выводит :
key1
Na4naem sohraniat'
key1
Na4naem sohraniat'

файл создается , но ничаго в файле нет.. smile 
Builder 6.0

А что в нем должно быть? А файл "c:\\"+(AnsiString)month+year+"key1.quit" существует?


PM MAIL   Вверх
barin_Student
Дата 2.12.2008, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 488
Регистрация: 10.8.2007
Где: Казахстан , Алмат ы

Репутация: нет
Всего: 2



с:\122008.quit 
файл есть
 smile 


--------------------
Нехорошо блин!!!
PM MAIL   Вверх
xvr
Дата 2.12.2008, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(barin_Student @ 2.12.2008,  09:29)
с:\122008.quit 
файл есть
 smile

А должен быть с:\122008key1.quit
PM MAIL   Вверх
barin_Student
Дата 2.12.2008, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 488
Регистрация: 10.8.2007
Где: Казахстан , Алмат ы

Репутация: нет
Всего: 2



с файлом вот как мне помогли разобраться :
Код

TDateTime dt = Now();
 std::auto_ptr<TStringList> list (new TStringList);
 list->Add(str);
  list->SaveToFile(pathLogFile);

Только файл не дописывается , переписывется... smile  , но с этим я разберусь , тема закрыта.


--------------------
Нехорошо блин!!!
PM MAIL   Вверх
xvr
Дата 2.12.2008, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(barin_Student @ 2.12.2008,  12:44)
с файлом вот как мне помогли разобраться :
Код

TDateTime dt = Now();
 std::auto_ptr<TStringList> list (new TStringList);
 list->Add(str);
  list->SaveToFile(pathLogFile);


Вообще то это не то, что у тебя было первоначально написано.
У тебя содержимое файла с:\122008key1.quit копировалось в файл 
2008 12 ... 120, а в новом куске кода в файл 2008 12 ... 120 копируется сама строка с:\122008key1.quit
Цитата

Только файл не дописывается , переписывется... smile  , но с этим я разберусь , тема закрыта.
Угу, и не будет дописываться, SaveToFile такого сервиса не предоставляет

PM MAIL   Вверх
barin_Student
Дата 3.12.2008, 06:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 488
Регистрация: 10.8.2007
Где: Казахстан , Алмат ы

Репутация: нет
Всего: 2



переделал вот так:
Код

TDateTime dt;
      dt=Now();
      unsigned short year, month, day, hour, min, sec,msec;
      DecodeDateTime(dt.CurrentDate(), year, month, day, hour, min, sec,msec);
      ofstream fo;
      AnsiString pathLogFile="c:\\Monitor\\"+(AnsiString)month+year+"key1.quit";
      AnsiString strDate= dt.DateString();
      AnsiString strTime= dt.TimeString();
      AnsiString strAll= strDate+" "+strTime+"  "+compareKey1;
      fo.open(pathLogFile.c_str(),ios::app);
      fo<<strAll.c_str()<<endl;
      fo.close();



--------------------
Нехорошо блин!!!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0718 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.