Moin Leute,
ich habe ein Batch-Programm, das eine Console an der Windos Default Position öffnet.
Dieses Console-Fenster möchte ich verschieben, dazu habe ich im Net diesen Code gefunden, um das
Zum Test habe ich "cmd" aufgerufen.
Problem:
Ich bekomme ein Handle zurück, aber das Fenster reagiert nicht, weder als x86 noch als x64.
Ich nehme an, dass das wieder so ein W10 Effekt ist.
Könnt Ihr den Code vielleicht mal unter W7 und W8 / W8.1 probieren?
Weiß jemand von Euch, wie ich unter W10 das Handle auf die Console bekomme?
Dies ist der Code, keine der eingebauten Möglichkeiten funktioniert:
Spoiler anzeigen
ich habe ein Batch-Programm, das eine Console an der Windos Default Position öffnet.
Dieses Console-Fenster möchte ich verschieben, dazu habe ich im Net diesen Code gefunden, um das
HWND
der Console zu bekommen.Zum Test habe ich "cmd" aufgerufen.
Problem:
Ich bekomme ein Handle zurück, aber das Fenster reagiert nicht, weder als x86 noch als x64.
Ich nehme an, dass das wieder so ein W10 Effekt ist.
Könnt Ihr den Code vielleicht mal unter W7 und W8 / W8.1 probieren?
Weiß jemand von Euch, wie ich unter W10 das Handle auf die Console bekomme?
Dies ist der Code, keine der eingebauten Möglichkeiten funktioniert:
C#-Quellcode
- using System;
- using System.Runtime.InteropServices;
- using System.Windows.Forms;
- namespace WindowsFormsApplication1
- {
- public partial class Form1 : Form
- {
- class NativeMethods
- {
- internal const int SWP_NOSIZE = 0x1;
- internal const int SWP_NOMOVE = 0x2;
- internal const int SWP_NOZORDER = 0x4;
- [DllImport("user32.dll")]
- internal static extern IntPtr FindWindow(string hwndParent, string hwndChildAfter);
- [DllImport("user32.dll")]
- internal static extern IntPtr FindWindow(IntPtr hwndParent, IntPtr hwndChildAfter);
- [DllImport("user32.dll")]
- internal static extern bool MoveWindow(IntPtr hWnd, int X, int Y, int nWidth, int nHeight, bool bRepaint);
- [DllImport("user32")]
- internal static extern int SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int x, int y, int cx, int cy, int wFlags);
- }
- public Form1()
- {
- this.InitializeComponent();
- }
- private void button1_Click(object sender, EventArgs e)
- {
- this.SetWindowPos();
- }
- private void SetWindowPos()
- {
- string windowClass = "ConsoleWindowClass";
- string name = "Administrator: Eingabeaufforderung";
- #if true//false//
- IntPtr hWnd = NativeMethods.FindWindow(windowClass, name);
- #else
- IntPtr ptrHWnd = Marshal.StringToHGlobalAnsi(windowClass);
- IntPtr ptrName = Marshal.StringToHGlobalAnsi(name);
- IntPtr hWnd = NativeMethods.FindWindow(ptrHWnd, IntPtr.Zero);
- Marshal.FreeHGlobal(ptrHWnd);
- Marshal.FreeHGlobal(ptrName);
- #endif
- if (hWnd != IntPtr.Zero)
- {
- NativeMethods.MoveWindow(hWnd, 5, 5, 500, 350, false);
- //NativeMethods.SetWindowPos(hWnd, IntPtr.Zero, 5, 5, 0, 0, NativeMethods.SWP_NOSIZE | NativeMethods.SWP_NOZORDER);
- }
- }
- }
- }
Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert!
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert!