Добро пожаловать, гость
:: алгоритмы  и методы :: :: олимпиадные задачи :: :: связь :: :: о сайте :: :: форум ::

Форум работает в режиме архива, только для чтения и поиска.
Архив 2004 Архив 2007 Архив 2013

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.08.2009, 19:05
гость

 
Сообщений: n/a

WINAPI32 HELP!
вот по идее приложение должно отображать сколько приложений запущено, но на практике такого не выходит))

// показывает сколько приложений программы запущено

#include <windows.h>
#include <tchar.h>

// создается специальный раздел, в который помещается переменная Appearance
#pragma data_seg("Appearances")

volatile LONG Appearance = 0;

#pragma data_seg()

// говорит компилятору , что вновь созданный раздел является разделяемым
#pragma comment(linker , "/Section:Shared,RWS")



int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE , LPSTR lpCmdLine , int nShowCmd)
{
// делаем операцию прибавление единицы атомарной
InterlockedExchangeAdd((PLONG) &Appearance , 1);

TCHAR TApp[10];
wsprintfW(TApp , _T("%d") , Appearance);
MessageBox(NULL , TApp , NULL , MB_OK);

// искусственная пауза
for (int i = 0; i < 2000000000; i++);

MessageBox(NULL , TApp , NULL , MB_OK);

// делаем операцию убавления единицы атомарной
InterlockedExchangeAdd((PLONG) &Appearance , -1);
return 0;
}
  #2  
Старый 04.08.2009, 22:24
гость

 
Сообщений: n/a

Да такое проще через файлы сделать во временном каталоге, хотя бы будет работать везде, а не только под вашей виндовс.

Причём файлы лучше всего лочить, чтобы можно было отслеживать какие экземпляры программы крахнулись если чё. И обычно в файл пишут pid программы.
  #3  
Старый 13.08.2009, 18:22
гость

 
Сообщений: n/a

Сообщение от гость Посмотреть сообщение
Да такое проще через файлы сделать во временном каталоге, хотя бы будет работать везде, а не только под вашей виндовс.

Причём файлы лучше всего лочить, чтобы можно было отслеживать какие экземпляры программы крахнулись если чё. И обычно в файл пишут pid программы.
Не знаю, чувак ты по мне под фряху прогал, Pid - у процессов в раазных Юниках. У виндусятников хендлы - ака дескрипторы процессов,
ну и ладно, так и быть потоков) Здесь все просто, Чувак, молодец, пытается понять концепцию АПИ, Рихтера И Пиетрика ему в руки) Ошибка в обьявлении переменной, раздел неправильно указан, должен быть не shared, а что - то свое)
  #4  
Старый 13.08.2009, 19:38
гость

 
Сообщений: n/a

Сообщение от гость Посмотреть сообщение
Не знаю, чувак ты по мне под фряху прогал, Pid - у процессов в раазных Юниках. У виндусятников хендлы - ака дескрипторы процессов,
в виндузе тоже есть понятие пида - см GetProcessId() в мсдн

а хендл это фигня, они существуют только внутри конкретного процесса, т.е. в разных процессах один и тот же хендл может обозначать разные процессы и наоборот, один и тот же процесс может иметь разные хендлы в разных процессах. А вод pid - глобальный способ именования процессов.
 


Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра