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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Peter B. (funkheld)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Verknuepfung mit cmd.exe.
Properties -> Layout -> Window Position

von Sigi (Gast)


Bewertung
0 lesenswert
nicht 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:

Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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.
#include <Windows.h>

int main()
{
    HWND w = GetConsoleWindow();
    SetWindowPos( w, HWND_TOP, 20, 20, 0, 0, SWP_NOSIZE | SWP_NOZORDER );
}

von guest (Gast)


Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.