Хендл процесса

Тема в разделе "WASM.BEGINNERS", создана пользователем TOLSTOPUZ, 13 июл 2008.

  1. TOLSTOPUZ

    TOLSTOPUZ New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2008
    Сообщения:
    509
    Оконное приложение.
    хочу изменить его приоритет. (А также всех дочерних)
    Но функция SetPriorityClass требует хендл процесса.

    BOOL SetPriorityClass(
    HANDLE hProcess, // дескриптор процесса
    DWORD dwPriorityClass // значение класса приоритета
    );

    Как узнать хендл процесса приложения?
     
  2. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    GetCurrentProcess
    OpenProcess
     
  3. TOLSTOPUZ

    TOLSTOPUZ New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2008
    Сообщения:
    509
    Спасибо, 2FED
    И кстати за вчерашние подсказки тоже
    насчёт перерисовки окна, ты где-то был прав.
    Шаришь! :)
     
  4. Magnum

    Magnum New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2007
    Сообщения:
    925
    для для собственного процесса достаточно псевдохендла, т.е. константы 0ffffffffh
     
  5. TOLSTOPUZ

    TOLSTOPUZ New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2008
    Сообщения:
    509
    Ну да, я так и поступил

    start:
    invoke GetModuleHandle,NULL
    mov hInstance,eax
    invoke GetCommandLine
    invoke GetCurrentProcess ; Вычисляем псевдохэндл
    invoke SetPriorityClass,eax,HIGH_PRIORITY_CLASS ;Ставим высокий приоритет процесса
    invoke WinMain,hInstance,NULL,CommandLine,SW_SHOWDEFAULT
    invoke ExitProcess,eax

    Теперь программа работает адекватно.
    Раньше загрузка процессора была 99% и глючила
    Сейчас 57%
     
  6. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Ошибочно прямо связывают загрузку процессора потоком и его приоритет.
     
  7. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    Регистрация:
    20 апр 2007
    Сообщения:
    2.624
    Адрес:
    ого..
    Great
    чё?
     
  8. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    Воабще если поток грузит обрабатывает данные без задержек( то есть не стоит всяких sleep) то до окончания цикла он и будет грузить проц на полную, и приоретет тут ни причём, наоборот чем выше приоретет тем больше он будет времени отнимать у других потоков, не понимаю как может снизится загрузка ЦП при повышении приоретета =/
     
  9. driver

    driver New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2008
    Сообщения:
    302
    не будет ли подобна картина наблюдаться если процесс юзает регистры, юзать которые не рекомендуется...
     
  10. dead_body

    dead_body wasm.ru

    Публикаций:
    0
    Регистрация:
    3 сен 2004
    Сообщения:
    603
    Адрес:
    Украина;г.Харьков;г.Н.Каховка
    driver
    это как? вроде юзать можо, всё если юзать правильно.
     
  11. driver

    driver New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2008
    Сообщения:
    302
    система ... переключает потоки, по ходу дела восттанавливая регистры - она же их тоже использует ..вот и грузится проц..
     
  12. TOLSTOPUZ

    TOLSTOPUZ New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2008
    Сообщения:
    509
    Категорично повторяю то, что вижу. Ранее процессор грузил на полную ( 99% )и программа глючила. Сейчас 57 процентов и главное всё выполняется чистенько. Почему - не знаю.
    По скорости не смотрел ещё.
     
  13. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    TOLSTOPUZ Всему есть логичное объяснение.
    driver Бред, причём тут регистры и загрузка процессора? при переключении контекста сохроняется состояние процессора полностью, тоесть все регистры и EFALGS
     
  14. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    2FED
    А типа eflags к регистрам не относится. Но это не суть. А суть здесь:
    http://www.wasm.ru/forum/viewtopic.php?pid=252385#p252385
    И кто-то еще писал, что в windows именно так и реализовано переключение задач. Так что ИМХО driver отчасти прав. Хотя "регистры, юзать которые не рекомендуется" - это, конечно, сильно сказано.