Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2014, 09:42   #1
Oleg983112
Новичок
Джуниор
 
Регистрация: 13.11.2014
Сообщений: 1
По умолчанию C# Поместить окно внешнего приложения в форму

Доброе время суток! Помогите, пожалуйста, решить задачу - нужно поместить окно внешнего приложения в форму Windows Forms, чтобы этим приложением можно было управлять как элементом формы, в том числе менять его размер.
Oleg983112 вне форума Ответить с цитированием
Старый 14.11.2014, 10:18   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Тебе наверное нужно почитать как в шарпее использовать WinAPI функцию SetParent(). Я такое себе делал (встраивал DOS программу на форму) но на Делфи.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.11.2014, 10:21   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
чтобы этим приложением можно было управлять как элементом формы
Что именно надо?
Ну в любом случае все это делать придется через вызов функций WinApi, а не как с обычным контролом.

http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx
http://www.codeproject.com/Articles/...inForm-project
Код:
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        // импорт WinApi функций и констант

        [DllImport("user32.dll", SetLastError = true)]
        private static extern long SetParent(IntPtr hWndChild, IntPtr hWndNewParent);

        [DllImport("user32.dll", EntryPoint = "SetWindowLongA", SetLastError = true)]
        private static extern long SetWindowLong(IntPtr hwnd, int nIndex, long dwNewLong);

        [DllImport("user32.dll", SetLastError = true)]
        private static extern bool MoveWindow(IntPtr hwnd, int x, int y, int cx, int cy, bool repaint);

        private const int GWL_STYLE = -16;
        private const int WS_VISIBLE = 0x10000000;

        private IntPtr appHandle; // Handle окна другого приложения

        public Form1()
        {
            InitializeComponent();

            EmbedNotepad();
        }

        private void EmbedNotepad()
        {
            // запуск блокнота и получение его хэндла
            var p = Process.Start("notepad.exe");
            p.WaitForInputIdle();
            appHandle = p.MainWindowHandle; // MainWindowHandle не для всех приложений может работать, тогда с помощью EnumThreadWindows, например

            // положить на форму
            SetParent(appHandle, Handle);

            // убрать рамку окна
            SetWindowLong(appHandle, GWL_STYLE, WS_VISIBLE);

            // изменить месторасположения/размер
            MoveWindow(appHandle, 0, 0, 300, 200, true);
        }
    }
}
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 14.11.2014 в 10:35.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поместить кнопку на форму Егор41 Microsoft Office Excel 7 19.05.2012 22:56
Запуск внешнего приложения с функцией Viru$174 C# (си шарп) 4 24.02.2011 00:40
Запуск внешнего приложения из Excel vanandr91 Microsoft Office Excel 2 13.11.2010 14:12
как поместить рисунок на форму .... Vladnet Общие вопросы Delphi 4 02.04.2009 16:46
Запуск внешнего приложения Fia Общие вопросы Delphi 13 18.09.2008 07:27