Завершить процесс зная путь к запускаемому файлу

Тема в разделе "WASM.BEGINNERS", создана пользователем zxcc, 10 авг 2010.

  1. zxcc

    zxcc New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2006
    Сообщения:
    172
    Здравствуйте.
    Подскажите как можно завершить процесс(завершить программу) зная путь к запускаемому файлу.
    Спасибо.
     
  2. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
    Перебрать все процессы, если найдено совпадения имени то закрыть процесс
    сделать можно с помощью GetModuleFileNameEx ( PSAPI )
    http://www.rsdn.ru/article/qna/baseserv/enumproc.xml
     
  3. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    1) вычленить имя исполняемого файла из пути
    2) найти пид процесса по имени исполняемого файла
    3) завершить процесс можно многими способами

    в чем проблема то?
     
  4. zxcc

    zxcc New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2006
    Сообщения:
    172
    Подскажите как вычленить имя исполняемого файла из пути?
     
  5. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    найти последний символ '\' в строке пути к файлу...
     
  6. churik

    churik New Member

    Публикаций:
    0
    Регистрация:
    28 авг 2008
    Сообщения:
    19
    Найди в строке последний бек-слеш('\') - после него, очевидно, имя модуля) - легко реализуется циклом.
     
  7. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    774
    Цикл сюда показываем, ато я не помню уже подробности.
     
  8. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    774
    Вот что-то нашёл =)

    start:
    invoke GetCommandLine
    mov ebx,eax
    next:
    cmp byte [ebx],'-'
    je found
    cmp byte [ebx],0
    jz exit
    inc ebx
    jmp next
    found:
    inc ebx
    invoke sndPlaySound,ebx,NULL
     
  9. expert

    expert New Member

    Публикаций:
    0
    Регистрация:
    19 янв 2009
    Сообщения:
    151
    не изобретайте велосипед - PathFindFileName.
     
  10. churik

    churik New Member

    Публикаций:
    0
    Регистрация:
    28 авг 2008
    Сообщения:
    19
    Верно) Но и сделать велосипед бывает полезно/интересно^_^
     
  11. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    774
    Код (Text):
    1. include '%fasm%\win32ax.inc'
    2. section '.code' executable
    3. start:
    4.         invoke GetModuleFileName,NULL,lpFileName,MAX_PATH
    5.         mov    ecx,eax
    6.         lea    edi,[lpFileName+eax-1]
    7.         std
    8.         mov    al,'\'
    9.         repne  scasb
    10.         mov    byte[edi+1],0
    11.         cld
    12. @:
    13.         invoke MessageBox,NULL,lpFileName,' FileDir: ',MB_OK
    14. exit:
    15.         invoke ExitProcess,NULL
    16.  
    17. .end start
    18.  
    19. section '.data' readable writable
    20.         lpFileName dd NULL
    21.  
    22. section '.rsrc' resource readable
    23.         directory RT_MANIFEST,_manifest
    24.         resource _manifest,1,LANG_NEUTRAL,manifest
    25.  
    26.         resdata manifest
    27.         file '%fasm%\manifest32.xml'
    28.         endres
     
  12. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    774
    Вот ещё один примерчик, только тут наоборот путь отсекается
    Код (Text):
    1. start:
    2.         invoke GetCurrentDirectory,MAX_PATH,lpBuffer
    3.         invoke MessageBox,NULL,lpBuffer,'I''m here:',MB_OK
    4. exit:
    5.         invoke ExitProcess,NULL
    6.  
    7. lpBuffer db 2048 dup (?)
     
  13. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    В данном случае лучше велосипед из 5-х строчек на асме, чем загрузка тяжелой артилерии - shlwapi.dll :) Вот если бы эта функа в kernel32 стдела, тогда другое дело
     
  14. fsd

    fsd New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2010
    Сообщения:
    353
    ntdll.dll!strrchr
    ntdll.dll!wcsrchr