Подтвердить что ты не робот

Процесс открытия и изменение положения окна

Я хочу открыть из С# приложение (автономный flashplayer) и установить его положение (0,0) на экране. Как я могу это сделать? Пока мне удалось открыть flashplayer:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;

namespace swflauncher
{
    class Program
    {
        static void Main(string[] args)
        {
            Process flash = new Process();
            flash.StartInfo.WindowStyle = ProcessWindowStyle.Normal;

            flash.StartInfo.FileName = "D:\\development\\flex4\\runtimes\\player\\10\\win\\FlashPlayer.exe";
            flash.Start();
        }
    }
}
4b9b3361

Ответ 1

Попробуйте SetWindowPos, как описано здесь. Эта страница показывает, как вызвать ее из С#.

Ответ 2

Спасибо, ребята, сейчас он работает!:)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Threading;

namespace swflauncher
{
    class Program
    {
        static void Main(string[] args)
        {
            Process flash = new Process();
            flash.StartInfo.WindowStyle = ProcessWindowStyle.Normal;

            flash.StartInfo.FileName = "D:\\development\\flex4\\runtimes\\player\\10\\win\\FlashPlayer.exe";
            flash.Start();
            Thread.Sleep(100);

            IntPtr id = flash.MainWindowHandle;
            Console.Write(id);
            Program.MoveWindow(flash.MainWindowHandle, 0, 0, 500, 500, true);
        }

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


    }
}

Ответ 3

Как только вы запустите Process, его свойство MainWindowHandle должно быть настроено на некоторый дескриптор Windows, который можно использовать для управления в главном окне запущенного приложения. Я не думаю, что есть способ переместить его напрямую с помощью .NET API, но вы можете использовать функцию API MoveWindow через P/Invoke.

Вот несколько ссылок, где вы можете найти дополнительную информацию: