cmd-Fenster an x und y Position setzen?

Gast #6348322
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.
#6348436
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.
Angehängte Dateien:
Gast #6348632
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
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren