Builder C++ Как программе узнать, что запущена другая программа?
Как сделать так, чтобы программа сказала службе "Все! теперь можешь делать свои дела!"
Подскажите плз, как вообще наладить коммуникацию между приложением и службой?
а нельзя открыть какой-нибудь файловый дескриптор и слушать его? как там под виндой такое делается?
Файловый дескриптор, на сколько я понял децл погуглив, это что-то юниксовое?... или нет? у мну винда, но мне кажется, есть же у нее что-то чтоб отмечать все запущенные приложения....
//тело службы
void __fastcall TUpdateService::ServiceExecute(TService *Sender)
{
while(!Terminated) // Цикл от запуска винды и до упора
{
if(программу MyFuckingProgram запустили)
{
Делаем то, что нужно сделать
}
ServiceThread->ProcessRequests(false);
}
}
Или, если со стороны приложения нажали на кнопочку, то:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
обратиться к службе и сказать, что она может делать все, чего так долго ожидала
}
как-то так....
http://msdn.microsoft.com/en-us/library/ms682623%28VS.85%29....
коммуникация — через пайп
http://msdn.microsoft.com/en-us/library/aa365590%28VS.85%29....
коммуникация — через пайп
http://msdn.microsoft.com/en-us/library/aa365590%28VS.85%29....
буду разбираться
В винде есть именованные event'ы. Если нужно передать только сам факт запуска программы - самое то.
проще воспользоваться обычными средствами межпроцессной синхронизацииЭ... туплю что-то совсем.... а можешь дать маленький пример кода со стороны программы и со стороны службы? Хотя бы примерно понять, как это выглядит изнутри... спасибо.
В винде есть именованные event'ы. Если нужно передать только сам факт запуска программы - самое то.Вроде, ссылка от и есть про именованные эвенты, только все равно нихрена не пойму и туплю страшно...
Дальше там, где ждешь, вызываешь функцию WaitForSingleObject, справка тоже есть в MSDN. Она блокирует выполнение, пока не будет поднято событие.
Программа сигнализирует вызовом функции SetEvent, справку можно смотреть в MSDN. Там же должны быть примеры.
http://msdn.microsoft.com/en-us/library/ms686915%28v=VS.85%2...
Вот, есть такое. Но тут еще используются потоки. Но там немного лишнего.
Сначала полезно прочитать это: http://msdn.microsoft.com/en-us/library/ms682655%28v=VS.85%2...
Вот, есть такое. Но тут еще используются потоки. Но там немного лишнего.
Сначала полезно прочитать это: http://msdn.microsoft.com/en-us/library/ms682655%28v=VS.85%2...
Оставить комментарий
markyzz
Ситуация следующая:При включении винды автоматически запускается служба и работает.
Пользователь запускает некую программу. При этом запуске служба должна отреагировать (именно при запуске именно этого и никакого другого исполняемого файла) и сделать что-то свое.
То есть, я кликаю по файлу "MyFuckingFile.exe", а служба в этот момент "Оп-пачки! Он это сделал! Поехали, ребята!"
Не подскажете, как это сделать?
заранее спасибо!