В Visual Studio 2003 Visual Studio 2005 и возможно более ранние версии (это работает в 2008 также) можно включать текстовый файл в проект, затем в панель 'Properties', установить действие на 'Встроенный Ресурс'. Затем можно получить доступ к файлу как к потоку с помощью Assembly.GetManifestResourceStream(string)
.
Другие ответы здесь более удобны. Я включаю это для полноты.
Примечание, что этот подход будет работать на встраивание других типов файлов, таких как изображения, значки, звуки, и т.д.
Я не думаю, что существует стандартный способ получить IP-адрес. Вероятно, существуют разные несовместимые реализации мониторов сетевых портов. Для моего сетевого принтера IP-адрес является частью имени порта (например, IP_192_168.1.104
). Если он такой формы, то вы могли бы разобрать его, но я не думаю, что это универсальный вариант.
Используя EnumPorts
, вы можете определить, является ли это сетевой принтер, но я все еще не делаю этого. Не вижу способа получить IP-адрес.
Как и любое другое сетевое IP-устройство, принтер будет иметь IP-адрес (обозначающий его карту Ethernet) и будет запускать службу на определенном порту (идентифицируя программу, отвечающую на сообщения принтера). Это всего лишь сетевой материал и пока не имеет ничего общего с конкретным принтером.
Так что, учитывая только порт, нет никакого способа найти его IP-адрес. Вероятно, службы на всех других принтерах прослушивают один и тот же порт.
Предполагая, что вы имеете в виду, что у вас есть имя принтера, вам нужно запросить службу имен для вашего домена. Эта служба сопоставляет сетевые адреса «символическим» именам.
Используя api winsock2, я считаю, что это gethostbyname
, которое вам нужно. Это позволит получить информацию о хосте вашего принтера по его имени.
Просто используйте Advanced Printer API, динамический вызов