Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   ShellExecute. спицифичное использование (https://forum.antichat.xyz/showthread.php?t=37118)

El_HALYAVA_ 04.04.2007 01:13

ShellExecute. спицифичное использование
 
Собственно в дельфи есть довольно неплохиее функции. К примеру такая как ShellExecute запускающая в вашей программе любую указанную. Так же там имеются некие HotKey. Знающие дельфи не могли бы вы помочь куском кода к примеру как мне релизовать ShellExecute по нажатию определённого хоткея в SW_HIDE автоматически, а по нажатию ещё одного хоткея на запущенный процесс аквтивировать SW_SHOW. т.е. запускаю свою прогу она ничего не запускает. жму к примеру ctrl+k запускается моя прога но она в скрытом режиме. нажимаю ctrl+shift+i она выходит из хайда.
Кто знает как это реализовать помогите плиз куском кода. Буду премного благодарен.
PS. яндекс курил нашёл пару примеров. только как их объеденить ещё не въехал...

je0n 04.04.2007 01:39

эт тебе надо перехватывать нажатия клавиш. Юзай API-функции GetKeyState() и GetAsyncKeyState(). имхо самый простой вариант.

Кстате научишься юзать эти две функции - научишься делать кейлогер! Вот примеры использования этих функций (для кейлогера) на vb.
http://forum.antichat.ru/thread32885.html (там все очень подробно описано про сами функции и про то как перехватить нажатие)
Но язык тебе в данном случае не важен, т.к. это API и тебе нужно лишь поймать суть.
Еще можно юзать хуки, но это имхо сложнее.


P.S. если потребуется перевести какой участок кода из того примера на паскаль (delphi) скажи, попробуем помочь )

W!z@rD 04.04.2007 22:56

Цитата:

Сообщение от El_HALYAVA_
Собственно в дельфи есть довольно неплохиее функции. К примеру такая как ShellExecute запускающая в вашей программе любую указанную.

1. Это не дельфийская функция.
2. запускает что?
Цитата:

Сообщение от El_HALYAVA_
Так же там имеются некие HotKey. Знающие дельфи не могли бы вы помочь куском кода к примеру как мне релизовать ShellExecute по нажатию определённого хоткея в SW_HIDE автоматически, а по нажатию ещё одного хоткея на запущенный процесс аквтивировать SW_SHOW. т.е. запускаю свою прогу она ничего не запускает. жму к примеру ctrl+k запускается моя прога но она в скрытом режиме. нажимаю ctrl+shift+i она выходит из хайда.
Кто знает как это реализовать помогите плиз куском кода. Буду премного благодарен.
PS. яндекс курил нашёл пару примеров. только как их объеденить ещё не въехал...

1. Юзай глобальный хук.
2. Что за примеры, дай посмотреть?

sob@ke 05.04.2007 16:20

Для этго те над писать думаю DLL'шник ищи статьи по написанию DLL)))типа глобальный hook)

sob@ke 05.04.2007 16:28

[/QUOTE]Сообщение от El_HALYAVA_
Собственно в дельфи есть довольно неплохиее функции. К примеру такая как ShellExecute запускающая в вашей программе любую указанную.

Нет такой функции на дельфи есть похожая функция ExecuteFile()
допустим ExecuteFile('C:\Program.exe','','с:\',SW_SHOW);
вообщем напиши свой DLL на дельфи))ищи информацию о написании DLL там много есть и ненять особенно не надо просто меняешь хоткей и всавляешь ExecuteFile()

sob@ke 05.04.2007 16:45

сорри))ShellExecute в дельфи тоже есть ))))))почти тож самое но ExecuteFile() лучше Применяя ее,
не надо следить за типом pchar, который используется-для передачи
строк, потому что наша функция ExecuteFile сама сделает необходимые
преобразования.))

Xserg 06.04.2007 21:03

Цитата:

Сообщение от El_HALYAVA_
В windows есть ShellExecute запускающая в вашей программе любую указанную.

Можно типа очень упрощенно:
Код:

var s:string;
begin
s:=hotkey1.Hint+#0; // Alt+A
RegisterHotKey(form1.Handle,GlobalAddAtom(@s[1]),MOD_ALT,byte('A'));
end;

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;  var Handled: Boolean);
begin
if msg.message=WM_HOTKEY
then begin
ShellExecute(………
    end;
end;

Ну и читаем описание предложенных функций.


Время: 22:35