Анти ShellExecute()

Тема в разделе "WASM.BEGINNERS", создана пользователем probka, 15 апр 2008.

  1. probka

    probka New Member

    Публикаций:
    0
    Регистрация:
    11 фев 2008
    Сообщения:
    170
    Как пустить поток из другого потока, это все знают:
    Код (Text):
    1. ShellExecute(0, static_cast<const char*>(x.data()), "programm.exe", NULL, NULL, SW_SHOW)
    А как этот поток "убить"?
     
  2. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    в своей программе надо убить ? :)
     
  3. a1ss

    a1ss New Member

    Публикаций:
    0
    Регистрация:
    18 ноя 2007
    Сообщения:
    120
    Это ты не просто поток запустил, а процесс. Как убить процесс в гугле ПОЛНО инфы.
     
  4. probka

    probka New Member

    Публикаций:
    0
    Регистрация:
    11 фев 2008
    Сообщения:
    170
    Flasher, ну да. Сначала запустили, как он отработал, уничтожить его.
     
  5. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    Есть повод почитать книжки по C\C++, WinAPI, культуре программирования. И до этого не писать ни одной строчки!
     
  6. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    для начала неплохо бы разобраться с терминами. и почитать руссиновича.
     
  7. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    скорее Рихтера.
     
  8. Rascalspb

    Rascalspb New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    46
    Адрес:
    СПб
    хотябы msdn почитать, уже было бы неплохо
     
  9. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    probkaExitThread,TerminateThread
     
  10. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    еще один юморист
     
  11. Osen

    Osen Рие

    Публикаций:
    0
    Регистрация:
    5 апр 2008
    Сообщения:
    283
    Адрес:
    Париж
    Да я вижу вы тут все юмористы, русиновича почитать, кнута, написать ос, а потом конечно уже можно и процесс прибить.

    probka
    Юзай Process32First/Process32Next для поиска процесса по имени - OpenProcess - TerminateProcess.
     
  12. probka

    probka New Member

    Публикаций:
    0
    Регистрация:
    11 фев 2008
    Сообщения:
    170
    Спасибо ;(
     
  13. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Osen
    Всё проще: ShellExecuteEx, SEE_MASK_NOCLOSEPROCESS, касательно топика.
     
  14. Osen

    Osen Рие

    Публикаций:
    0
    Регистрация:
    5 апр 2008
    Сообщения:
    283
    Адрес:
    Париж
    IceStudent
    Ценное замечание, ибо поиск процесса по имени явно не надежен. А я обычно для создания процесса, описатель которого нужен, юзаю CreateProcess, он и описатель по дефолту дает.
     
  15. Rascalspb

    Rascalspb New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    46
    Адрес:
    СПб
    если имя программы есть целевой, то проще сформировать командную строку и создать процесс через CreateThread, а там или WaitForSingleObject, или TerminateThread. ShellExecute чаще используют чтобы открывать файлы в ассоциированных программах, без указания конкретного приложения.
     
  16. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Млин, не путайте хоть человека.
    Во-первых CreateThread/TerminateThread создаёт/завершает ПОТОК а не процесс, и это не одно и то же.
    А во-вторых CreateThread никакой командной строки не принимает.
    Вы похоже с CreateProcess попутали.
     
  17. Rascalspb

    Rascalspb New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    46
    Адрес:
    СПб
    ой, это меня попутали =) конешно имелся ввиду CreateProcess. моск совсем того. тупо опечатка
    ну и есесно TerminateProcess