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

Discussion in 'LANGS.C' started by ZEVSIK, Mar 14, 2009.

  1. ZEVSIK

    ZEVSIK New Member

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

    q_q New Member

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

    Итого. Если у очередного mcb поле owner "похоже" на psp, то
    Code (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);