Feedback

C# - Console in eigene Form einbinden

Veröffentlicht von am 17.11.2007
(1 Bewertungen)
Ob es nun Sinn macht oder nicht, manche Personen wollen die Windows Console
in ihr eigenes Programm einbinden mit dieser kleinen Klasse könnt Ihr dieses Realisieren.

TIP: sobald Ihr in der StartConsole ein anderes Programm reinsetzt
und die Constante ClassName etwas abändert könnt Ihr jedes Fenster in
eure App mit einbinden.
GFU-Schulungen  [Anzeige]

VB.NET 2017/2015/2013 Aufbau

Nach dieser Schulung können Sie mittels objektorientierter Modelle in VB.NET 2017/2015/2013 wiederverwendbare Elemente eigenständig erstellen.

C# Aufbaukurs

Sie haben grundlegende .NET- und C#-Kenntnisse und und wollen diese nun erweitern. Der Aufbaukurs C# führt Sie ein die Arbeit mit Interfaces und Delegates, Generics und Parallel Computing.

using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using System.Diagnostics;

namespace Tools{
    class CmdDocking {
        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        public static extern IntPtr
        FindWindow([MarshalAs(UnmanagedType.LPTStr)] string lpClassName,
        [MarshalAs(UnmanagedType.LPTStr)] string lpWindowName);

        [DllImport("user32.dll")]
        public static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);

        [DllImport("user32.dll")]
        static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X,
           int Y, int cx, int cy, uint uFlags);

        public CmdDocking(){
            StartConsole();
        }
        private const String ClassName = "ConsoleWindowClass";
        /// <summary>
        /// Die System Console CMD.EXE starten
        /// </summary>
        private void StartConsole() {
            Process process = new Process();
            process.StartInfo = new ProcessStartInfo(string.Format(@"{0}\cmd.exe",Environment.GetFolderPath(Environment.SpecialFolder.System)));
            process.Start();
        }

        /// <summary>
        /// Console in eigene Form einbinden
        /// </summary>
        /// <param name="formToDock">Form in die, die Console eingebunden werden soll</param>
        /// <param name="posX">Position X des Consolen Fensters</param>
        /// <param name="posY">Position Y des Consolen Fensters</param>
        /// <param name="width">Breite des consolen Fensters</param>
        /// <param name="hight">Höhe des consolen Fensters</param>
        public void DockConsole(Form formToDock, int posX, int posY, int width, int hight) {
            SetWindowPos(GetHwnd(), IntPtr.Zero, posX, posY, width, hight, 0);
            SetParent(GetHwnd(), formToDock.Handle);
        }

        private IntPtr GetHwnd() {
            return FindWindow(ClassName, null);
        }
        
    }
}

1 Kommentare zum Snippet

Niklas schrieb am 17.10.2010:
Und was muss ich für Classname einsetzen, um andere Programme einzubinden?
 

Logge dich ein, um hier zu kommentieren!