ShellExecute. спицифичное использование

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by El_HALYAVA_, 4 Apr 2007.

  1. El_HALYAVA_

    El_HALYAVA_ New Member

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

    je0n Elder - Старейшина

    Joined:
    14 May 2006
    Messages:
    345
    Likes Received:
    96
    Reputations:
    41
    эт тебе надо перехватывать нажатия клавиш. Юзай API-функции GetKeyState() и GetAsyncKeyState(). имхо самый простой вариант.

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


    P.S. если потребуется перевести какой участок кода из того примера на паскаль (delphi) скажи, попробуем помочь )
     
    #2 je0n, 4 Apr 2007
    Last edited: 4 Apr 2007
  3. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    1. Это не дельфийская функция.
    2. запускает что?
    1. Юзай глобальный хук.
    2. Что за примеры, дай посмотреть?
     
  4. sob@ke

    sob@ke Banned

    Joined:
    30 Dec 2006
    Messages:
    35
    Likes Received:
    9
    Reputations:
    -1
    Для этго те над писать думаю DLL'шник ищи статьи по написанию DLL)))типа глобальный hook)
     
  5. sob@ke

    sob@ke Banned

    Joined:
    30 Dec 2006
    Messages:
    35
    Likes Received:
    9
    Reputations:
    -1
    [/QUOTE]Сообщение от El_HALYAVA_
    Собственно в дельфи есть довольно неплохиее функции. К примеру такая как ShellExecute запускающая в вашей программе любую указанную.

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

    sob@ke Banned

    Joined:
    30 Dec 2006
    Messages:
    35
    Likes Received:
    9
    Reputations:
    -1
    сорри))ShellExecute в дельфи тоже есть ))))))почти тож самое но ExecuteFile() лучше Применяя ее,
    не надо следить за типом pchar, который используется-для передачи
    строк, потому что наша функция ExecuteFile сама сделает необходимые
    преобразования.))
     
  7. Xserg

    Xserg Elder - Старейшина

    Joined:
    9 Dec 2006
    Messages:
    135
    Likes Received:
    127
    Reputations:
    53
    Можно типа очень упрощенно:
    Code:
    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;
    
    Ну и читаем описание предложенных функций.
     
    1 person likes this.