посчитать количество запусков

Тема в разделе "Общие вопросы по С и С++", создана пользователем qqwertty, 5 июн 2010.

Статус темы:
Закрыта.
  1. qqwertty

    qqwertty Гость

    Возможно ли посчитать сколько ли раз запущена программа.
    Сразу скажу вариант: запуск программы, добавляем 1-ку в файл мне не подойдет.
    Нужно в процессе работы программы знать сколько раз она запущена.
     
  2. vital

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.471
    Симпатии:
    27
    Ну можно в бд сохранять, или на сайт куда-нить отправлять.
     
  3. qqwertty

    qqwertty Гость

    Не в том дело. Мне нужно в определенный момент знать сколько раз запущена программа. Допустим ситуацию: мы запустили программу 2 раза, в файле или еще где у нас 2-ка, мы закрыли одну из них, у нас все равно 2-ка.
     
  4. vital

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.471
    Симпатии:
    27
    Ну и в чем проблема?
    При запуске программы записывайте попутно куда-нить количество копий. И там же при запуске проверйте это число. Если 0 или 1 - то увеличивайте основное число, если больше, то ничего не делайте.
    Зы.
    Почитайте про Mutex'ы и Named Pipes
     
  5. grigsoft

    grigsoft Well-Known Member

    Регистрация:
    15 ноя 2005
    Сообщения:
    735
    Симпатии:
    0
    Это называется число одновременно работающих копий. Про семафор еще почитайте.
     
  6. vital

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.471
    Симпатии:
    27
    Ну так примеры что пробовали и что не вышло на форум)
     
  7. qqwertty

    qqwertty Гость

    Код
    Код (Text):
    INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR szCmdLine, INT nCmdShow)
    {
    HANDLE hShared = CreateSemaphore(NULL, 0,3, "Test");
    MessageBox(0,AnsiString(ReleaseSemaphore(hShared,1,NULL)).c_str(),"",MB_OK);
    MSG msg;
    RegisterHotKey(NULL, ID_SHUTDOWN_HOTKEY, MOD_ALT, VK_ESCAPE);
    while(1)
    {
    if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
    if(msg.message == WM_HOTKEY) {
    if( msg.wParam == ID_SHUTDOWN_HOTKEY ) {
    CloseHandle(hShared);
    return 0;
    }
    }
    }
    }

    }
    три раза ReleaseSemaphore возвращает "1", на 4 "0", все правильно, но когда завершишь пару программ, она все равно вернет "0".
     
  8. vital

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.471
    Симпатии:
    27
  9. qqwertty

    qqwertty Гость

    Вобщем все, разобрался, семафоры не понадобились, сделал через CreateToolhelp32Snapshot.
    Всем спасибо.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей