Так вот. Надо, чтобы моя программа не могла запускаться если запущена другая (не копия запускаемой). Нужно в списке процессов поискать название запущеной програмы. Но как это сделать? Куда копать?
Здравствуйте, Аноним, Вы писали:
А>Так вот. Надо, чтобы моя программа не могла запускаться если запущена другая (не копия запускаемой). Нужно в списке процессов поискать название запущеной програмы. Но как это сделать? Куда копать?
NtQueryInformationProcess
API функция. Находится в Ntdll.dll. Исп-ся для получения списка процессов в winnt операционках. в ME/98 не работает
описание искать в MSDN
Альтернативный вариант, при помощи
GetWindow
перебираешь все окна и ищешь окно со своим заголовком. Читать так же в MSDN
Разница между НЕ МОГУ и НЕ ХОЧУ лишь в самообмане...
Splean
SC>API функция. Находится в Ntdll.dll. Исп-ся для получения списка процессов в winnt операционках. в ME/98 не работает SC>описание искать в MSDN
Зачем же так сложно ? Process32First/Next, работает везде, кроме NT4. А там EnumProcesses
With best regards
Pavel Dvorkin
Re[2]: Как отследить процесс?
От:
Аноним
Дата:
13.10.05 10:58
Оценка:
А если мне надо, чтобы во время работы моей программы никакой другой процесс, кроме моего не имел доступ к рабочей директории? Что тогда?
И мой софт должен работать как на Win95 так и на Win2003S.
Блин, а Process32First/Next в MSDN есть пример, но пишу на делфе и в каком модуле эти ф.-ии описаны?
Прийдется экспортировать? Описывать новые структуры?
Здравствуйте, <Аноним>, Вы писали:
А>Блин, а Process32First/Next в MSDN есть пример, но пишу на делфе и в каком модуле эти ф.-ии описаны? А>Прийдется экспортировать? Описывать новые структуры?
MSDN:
Requirements
Client: Requires Windows XP, Windows 2000 Professional, Windows Me, Windows 98, or Windows 95.
Server: Requires Windows Server 2003 or Windows 2000 Server.
Header: Declared in Tlhelp32.h.
Library: Use Kernel32.lib.
Здравствуйте, <Аноним>, Вы писали:
А>Так вот. Надо, чтобы моя программа не могла запускаться если запущена другая (не копия запускаемой). Нужно в списке процессов поискать название запущеной програмы. Но как это сделать? Куда копать?
А у этой программы есть окно? Если есть, то можно попытаться найти его при помощи FindWindow
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Как отследить процесс?
От:
Аноним
Дата:
14.10.05 05:07
Оценка:
Здравствуйте, m-a-s, Вы писали:
MAS>Здравствуйте, <Аноним>, Вы писали:
А>>Так вот. Надо, чтобы моя программа не могла запускаться если запущена другая (не копия запускаемой). Нужно в списке процессов поискать название запущеной програмы. Но как это сделать? Куда копать?
MAS>А у этой программы есть окно? Если есть, то можно попытаться найти его при помощи FindWindow
Окно есть. Но она в процессе работы открывает другие модальные окна при этом скрываясь.
Здравствуйте, <Аноним>, Вы писали:
А>Окно есть. Но она в процессе работы открывает другие модальные окна при этом скрываясь.
Ну и что? Скрытое окно — тоже окно, и находится так же как и видимое. FindWindow/FindWindowEx ещё работают нормально (или я что-то пропустил в обновлениях виндов? )
... <<Apocalyptica — Path vol2>>
Не восхрапи на работе, ибо храпом своим разбудишь начальника своего.
Здравствуйте, Аноним, Вы писали:
А>Так вот. Надо, чтобы моя программа не могла запускаться если запущена другая (не копия запускаемой). Нужно в списке процессов поискать название запущеной програмы. Но как это сделать? Куда копать?
Здравствуйте, <Аноним>, Вы писали:
А>Здравствуйте, m-a-s, Вы писали:
MAS>>Здравствуйте, <Аноним>, Вы писали:
А>>>Так вот. Надо, чтобы моя программа не могла запускаться если запущена другая (не копия запускаемой). Нужно в списке процессов поискать название запущеной програмы. Но как это сделать? Куда копать?
MAS>>А у этой программы есть окно? Если есть, то можно попытаться найти его при помощи FindWindow
А>Окно есть. Но она в процессе работы открывает другие модальные окна при этом скрываясь.
Если хайдится, то по классу основного окна это самое окно можно найти. Не важно видимое оно или нет.
Здравствуйте, <Аноним>, Вы писали:
А>Блин, а Process32First/Next в MSDN есть пример, но пишу на делфе и в каком модуле эти ф.-ии описаны? А>Прийдется экспортировать? Описывать новые структуры?
толи ToolHelp толи ToolHlp32 — точно не помню — посмотри в папке $(DELPHI)\Source\ и подпапках...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))
Здравствуйте, splean.com, Вы писали:
SC>Здравствуйте, Аноним, Вы писали:
А>>Так вот. Надо, чтобы моя программа не могла запускаться если запущена другая (не копия запускаемой). Нужно в списке процессов поискать название запущеной програмы. Но как это сделать? Куда копать?
SC>
SC>NtQueryInformationProcess
SC>
SC>API функция.
Гон. Это — НЕ API. Она есть, да, до её можно дотянутся и вызвать. Но:
[NtQueryInformationProcess is available for use in Windows 2000 and Windows XP. It may be altered or unavailable in subsequent versions. Applications should use the alternate functions listed in this topic.]
Т.е. это, конечно, API, но это Native API, а не Win32 API. Разницу чувствуешь?
Здравствуйте, Spaider, Вы писали:
А>>>Так вот. Надо, чтобы моя программа не могла запускаться если запущена другая (не копия запускаемой). Нужно в списке процессов поискать название запущеной програмы. Но как это сделать? Куда копать?
SC>>
SC>>NtQueryInformationProcess
SC>>
SC>>API функция.
S>Гон. Это — НЕ API. Она есть, да, до её можно дотянутся и вызвать. Но:
S>
S>[NtQueryInformationProcess is available for use in Windows 2000 and Windows XP. It may be altered or unavailable in subsequent versions. Applications should use the alternate functions listed in this topic.]
S>Т.е. это, конечно, API, но это Native API, а не Win32 API. Разницу чувствуешь?
Гон. Это — НЕ API
-- skipped --
Т.е. это, конечно, API
ты прав на все 100%
Разница между НЕ МОГУ и НЕ ХОЧУ лишь в самообмане...
Splean