Forum: PC-Programmierung cmd-Fenster an x und y Position setzen?


von Peter B. (funkheld)


Lesenswert?

Hallo, guten tag.

Wie kann man bitte ein CMD-Fenster (Win10) an eine bestimmte xy-Position 
setzen?

Anpassen an der Größe funktioniert mit : mode 40,10

Danke.
Gruss

von PZ (Gast)


Lesenswert?

Das geht anscheinend nicht ohne zusatz Software. Musst schauen ob das 
cmdow mit Windows 10 funktioniert.

https://ritchielawrence.github.io/cmdow/

von Larry (Gast)


Lesenswert?

Verknuepfung mit cmd.exe.
Properties -> Layout -> Window Position

von Sigi (Gast)


Lesenswert?

In der Win32-API gibt's zwei Befehle dazu:
SendMessage: damit lassen sich Nachrichten an
die eigene als auch an Fremde Anwendungen schicken
EnumWindows: Zählt mittels eigener CallBack-Funktion
alle Toplevel-Fenster auf.

Man kann z.B. den Namen der Toplevel-Fenster abfragen
und dann dem Fenster eine MoveWindow-Nachricht schicken.
Im Prinzip kannst du eine Einfache Konsolenanwendung
schreiben, die dann sogar im selben CMD-Fenster
aufgerufen werden kann.

Ist nicht ganz einfach (kein 10-Zeiler), aber trotzdem
in kurzer Zeit machbar.

von Adam P. (adamap)


Angehängte Dateien:

Lesenswert?

Sigi schrieb:
> In der Win32-API

Ich habs mal anders gemacht, aber funktioniert auch.

Kannst es in verschiedenen Formen aufrufen:
-p = Position (x, y)
-s = Size (width, height) Angabe in Zeichen, so wie du es oben erwähnt 
hast.

1) myCMD.exe -p 10 100 -s 40 10
2) myCMD.exe -s 40 10 -p 10 100
3) myCMD.exe -p 10 100
4) myCMD.exe -s 40 10
5) myCMD.exe

Vllt. hilft dir das ;-)
Brauchst eigentlich dann nur noch eine Verknüpfung mit den Parametern 
erstellen.

: Bearbeitet durch User
von guest (Gast)


Lesenswert?

Sigi schrieb:
> Man kann z.B. den Namen der Toplevel-Fenster abfragen
> und dann dem Fenster eine MoveWindow-Nachricht schicken.
> Im Prinzip kannst du eine Einfache Konsolenanwendung
> schreiben, die dann sogar im selben CMD-Fenster
> aufgerufen werden kann.

Wenn man eh schon via EnumWindows das passende Handle hat, kann man auch 
gleich direkt die MoveWindow oder SetWindowPos Funktion aufrufen. Spart 
die Rumbastelei mit den Nachrichten.

Innerhalb der Console reduziert sich das dann Dank "GetConsoleWindow" 
auf einen Zweizeiler.
1
#include <Windows.h>
2
3
int main()
4
{
5
    HWND w = GetConsoleWindow();
6
    SetWindowPos( w, HWND_TOP, 20, 20, 0, 0, SWP_NOSIZE | SWP_NOZORDER );
7
}

von guest (Gast)


Lesenswert?

Ah.
Seh hab, daß Adam das genau so schon umgesetzt hat. Bei der 
Größenänderung sollte man eventuell noch die Maximalgröße 
berücksichtigen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.