Чтобы удалить зазор под изображением, вы можете:
vertical-align: bottom;
vertical-align: top;
или vertical-align: middle;
display:block;
См. следующий код для живой демонстрации:
#vAlign img {
vertical-align :bottom;
}
#block img{
display:block;
}
div {border: 1px solid red;width:100px;}
img {width:100px;}
No fix:
With vertical-align:bottom; on image:
With display:block; on image:
Разрыв или дополнительное пространство под изображением не является ошибкой или проблемой, это поведение по умолчанию. Основная причина заключается в том, что изображения заменяются элементами ( см. MDN и W3C ). Это позволяет им «действовать как изображение» и иметь собственные собственные размеры, соотношение сторон ... Браузеры вычисляют свое свойство отображения inline
, но они придают им особое поведение, которое приближает их к элементам inline-block
(так как вы
Это также означает, что:
[...] когда изображения используются во встроенном контексте форматирования с выравниванием по вертикали: базовая линия, нижняя часть изображения будет отображаться на базовой линии контейнера. ( source: MDN , focus mine )
blockquote>Поскольку браузеры по умолчанию вычисляют свойство vertical-align для базовой линии, это значение по умолчанию поведение. На следующем изображении показано, где базовая линия находится по тексту:
[/g15]
Элементы, выровненные по базовой линии, должны содержать место для дескрипторов которые простираются ниже базовой линии (например,
j, p, g ...
), как вы можете видеть на приведенном выше изображении. В этой конфигурации нижняя часть изображения выравнивается по базовой линии, как вы можете видеть в этом примере:
div{border:1px solid red;} img{width:100px;height:auto;}
jpq are letters with descenderВот почему поведение по умолчанию тега
создает пробел в нижней части его контейнера и почему изменение свойства вертикального выравнивания или свойства отображения удаляет его, как в следующей демонстрации:
div {width: 100px;border: 1px solid red;} img {width: 100px;height: auto;} .block img{ display:block; } .bottom img{ vertical-align:bottom; }
Default:
With display:block;
With vertical-align:bottom;
Службы Windows не могут иметь графический интерфейсов пользователя, таким образом, Вы должны будете или избавиться от GUI или разделить Ваше приложение на две части - сервис без UI и приложение "контроллера". Если у Вас есть исходный код, преобразовывание кода не-GUI на службу легко - Visual Studio имеет тип проекта 'службы Windows', который заботится об обертывании для Вас, и существует простая пошаговая демонстрация, которая показывает Вам, как создать проект развертывания, который будет заботиться об установке.
, Если Вы выбираете второй маршрут и должны поместить часть исходного кода GUI в контроллер, контроллер и сервис могут связаться через WCF, Дистанционную работу.NET или простые сокетные соединения с протоколом, который Вы определяете сами. Если Вы используете Дистанционную работу, несомненно, будут использовать "короткий" интерфейс, который передает данные с как можно меньшим количеством вызовов метода - каждый вызов имеет изрядное количество издержек.
, Если UI довольно прост, можно быть в состоянии сойти с рук использование конфигурационных файлов для входа и файлов журнала или Windows Event Log для вывода.
Имеет любого, использовал сторонний продукт как: Всегда ?
, Кажется, делает то, в чем я нуждаюсь. Это - возможность продолжать бежать посредством входа в систему / циклы выхода из системы, в которых я нуждаюсь. И возможность проигнорировать, что это - приложение для GUI и выполняет его так или иначе.
Они должны связываться в exe вручную и называть WinMain или что-то.
Можно обернуть его в srvany, хотя Вы, возможно, должны присвоить ему фактическую учетную запись пользователя (в противоположность LocalService или некоторым такой)
Сначала я должен был бы спросить, почему для Вашего сервиса нужен пользовательский интерфейс. Скорее всего, это не делает, но Вам, вероятно, нужен клиент, который получает данные из этого сервиса. Причина сервисы обычно не имеют GUI, у них не может быть оконной среды для выполнения в. Услуги могут запуститься и работать без пользователя, зарегистрированного к машине. В этом случае не было бы никакого рабочего стола для сервисного GUI для выполнения в.
сказавший, что можно установить свойства на сервисе работать как пользователь, как предложил Mark. Можно также определить в свойствах сервиса "Позволить сервису взаимодействовать с рабочим столом". Только сделайте это, если Вы знаете, что пользователь будет зарегистрирован.
У Вас есть источник? Во многих случаях различие между автономным приложением и сервисом минимально.
большинство изменений связано со сцеплением кода в менеджера по сервису правильно. После того, как сделанный, Вы будете знать, что любыми проблемами, которые происходят, является результат Вашего программирования и не любой другой программы.
Что происходит, если Вы создаете сервис. Тот сервис, настраивают для взаимодействия с рабочим столом. Настройте его, чтобы выполнить некоторого пользователя и запуститься автоматический. От сервиса CreateProcess на это другое приложение. Я предположил бы, что это быстро, чтобы попытаться использовать C# (C/C++ был большим количеством кода, чтобы даже быть сервисом, если я вспоминаю). Это работало бы??
, НО!
Моя первая мысль должна была бы создать виртуальный компьютер в классе сервера виртуальный хост (как Виртуальный сервер, HyperV, VMware). Те виртуальные машины будут работать как сервис (или независимо от того, что Hyper V делает). Виртуальная машина всегда работала бы - независимо от входа в систему и.
Делают этот виртуальный компьютер автоматическим входом в систему окон (TweakUI может настроить это), и затем просто запустите приложение для GUI с помощью ярлыка на папку Startup. Вы можете даже удаленный рабочий стол в него использовать GUI программы (я держал пари, Всегда не может сделать этого).
Сервис не должен иметь GUI, так как он должен работать без любой необходимости в любом вмешательстве от пользователя, и существуют все виды проблем, связанных с нахождением и связью с корректным пользовательским рабочим столом.
С тех пор, по-видимому, причина выяснения это должно быть в состоянии удаленно контролировать приложение, способ сделать это состоял бы в том, чтобы иметь два приложения. Сервисная сторона (записанный в основном как консольное приложение) и сторона GUI клиента/контроля. Сервис использовал бы некоторую удаленную возможность соединения (когда я сделал это, я использовал Именованные каналы) связываться с клиентом/приложением мониторинга. Любой должен быть в состоянии работать без другого, и конечно услуга должна быть в состоянии работать с клиентом.