Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Start programmi 
:(
    Опции темы
Joh
Дата 21.3.2006, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 8.2.2005
Где: Germany

Репутация: нет
Всего: нет



Privet vsem!
takoj wopros:
kak moshno Message pojmat, kotoraja budet poslana pri starte odnoj levoj programmi? nado proverit pered startom odim parametr.
Esli uslovie =False startuj programmu, esli True togda schtoto vrode Messagebox vidat... (w2k, mogu tolko winapi/ MFC ne mogu)

Это сообщение отредактировал(а) Joh - 21.3.2006, 17:20
PM MAIL   Вверх
Earnest
Дата 21.3.2006, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Модератор: Joh, пользуйся транслитом (галка такая слева есть)
По сути вопроса:
Какое сообщение посылается - известно, надеюсь?
Кому оно посылается? Если это сообщение посылается как вещательное (HWND_BROADCAST), то можно просто поставить его обработчик в своем главном окне.
Если нет (какому-то конкретному окну) - ставь хук на все процессы (т.к. твой "левый" еще не запущен).



--------------------
...
PM   Вверх
Joh
Дата 21.3.2006, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 8.2.2005
Где: Germany

Репутация: нет
Всего: нет



o, супер функция однако етот транслит smile

Earnest спасибо за быстрий ответ, толъко я ничего не понял smile

блин пока правилъную букву найдешъ !!! мягкий знак не могу найти , поетому (перевернутую букву е тоже) пишу с твердым знакомsmile но не в етом дело...

на десктопе естъ icon при нажатии которого (double_click) стартует программа.
мне нужно каждый раз при старте етой программи проверит, сколъко sessions уже сушествуют на данный момент. если их число превышает допустим 25, то ета программа не должна бытъ происведена...




PM MAIL   Вверх
Athlon
Дата 21.3.2006, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 15.1.2006
Где: Украина:: Запорож ье

Репутация: нет
Всего: нет



Рихтер предлагает для этого использовать именованные объекты ядра, например "левая программа" создает такой объект, а твоя при старте проверяет наличие такого объекта:
Цитата

Именованные объекты часто применяются для того, чтобы не допустить запуска нескольких экземпляров одного приложения. Для этого Вы просто вызываете одну из Create-функций в своей функции main или WinMain и создаете некий именованный объект. Какой именно — не имеет ни малейшего значения. Сразу после Create-функции Вы должны вызвать GetLastError Если она вернет ERROR_ALREADY_EXISTS, значит, один экземпляр Вашего приложения уже выполняется и новый его экземпляр можно закрыть. Вот фрагмент кода, иллюстрирующий этот прием:
Код

int WINAPI WinMain(HINSTANCE hinstExe, HINSTANCE, PSTR pszCmdLine, int nCmdShow} {
    HANDLE h = CreateMutex(NULL, FALSE, "{FA531CC1-0497-11d3-A180-00105A276C3E}");
    lf (GetLastError() == ERROR_ALREADY_EXISTS){
         // экземпляр этого приложения уже выполняется
         return(0),
    }
    // запущен первый экземпляр данного приложения
    // перед выходом закрываем объект
    CloseHandle(h),
    return(0);
}



Sorry поторопился с ответом, этот вариант хорош если нужно чтобы запускалась только одна копия прграммы, можно конечно по извращаться..... smile

Это сообщение отредактировал(а) Athlon - 22.3.2006, 00:35
PM MAIL ICQ   Вверх
Fin
Дата 22.3.2006, 00:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дракон->Спать();
**


Профиль
Группа: Участник
Сообщений: 687
Регистрация: 4.1.2006

Репутация: 1
Всего: 10



Athlon, Скорее всего, программа не писана автором вопроса и исходников естественно нет. Можно сделать свою прогу-оболочку и линк на Десктопе повесить на нее. В самой проге проверять количество запусков и при выполнении условий запускать уже ту левую прогу.


--------------------
Пролетал мимо.
PM MAIL   Вверх
Earnest
Дата 22.3.2006, 08:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Цитата(Athlon @ 21.3.2006, 23:24 Найти цитируемый пост)
Sorry поторопился с ответом, этот вариант хорош если нужно чтобы запускалась только одна копия прграммы

Для запуска нескольких копий мьютекс просто заменяется на семафор...

Fin, из вопроса действительно непонятно, есть ли какой-то механизм в "левой" программе. Если она совсем "левая", то предложенный тобою способ все-таки оставляет возможность запустить ее прямо, помимо всякой оболочки. Я думаю, и в этом случае можно написать какой-нибудь монитор, который будет следить за открытием процессов...

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


--------------------
...
PM   Вверх
Fin
Дата 22.3.2006, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дракон->Спать();
**


Профиль
Группа: Участник
Сообщений: 687
Регистрация: 4.1.2006

Репутация: 1
Всего: 10



В винде ХР сушествует механизм внедрения во все абсолютно запускаемые процессы своей Dll. Нужно только выставить ключ в реестре. В своей Dll проверять, соответствует ли данный файл условиям. Ну и при несоответствии вырубать процесс.


--------------------
Пролетал мимо.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0459 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.