Сейчас на форуме: tyns777 (+5 невидимых)

 eXeL@B —› Программирование —› Запуск созданных приложений для Delphi
Посл.ответ Сообщение

Ранг: 3.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 12 января 2008 07:22
· Личное сообщение · #1

Привет Всем. У меня вот такая проблема в Delphi, как можно сделать чтобы приложение запускалась при нажатии определенных клавиш или при запуске каких либо других программ.




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 12 января 2008 07:30
· Личное сообщение · #2

Pirit пишет:
как можно сделать чтобы приложение запускалась при нажатии определенных клавиш

Вешай глобальный хук на клавиатуру

Pirit пишет:
или при запуске каких либо других программ

Перехватывай WinAPI

Во избежание последующих вопросов:

www.google.com/search?client=opera&rls=ru&q=Delphi+%D0%BA%D0%BB%D0%B0%D0%B2%D0%B8%D0%B0%D1%82%D1%83%D1%80%D0%BD%D1%8B%D0%B9+%D0%BF%D0%B5%D1%80%D0%B5%D1%85%D0%B2%D0%B0%D1%82&sourceid=opera&ie=utf-8&oe=utf-8

www.google.com/search?hl=ru&client=opera&rls=ru&hs=VyX&q=Delphi+%D0%BF%D0%B5%D1%80%D0%B5%D1%85%D0%B2%D0%B0%D1%82+WinAPI&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=

-----
Yann Tiersen best and do not fuck





Ранг: 111.1 (ветеран)
Активность: 0.040
Статус: Участник

Создано: 12 января 2008 08:59
· Личное сообщение · #3

Можно сделать программку, которая будет висеть в памяти и проверять нажаты ли нужные клавиши, и перебирать список процессов, искать в нем определенное имя и найдя запускать твою программу. Кстати хук на клаву необязательно ставить, можно воспользоваться GetAsyncKeyState'ом, тока в таймере надо будет поменьше интервал поставить. WinAPI (CreateProcess) тоже перехватывать не обязательно, можно опять же обойтись таймером и перебором списка процессов (хотя правильней было бы, как и в первом случае использовать хук на клаву).

-----
The truth is out of there...




Ранг: 3.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 12 января 2008 18:44
· Личное сообщение · #4

Lumen, так как я начинающий можешь пример привести с кодом желательно




Ранг: 279.1 (наставник)
Активность: 0.160
Статус: Участник
wizard

Создано: 12 января 2008 20:05 · Поправил: MACKLIA
· Личное сообщение · #5

Pirit вот пример получения списка запущенных приложений


procedure TForm1.Button1Click(Sender: TObject);
var
Wnd: hWnd;
buff: array [0..127] of char;
begin
ListBox1.Clear;
Wnd := GetWindow(Handle, gw_HWndFirst);
while Wnd <> 0 do begin // Не показываем:
if (Wnd <> Application.Handle) // Собственное окно
and IsWindowVisible(Wnd) // Невидимые окна
and (GetWindow(Wnd, gw_Owner) = 0) // Дочерние окна
and (GetWindowText(Wnd, buff, sizeof(buff)) <> 0) then begin
GetWindowText(Wnd, buff, sizeof(buff));
ListBox1.Items.Add(StrPas(buff));
end;
Wnd := GetWindow(Wnd, gw_hWndNext);
end;
ListBox1.ItemIndex := 0;
end;

P.S. а вообще почитай ссылки ,которые тебе PE_Kill дал.

-----
Что один человек сделал , другой всегда сломать может...





Ранг: 95.2 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 13 января 2008 02:53
· Личное сообщение · #6

Lumen пишет:
тока в таймере надо будет поменьше интервал поставить.

Чтото сдается мне, что после уменьшения интервала система больше ничем заниматься не будет, кроме как отловом нажатых клавиш

-----
бессмысленные манипуляции не становятся более разумными если их повторять




Ранг: 253.9 (наставник)
Активность: 0.130
Статус: Участник

Создано: 13 января 2008 04:00
· Личное сообщение · #7

SecurAdmin пишет:
Чтото сдается мне, что после уменьшения интервала система больше ничем заниматься не будет, кроме как отловом нажатых клавиш

+1
хуки vs таймеры...

-----
MicroSoft? Is it some kind of a toilet paper?





Ранг: 111.1 (ветеран)
Активность: 0.040
Статус: Участник

Создано: 13 января 2008 12:28
· Личное сообщение · #8

SecurAdmin пишет:
Lumen пишет:
тока в таймере надо будет поменьше интервал поставить.
Чтото сдается мне, что после уменьшения интервала система больше ничем заниматься не будет, кроме как отловом нажатых клавиш

Кинул на форму таймер, поставил у него интервал 1 мс. В обработчике onTimer написал:
if GetAsyncKeyState(VK_RETURN)<>0 then showmessage('a');
Запустил. Загрузка процессора - 5%. Могу проект прикрепить...

-----
The truth is out of there...





Ранг: 279.1 (наставник)
Активность: 0.160
Статус: Участник
wizard

Создано: 13 января 2008 13:07 · Поправил: MACKLIA
· Личное сообщение · #9

Lumen пишет:
Запустил. Загрузка процессора - 5%


Да просто многие участники некогда не проверяли советы которые они дают другим.Так что Tim надобыло написать не +1 ,а -10 .

-----
Что один человек сделал , другой всегда сломать может...




Ранг: 456.3 (мудрец), 340thx
Активность: 0.280.02
Статус: Участник
Android Reverser

Создано: 13 января 2008 16:39
· Личное сообщение · #10

Lumen пишет:
Запустил. Загрузка процессора - 5%. Могу проект прикрепить...

надо сделать в функе таймера обработку мессаг, что-то типа Application.ProcessMessages или как-то так ;)

-----
SaNX





Ранг: 279.1 (наставник)
Активность: 0.160
Статус: Участник
wizard

Создано: 13 января 2008 17:33
· Личное сообщение · #11

SaNX пишет:
Lumen пишет:
Запустил. Загрузка процессора - 5%. Могу проект прикрепить...
надо сделать в функе таймера обработку мессаг, что-то типа Application.ProcessMessages или как-то так ;)



Application.ProcessMessages - типа создание эффекта многозадачности , тока нафига это в данном случае ?

-----
Что один человек сделал , другой всегда сломать может...




Ранг: 456.3 (мудрец), 340thx
Активность: 0.280.02
Статус: Участник
Android Reverser

Создано: 13 января 2008 17:56
· Личное сообщение · #12

MACKLIA
Ну да, просто затупил я, думал, что надо, чтоб проц меньше грузило. Почитал сново - увидел, что и так 5% загрузка

-----
SaNX




Ранг: 3.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 13 января 2008 18:14
· Личное сообщение · #13

Lumen пишет:
Кинул на форму таймер, поставил у него интервал 1 мс. В обработчике onTimer написал:
if GetAsyncKeyState(VK_RETURN)<>0 then showmessage('a');
Запустил. Загрузка процессора - 5%. Могу проект прикрепить...


Прикрепи проект если можно




Ранг: 279.1 (наставник)
Активность: 0.160
Статус: Участник
wizard

Создано: 13 января 2008 21:03 · Поправил: MACKLIA
· Личное сообщение · #14

Pirit пишет:
Прикрепи проект если можно


Да в обработчике onTimer написать строку if GetAsyncKeyState(VK_RETURN)<>0 then showmessage('a') - это ,что проект ?
И накой он тебе Pirit нужен ?

Топ вообще пора уже закрывать ,так как его автор все необходимые рекомендации уже получил ,а готовую прогу за него врядли кто писать будет.


-----
Что один человек сделал , другой всегда сломать может...





Ранг: 111.1 (ветеран)
Активность: 0.040
Статус: Участник

Создано: 13 января 2008 22:29
· Личное сообщение · #15

Pirit
Вот пожалуйста. Только там всего одна строчка кода, остальное среда сгенерила...
Если интересуют какие-то конкретные моменты реализации - пиши в личку или в аську стучись.

d2c9_13.01.2008_CRACKLAB.rU.tgz - project.rar

-----
The truth is out of there...





Ранг: 279.1 (наставник)
Активность: 0.160
Статус: Участник
wizard

Создано: 13 января 2008 23:06 · Поправил: MACKLIA
· Личное сообщение · #16

Lumen пишет:
Вот пожалуйста. Только там всего одна строчка кода, остальное среда сгенерила...


Пиздец какойто ,Pirit если ты даже не знаешь как использовать Timer то оставь свою затею и займись задачами полегче

P.S. модераторы закройте тему ,ато скоро на форуме будут вопросы как бросать на форму компоненты или изменять размер кнопок мышкой , и на это последуют ответы Хотя начиналось всё неплохо...

-----
Что один человек сделал , другой всегда сломать может...





Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 13 января 2008 23:29
· Личное сообщение · #17

Действительно, тема полезла уже куда-то не туда. Что не объяснили-юзай гугл, да найдёццо там истина, топик закрыт.
MACKLIA
А ты бы лучше поменьше гнобил нубиков, а тихо отписался мне


 eXeL@B —› Программирование —› Запуск созданных приложений для Delphi
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати