На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! user posted image
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.

Соблюдайте общие правила форума

Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как запустить программу/файл? (и дождаться ее завершения)
5. Как перехватить API-функции, поставить hook? (перехват сообщений от мыши, клавиатуры - внедрение в удаленное адресное прстранство)
... (продолжение следует) ...

Внимание:
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки - бан.
Мат в разделе - бан на три месяца...

Полезные ссылки:
user posted image MSDN Library user posted image FAQ раздела user posted image Поиск по разделу user posted image Как правильно задавать вопросы


Выразить свое отношение к модераторам раздела можно здесь: user posted image Rouse_, user posted image Krid

Модераторы: Rouse_, Krid
  
> Как можно узнать что было изменениие , Наприме сдвиг мыши или нажатие клавиши
    Просто мне надо передать снимок рабочего стола по изменению...
      ExpandedWrap disabled
        unit Unit1;
         
        interface
         
        uses
          Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
          Dialogs, StdCtrls;
         
        type
          TForm1 = class(TForm)
            Memo1: TMemo;
            procedure FormCreate(Sender: TObject);
            procedure FormClose(Sender: TObject; var Action: TCloseAction);
          end;
         
        var
          Form1: TForm1;
         
        implementation
         
        {$R *.dfm}
         
        var
          MouseHook: HHOOK;
         
        function LowLevelMouseProc(nCode: Integer; WParam: WPARAM; LParam: LPARAM): LRESULT; stdcall;
        begin
          Result := CallNextHookEx(MouseHook, nCode, WParam, LParam);
          case WParam of
            WM_LBUTTONDOWN: Form1.Memo1.Lines.Add('Мыша вдавилась левой кнопкой.');
            WM_LBUTTONUP: Form1.Memo1.Lines.Add('Мыша отдавилась левой кнопкой.');
            WM_LBUTTONDBLCLK: Form1.Memo1.Lines.Add('Мыша дважды клацнулась левой кнопкой.');
            WM_RBUTTONDOWN: Form1.Memo1.Lines.Add('Мыша вдавилась правой кнопкой.');
            WM_RBUTTONUP: Form1.Memo1.Lines.Add('Мыша отдавилась правой кнопкой.');
            WM_RBUTTONDBLCLK: Form1.Memo1.Lines.Add('Мыша дважды клацнулась правой кнопкой.');
            WM_MBUTTONDOWN: Form1.Memo1.Lines.Add('Мыша вдавилась средней кнопкой.');
            WM_MBUTTONUP: Form1.Memo1.Lines.Add('Мыша отдавилась средней кнопкой.');
            WM_MBUTTONDBLCLK: Form1.Memo1.Lines.Add('Мыша дважды клацнулась средней кнопкой.');
            WM_MOUSEMOVE: Form1.Memo1.Lines.Add('Мыша побежала.');
            WM_MOUSEWHEEL: Form1.Memo1.Lines.Add('Мыша тащиться.');
          else
            Form1.Memo1.Lines.Add('Мыша сошла с ума, купите новую мышу.');
          end;
        end;
         
         
        procedure TForm1.FormCreate(Sender: TObject);
        const
          WH_MOUSE_LL = 14;
        begin
          MouseHook := SetWindowsHookEx(WH_MOUSE_LL, @LowLevelMouseProc, HInstance, 0);
        end;
         
        procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
        begin
          UnhookWindowsHookEx(MouseHook);
        end;
         
        end.


      Тож самое и на клавиатуру, код хука - Цыфира 13 :) Соответственно принимай уже мессаги от клавиатуры...
      Только начиная с Win 2000
        Цитата Rouse_ @
        Только начиная с Win 2000

        :o А мне надо для всех WINXX
          Я привел примел Глобального низкоуровнего хука, который работает только начиная с 2К... Как делать обычный хук с таким же подходом - ты знаешь где искать...
          Троян чтоль пишешь или типа RemouteAdmin?
            Microsoft уже давно отказалась от поддержки Win95/98. Когда уже от нее откажутся остальные программисты ? :wall: :wall:
              Цитата P.O.D @
              Microsoft уже давно отказалась от поддержки Win95/98. Когда уже от нее откажутся остальные программисты ?

              Только тогда - когда от нее откажуться пользователи. :)
              Мне самому с трудом удалось убедить начальство от поддержки чистого 98 (не 98 SE) и четвертой NT...
              Решал радикальным способом - второй лайер винсока там не стабильно работает ;) (хитрость, но цель достигнута ;) )

              Добавлено
              ЗЫ: Кстати для 98 мелкомягкие еще производят поддержку... Могу дать линк с офсайта...
                Цитата P.O.D @
                Microsoft уже давно отказалась от поддержки Win95/98. Когда уже от нее откажутся остальные программисты ?

                Да проблема в том, что у многих еще машины типа 1-2 го пентиума с оперативкой 64МБ, а то и меньше, причем такая ситуация даже на предприятиях, по крайней мере у нас в Беларуси.
                  Цитата zubr, 30.09.2005, 8:24:40, 871332
                  причем такая ситуация даже на предприятиях

                  Я бы сказал, что такая ситуация в основном на предприятиях. К тому же сравните цену на 98 и 2000 или XP, разница заметна невооруженным взглядом. Так что отказаться от поддержки ОСей прошлого тысячелетия отказаться не выйдет еще очень долго.
                    Цитата Rouse_ @
                    RemouteAdmin?

                    Ага
                    1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                    0 пользователей:


                    Рейтинг@Mail.ru
                    [ Script execution time: 0,0507 ]   [ 15 queries used ]   [ Generated: 9.07.25, 00:43 GMT ]