Скрипт для открытия исполняемых файлов и привязки к верхнему левому углу рабочего стола

Мне просто интересно, есть ли в файле .bat способ вызвать внешний файл .bat или даже *.exe и сделать его открытым, чтобы он «привязывался» к верхнему левому углу экрана?

Ваше здоровье


person user226973    schedule 09.12.2009    source источник


Ответы (4)


Нет прямого способа позиционировать окно из командной строки Windows. В основном у вас есть следующие варианты:

  • Используйте инструмент автоматизации с графическим интерфейсом, например. AutoHotkey, который позволяет записывать действия окна. AutoHotkey, например. предлагает команду WinMove:

    Run, calc.exe
    WinWait, Calculator
    WinMove, 0, 0 ; Move the window found by WinWait to the upper-left corner of the screen.
    
  • Используйте PowerShell, например. с помощью оснастки WASP (http://wasp.codeplex.com/).

  • Напишите короткую программу на C/C++/.NET, которая поместит активное окно в позицию 0,0 вашего главного экрана.

Очень простая программа на C#, которая принимает заголовок окна в качестве параметра, может выглядеть так:

using System;
using System.Runtime.InteropServices;

class Program
{
    public const int SWP_NOSIZE = 0x0001;
    public const int SWP_NOZORDER = 0x0004;

    [DllImport("user32.dll", SetLastError = true)]
    private static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int x, int y, int cx, int cy, uint uFlags);

    [DllImport("user32.dll", SetLastError = true)]
    static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

    static void Main(string[] args)
    {
        IntPtr handle = FindWindow(null, args[0]);
        SetWindowPos(handle, IntPtr.Zero, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOZORDER);
    }
}
person Dirk Vollmar    schedule 09.12.2009
comment
Я дал вам ответ на этот вопрос. Но я собираюсь использовать и ваш метод, и метод Фрэнсиса. Мой основной скрипт также вызывает несколько файлов .bat и исполняемых файлов. Метод AutoHotKey выглядит проще; не то чтобы я использовал AutoHotKey раньше. +1 к знаниям :) - person user226973; 10.12.2009

в поле cmd введите help start.

пример: start /MAX "xxx.bat"

person Francis    schedule 09.12.2009
comment
Это запустит окно в развернутом виде. То, что хочет OP, - это окно, привязанное к верхнему левому углу экрана. - person Dirk Vollmar; 09.12.2009
comment
для cmd(bat) окно будет привязано к левому верхнему углу при максимизации. - person Francis; 09.12.2009
comment
Спасибо Фрэнсис. Не «ТОТ» ответ, который я искал, но он мне несколько помогает. Я забыл о переключателе /MAX для «старта». Я думаю, что буду использовать это для вызова моих файлов .bat и AutoHotKey для приложений. Милль спасибо! - person user226973; 10.12.2009

Используйте команду start.

person Klaus Byskov Pedersen    schedule 09.12.2009

Это немного грязно, но я думаю, что это можно сделать.

Вам потребуется установить две программы:
AutoIt
Winsplit Revolution

Создайте скрипт autoit, чтобы:
1. открыть нужную программу или пакетный файл
2. дождаться открытия программы
3. сделать программу активным окном
4. нажать ctrl+ alt+7, "Отправить("^!7")" (Ярлык Winsplit Revolution для отправки программы в верхний левый угол)
5. Завершить скрипт

Если у меня будет время позже, я попытаюсь написать это

person JoeOD    schedule 09.12.2009