Как бы это осуществить? Не используя посторонние объекты... Т.е. Именно посчитать кол-во запущенных процессов, и если n, то не запускать еще...
Не корректно выразился Блин, не умею объяснять... Т.е. вот есть MyProg.exe, я его запускаю. А если я его запускаю второй раз, не выйдя из первого экземпляра, то второй экземпляр выходит.
В начале программы выполняешь OpenMutex, т.е. проверяешь наличие именнованного Mutex (имя должно быть оригинальным, придуманным тобой). Если Mutex существует, то экземпляр программы уже был запущен и нужно завершить текущий процесс. Если не существует - CreateMutex именованный Mutex с твоим оригинальным именем.
А скажите еще плиз, как в принципе получить доступ к процессу, если их несколько? Вот например запущено у меня 3 notepad.exe, как мне например каждый закрыть? Process32First/Next только 1 раз возвращает. И если например не закрывать процесс, а что-то другое делать, то все время один и тот же возвращает. А до других как добраться?
Process32First - ищет первый Process32Next - следующий В цикле делаешь Process32Next до тех пор, пока не будет не найден. Внутри цикла делаешь то, что нужно.
Lex2029 Код (Text): .code start: push 0 push offset szClassName call _imp__FindWindowA@8 test eax, eax jnz ExitLoop ... ExitLoop:: push 0 call _imp__ExitProcess@4
А если у нас 10 метров свободно, а swap файл уже 1.5 GB? тогда первый экземпляр не успеет создать окно, если запустить сразу второй. то есть способ с FindWindow не очень надежен.