Вы можете просто использовать функцию API окон FindWindow. В delphi имя класса окна совпадает с именем класса, вы можете переопределить имя класса, переопределив функцию CreateParams. Чтобы проверить, существует ли окно, добавьте код перед созданием главного окна, перед Application.Initialize;
Program test
var
handle :HWND;
begin
handle := FindWindow('TMySuperApp', nil);
if IsWindow(handle) then
begin
//app is running
exit;
end.
Application.Initialize;
Application.CreateForm(TMySuperApp, SuperApp);
Application.Run;
end;
Этот недавний пост в обсуждении Fluent NHibernate заставляет меня думать, что фильтры еще не поддерживаются Fluent API.
На случай, если кто-то все еще это наблюдает, я только что отправил патч в код Google для Fluent NHibernate для поддержки фильтров. Вы можете увидеть, как это используется в ответе хихикера выше.
Если вы собираете Fluent из исходного кода, теперь есть поддержка фильтров. Вы используете их следующим образом:
Сначала создайте класс, унаследованный от FluentNHibernate.Mapping.FilterDefinition
:
using FluentNHibernate.Mapping;
namespace PonyApp.FluentFilters
{
public class PonyConditionFilter : FilterDefinition
{
public PonyConditionFilter()
{
WithName("PonyConditionFilter")
.AddParameter("condition",NHibernate.NHibernateUtil.String);
}
}
}
В своей ClassMap для вашего класса используйте метод ApplyFilter:
namespace PonyApp.Entities.Mappings
{
public class PonyMap : ClassMap<Pony>
{
public PonyMap()
{
Id(x => x.Id);
Map(x => x.PonyName);
Map(x => x.PonyColor);
Map(x => x.PonyCondition);
ApplyFilter<PonyConditionFilter>("PonyCondition = :condition");
}
}
}
Затем добавьте фильтр к ваша свободная конфигурация:
Fluently.Configure()
.Mappings(m => m.FluentMappings.Add(typeof(PonyConditionFilter)))
//blah blah bunches of other important stuff left out
.BuildSessionFactory();
Затем вы можете включать и выключать его, как в обычном NHibernate:
session.EnableFilter("PonyConditionFilter").SetParameter("condition","Wonderful");