Как всегда открывать консольное приложение в определенной точке экрана? [Дубликат]

Для docker-compose вы можете использовать следующие docker-compose.yml

version: '2'
services:
  nginx:
    image: nginx
    container_name: nginx-container
    networks:
      static-network:
        ipv4_address: 172.20.128.2
networks:
  static-network:
    ipam:
      config:
        - subnet: 172.20.0.0/16
          #docker-compose v3+ do not use ip_range
          ip_range: 172.28.5.0/24

с хоста, с которым вы можете протестировать, используя:

docker-compose up -d
curl 172.20.128.2

Современный docker-compose будет автоматически создавать контейнеры с статический ip для вас.

Чтобы найти статические ips всех контейнеров в вашей docker-compose в одной строке, используйте:

for s in `docker-compose ps -q`; do echo ip of `docker inspect -f "{{.Name}}" $s` is `docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $s`; done

Если вы хотите автоматизировать, вы можете использовать что-то вроде этого пример gist

2
задан TeamBreezy 8 February 2016 в 07:29
поделиться

1 ответ

Вы можете использовать API окон, чтобы переместить окно консоли. Используйте DllImport для объявления функций WinApi, которые вы хотите использовать:

[DllImport("kernel32.dll", SetLastError = true)]
static extern IntPtr GetConsoleWindow();

[DllImport("user32.dll", SetLastError = true)]
internal static extern bool MoveWindow(IntPtr hWnd, int X, int Y, int nWidth, int nHeight, bool bRepaint);

Затем вызовите их: например,

IntPtr ptr = GetConsoleWindow();
MoveWindow(ptr, 0, 0, 1000, 400, true);

Вы можете использовать дополнительную функцию WinApi как SetWindowPos. Синтаксис DllImport можно найти в Интернете для PInvoke и имени функции. Следуйте объяснениям там и в MSDN.

5
ответ дан Fratyx 17 August 2018 в 20:53
поделиться
  • 1
    Работал как бомба! ThankQ очень много - вы сделали мою жизнь намного легче. Можете ли вы осыпать благословениями – TeamBreezy 9 February 2016 в 13:35
Другие вопросы по тегам:

Похожие вопросы: