Member
Статус: Не в сети Регистрация: 31.12.2003 Откуда: Жукова
Ray Adams
Цитата:
Ведь есть переменнач Handle - несет HWND твоего окна
Я в душе не чаю, что handle - переменная - я ее в var не объявлял. Просто нашел такую строчку в хелпе. Главное работает!!!
Цитата:
Тут у меня мысль пришла! А может ты просто не знаеш как работать с реестром? Ты скажи , поможем
Как создать запись в реестре я знаю (даже писал как-то в autorun), НО я не знаю как проверить существует ли запись где-то в реестре или нет. У меня в файле хранятся wnd и ti, если это делать в реестре, то 2 записи? и куда можно писать, чтобы не мусорить и есть ли шанс запороть реестр?
stargaz0r Что такое мьютекс?
Таймер только усложнит прогу.
Короче приведенная прога компилится и работает именно ТАК как НАДО. Прошу писать предложения только по упрощению/усовершенствованию
Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
Цитата:
НО я не знаю как проверить существует ли запись где-то в реестре или нет
Проще простого.
Переменная типа TRegistry имеет такие штуки как ValueExists, а хранить можно скажем всегда в одной и той же ветке.
SOFTWARE\My Company\My Application - соответственно заменив компанию и имя программы на свои. Никакх проблем не будет, а вот с файлом, мало ли что может быть , реест грубо говоря в памяти висит, файл же всегда на диске.
Хочеш я сделаю простейший пример в исходниках, чтобы понятно было.
Member
Статус: Не в сети Регистрация: 23.09.2003 Откуда: South Ural
Starr мьютекс проще пареной репы - вот мой код для проверки запуска второй копии программы
function CheckPrevInstance: boolean;
var hMutex: THandle;
begin
result := false;
hMutex := OpenMutex(MUTEX_ALL_ACCESS, false, MutexName);
if hMutex = 0 then
begin
hMutex := CreateMutex(nil, true, MutexName);
if hMutex <> 0 then result := true;
end;
end;
а обработать таймер тоже ничего сложного....
Ray Adams что ты предлагаешь работать будет, но не есть высокий штиль в программировании прошу писать в реестр только с флагом volatile - не надо мусорить!
Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
Starr Забирай
http://cp.people.overclockers.ru/cgi-bi ... =testm.zip там в сорцах также лежит unit
checkprv.pas он отвечает за создание мутекса и проверки его и также создает глобальную переменную hPrevInst , которая если true то значить есть уже одна такая копия. Все остальное там с коментариями, думаю поймеш как пашет.
Цитата:
что ты предлагаешь работать будет, но не есть высокий штиль в программировании Smile прошу писать в реестр только с флагом volatile - не надо мусорить!
Если бы ты видел как насилуют реестр другие программы! Мать пере мать, мне пару раз так было дурно! А тут, к примеру если надо сохранять свои настройки в своей ветке реестра, то что плохого если будет там одна переменная лежать?
Member
Статус: Не в сети Регистрация: 23.09.2003 Откуда: South Ural
Ray Adams
Цитата:
Если бы ты видел как насилуют реестр другие программы
да видел!
Цитата:
то что плохого если будет там одна переменная лежать
вот так каждый и думает, а в результате в реестре - содом с гоморрой!
ну что стоит создать ключ в реестре с флагом volatile - он просто не сохранится после перезагрузки?
Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
Цитата:
ну что стоит создать ключ в реестре с флагом volatile - он просто не сохранится после перезагрузки?
Согласен, в принципе я дал сорц, а уж как его будут юзать, это дело человека который будет юзать.
Добавлено спустя 5 минут, 27 секунд: Кстати идея интересна, но в пределах одной программы!
Цитата:
Windows NT/2000 or later: All keys created by the function are volatile. The information is stored in memory and is not preserved when the corresponding registry hive is unloaded. For HKEY_LOCAL_MACHINE, this occurs when the system is shut down. For registry keys loaded by the RegLoadKey function, this occurs when the corresponding RegUnloadKey is performed. The RegSaveKey function does not save volatile keys. This flag is ignored for keys that already exist.
А не получится ли так, что при закрытии записи в реестр одной программой, ветка сразу будет уничтожена? и Вторая копия ничего не увидит в ней?
Member
Статус: Не в сети Регистрация: 31.12.2003 Откуда: Жукова
Ray Adams, stargaz0r thanks, буду пробовать...
stargaz0r Мне ведь надо ещё переменную ti изменять при каждом повторном запуске и как к этому мутекс прилепить? Но все равно где-нить пригодится - спасибо.
Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
Starr Ты с примером моим покопайся, там все поймеш. Как раз то, что тебе надо пример и делает. При запускке второй копии, первая закрывается и вторая становится основной и так далее по цепочке.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения