список запущенных программ

Тема в разделе "LANGS.C", создана пользователем ZEVSIK, 14 мар 2009.

  1. ZEVSIK

    ZEVSIK New Member

    Публикаций:
    0
    Регистрация:
    4 мар 2009
    Сообщения:
    13
    q_q Извиняюс просто при отладке та поменял временно, чтоб посмотреть, а то получалось что все "Not valid PSP". Но вопрос в другом, тогда как добраться до имен программ в psp или в энвироне? По какому смещению он(энвирон) от мкб и его size? Mожет я не правильно понял? То есть: если mcb.owner "похож" на psp значит имя берем из environ той программы(чей mcb), а тот идет сразу за mcb? Или может еще где-то?
     
  2. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    ZEVSIK
    > как добраться до имен программ в psp или в энвироне
    Environment - это набор строк разделенных нулевым символом, после последней строки их (нулевых символа) два.
    За этими двумя нулями расположен word (зачем он не знаю, обычно он равен единице).
    За ним полное имя запущенной программы, завершающееся нулем.

    Итого. Если у очередного mcb поле owner "похоже" на psp, то
    Код (Text):
    1. char far *sstr = (char far *) FP_MAKE(psp->environment, 0);
    2. while (*sstr)
    3.   sstr += (strlen(sstr) + 1);
    4. sstr += 3;
    5. printf("%s\n", sstr);