Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];

Вниз

проблема с hook   Найти похожие ветки 

 
AlexeyM   (2004-11-03 09:03) [0]

Уважаемые Мастера помогите разобраться. Делаю глобальный hook для отлова нажатия кнопки print screen (исходник брал здесь http://delphiworld.narod.ru/base/hook_keys_full.html ), ловушка работает.
1 на моей форме компоненты edit не хотят обрабатывать нажатие vk_return

procedure TTJDet.Edit2KeyUp(Sender: TObject; var Key: Word;
 Shift: TShiftState);
 var c:integer;
begin
if key = vk_return  then begin
// что-то
end;

2 когда моя прога свернута в панель задач она не обрабатывает сообщение от ловушки


 
++MASTER++ ©   (2004-11-03 13:06) [1]

Попробуй работу в фоне:

-----------------------------------------------------------------

Я пишу программу в Delphi, которая каждый час должна проверять размер файла. Это также предполагает, что в случае неактивности приложения оно должно работать сторожевым псом в фоновом режиме win 95 и NT. Как мне сделать это...?? Вот некоторый исходный код, который должен делать то, что вы хотите. Я его только что создал и еще не успел проверить, но что-то подобное я уже делал, так что это должно работать. Код допускает одно предположение, о котором вы должны отдавать себе отчет. Оно заключается в том, что приложение должно запускатьтся одновременно с Windows (может быть из группы автозапуска), так как код использует GetTickCount, возвращающий в миллисекундах время с момента старта системы, это необходимо для ежечасной инициализац ии кода выполнения задачи. По-моему это то, что вам нужно. Величина, возвращаемая GetTickCount имеет тип DWORD, но Delphi ее хранит как LongInt, поэтому большие значения могут иметь отрицательную величину (после примерно 25 дней). Данный эффект в алгоритм е проверки наступления часа неопределен (я действительно не считал это). Аналогично, значение будет повторяться в цикле каждые 49.7 дней и может появиться другой эффект, когда раз в 49.7 дней в одном реальном часе алгоритм сработает дважды. Надеюсь это ни как не скажется на вашей задаче. Во всяком случае разве это не то, что вы хотели? Успехов!

program Project1;

uses Messages, Windows;

{$R *.RES}

function KeepRunning: Boolean;
var
 Msg: TMsg;
begin
 Result := True;
 while PeekMessage(Msg, 0, 0, 0, PM_REMOVE) do
 begin
   if (Msg.Message = WM_QUIT) then
     Result := False;
   DispatchMessage(Msg);
 end;
end;

function OnTheHour: Boolean;
begin
 { Это действительно проверяется в течение одной секунды    }
 { (или меньше) для проверки наступления нового часа,       }
 { когда нам необходимо запустить нашу задачу на выполнение }
 Result := (GetTickCount mod
   (1 {hr} * 60 {min} * 60 {sec} * 1000 {msec}) < 1000);
end;

const
 filetocheck = "c:\somedir\somefile.ext";
 magicsize = 1000000;
var
 f: file;
 size: longint;
begin
 { проверка наступления нового часа с момента запуска системы }
 while keeprunning do
 begin
   { проверяем наступление часа }
   if onthehour then
   begin
     { открываем файл с размером записи 1 байт }
     { и проверяем его размер                  }
     assignfile(f, filetocheck);
     reset(f, 1);
     size := filesize(f);
     closefile(f);
     { теперь проверяем изменение размера файла }
     if (size >= MAGICSIZE) then
     begin
       { Предпринимаем какие-то действия }
     end;
     { Теперь "сидим" в этом участке кода                 }
     { и ожидаем очередного часа, здесь можно             }
     { предусмотреть выход из программы или иное действие }
     while (KeepRunning and OnTheHour) do
       {ничего};
   end;
 end;
end.


 
AlexeyM   (2004-11-05 01:34) [2]

что за работа в фоне?
если кто знает как можно поймать что нажата кнопка print screen (нажата в другой конкретной программе) напишите пожалуста


 
Almaz ©   (2004-11-05 02:38) [3]


> если кто знает как можно поймать что нажата кнопка print
> screen (нажата в другой конкретной программе) напишите пожалуста

А Вы в FAQ не пробовали заглядывать, прежде чем задать вопрос ?
См. http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=988620866&n=15

Удачи.



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.034 c
14-1101444567
КаПиБаРа
2004-11-26 07:49
2004.12.19
Life is kaif


14-1101561146
asdqwer
2004-11-27 16:12
2004.12.19
Количество отснятых фильмов


1-1102423648
kirilllius
2004-12-07 15:47
2004.12.19
как открыть dcu фай


1-1102086014
Vega
2004-12-03 18:00
2004.12.19
отображение HTM


14-1101669271
Maxim_S~~
2004-11-28 22:14
2004.12.19
помогите с треем!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский