Wie mache ich das genau? Habe 30 Minuten gegoogelt und nichts gefunden. Nur für interne Forms
Größe und Position eines externen Fenster's ändern
-
- [C#]
- Mr. Unbekannt
-
-
-
Code
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Runtime.InteropServices;
- using System.Diagnostics;
- namespace WindowTest
- {
- class Program
- {
- [DllImport("user32.dll", SetLastError = true)]
- internal static extern bool MoveWindow(IntPtr hWnd, int X, int Y, int nWidth, int nHeight, bool bRepaint);
- static void Main(string[] args)
- {
- while (true)
- {
- //Gewünschte Werte anfordern
- Console.Write("Process: ");
- string strProcess = Console.ReadLine(); //Prozessname (z.b. notepad)
- Console.Write("xPos: ");
- int xPos = Convert.ToInt32(Console.ReadLine()); //x-Koordinate
- Console.Write("yPos: ");
- int yPos = Convert.ToInt32(Console.ReadLine()); //y-Koordinate
- Console.Write("Width: ");
- int width = Convert.ToInt32(Console.ReadLine()); //Breite des Fensters
- Console.Write("Height: ");
- int height = Convert.ToInt32(Console.ReadLine()); //Höhe des Fensters
- //MainWindowHandle vom Fenster besorgen
- Process[] procWindow = Process.GetProcessesByName(strProcess); //Prozesse besorgen, die "Prozessname" (s.o.) entsprechen
- if (procWindow.Length > 0)
- {
- foreach (Process proc in procWindow) //Alle Prozesse durchloopen (optional)
- {
- MoveWindow(proc.MainWindowHandle, xPos, yPos, width, height, true); //Fenster verschieben und Größe ändern
- }
- }
- else
- {
- Console.WriteLine("Process does not exist"); //Prozess existiert nicht
- }
- Console.WriteLine("#############################################################################");
- }
- }
- }
- }
Hab's mal auf die schnelle gemacht. Ist nichts großartiges. Melde dich, falls du Fragen hast
-
Danke dir
Den Quellcode kann ich flüssig lesen und verstehen , jedoch stellt sich mir die Frage:Wieso zum Teufel muss man für ein einfaches Fenster verschieben eine dll callen? -
-
Weil man auf Windows-Funktionen zurückgreift Und die stecken halt in den dll's
-
Das ist die WinAPI. Du greifst auch mit anderen Funktionen wie zB Sockets oÄ. darauf zu nur hast du die in c# Klassen verpackt und merkst es nicht.