Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Wie sage ich CreateProcess auf welchem Screen es aufgehen soll?

Empfohlene Antworten

Veröffentlicht

hi, zusammen.

ich habe zwei bildschirme und öffne mit CreateProcess eine applikation.

wie kann ich nun bestimmen auf welchem bildschirm die applikation startet?

:confused:

hab ich schon probiert :


STARTUPINFO         StartInfo;


memset(&StartInfo, 0 , sizeof(StartInfo));


StartInfo.cb = sizeof(StartInfo); // Set structure size

StartInfo.dwX = 200;

StartInfo.dwY = 1500;

StartInfo.dwFlags = STARTF_USEPOSITION ;


int res = CreateProcess(NULL, arguments.c_str(), NULL, NULL, NULL,

                          NULL, NULL, NULL, &StartInfo,

                          &ProcInfo);

damit sollte die anwendung doch auf dem rechten bildschirm aufgehen(bei 1024x768) oder?

kannst du das etwas erläutern ?

ich hab doch nur einen desktop der über beide screens geht!

Original geschrieben von Guhopa

hab ich schon probiert :



STARTUPINFO         StartInfo;


memset(&StartInfo, 0 , sizeof(StartInfo));


StartInfo.cb = sizeof(StartInfo); // Set structure size

StartInfo.dwX = 200;

StartInfo.dwY = 1500;

StartInfo.dwFlags = STARTF_USEPOSITION ;


int res = CreateProcess(NULL, arguments.c_str(), NULL, NULL, NULL,

                          NULL, NULL, NULL, &StartInfo,

                          &ProcInfo);

damit sollte die anwendung doch auf dem rechten bildschirm aufgehen(bei 1024x768) oder?

Kann es sein das du die X und Y Koordinaten vertauscht hast? Weil der Desktop

wird doch normalerweise nach rechts erweitert oder nicht?

Gruß

Guybrush

@Guybrush Threepwood

wäre schön wenns nur das wäre :(

Kann es sein das du die X und Y Koordinaten vertauscht hast?

aber es scheint völlig egal zu sein mit welchen kordinaten man ihn füttert, irgendwas fehlt mir noch :confused:

aber was ??:eek:

Kann sein, dass du gar nichts dran ändern kannst. Die Einstellungen mit STARTF_USEPOSITION wirken sich nur dann aus, wenn die betreffende Anwendung ihr erstes Overlapped-Fenster mit CW_USEDEFAULT als Koordinatenwerten erstellt. Tut sie das nicht, bewirken dwX und dwY nichts. Wie sieht denn das Applikationsfenster nach dem Start aus? Maximiert?

Hast du EnumDesktops mal ausprobiert?

Wenn alles nichts hilft, könntest du dir nach dem Start das Fensterhandle holen und das Fenster verschieben.

1. EnumDesktops hab ich probiert und er gibt mir folgende "desktops":

WinSta0, SAWinSta, Service-0x0-3e7$, Service-0x0-3e4$, Service-0x0-3e5$

aber ich weiss nicht was ich damit soll <schulterzuck>

2. die apps öffnen sich ganz normal z.b.notepad oder word wie beim letzten

benutzen

3. das verschieben nach dem start wollte ich eigentlich vermeiden;)

Original geschrieben von Guhopa

1. EnumDesktops hab ich probiert und er gibt mir folgende "desktops":

WinSta0, SAWinSta, Service-0x0-3e7$, Service-0x0-3e4$, Service-0x0-3e5$

aber ich weiss nicht was ich damit soll <schulterzuck>

Hab ich doch geschrieben: Setze lpDesktop auf einen dieser Strings, z.B.:

StartInfo.lpDesktop = "SAWinSta";

Einfach mal durchprobieren ;)

also das mit dewn desktops hab ich sein gelassen:D

bringt nichts .

nun hab ich es nochmal über den STARTINFO struct bei CreateProcess probiert


STARTUPINFO         StartInfo; 

  PROCESS_INFORMATION ProcInfo; 


  memset(&ProcInfo, 0, sizeof(ProcInfo)); 

  memset(&StartInfo, 0 , sizeof(StartInfo)); 


  HWND hwnd = GetDesktopWindow(); 

  RECT rect; 

  GetWindowRect(hwnd, &rect); 


  int x = rect.right / 4; 

  int y = rect.bottom / 4; 


  StartInfo.cb = sizeof(StartInfo); // Set structure size 

  StartInfo.dwX = x ; 

  StartInfo.dwXSize = x; 

  StartInfo.dwY = y ; 

  StartInfo.dwYSize = y; 

  StartInfo.wShowWindow = SW_SHOW; 

  StartInfo.dwFlags = STARTF_USEPOSITION | STARTF_USESHOWWINDOW |   

                      STARTF_USESIZE ; 


  StartInfo.lpDesktop = "Default"; 


  int res = CreateProcess(NULL, arguments.c_str(), NULL, NULL, NULL, 

                          NULL, NULL, NULL, &StartInfo, 

                          &ProcInfo);

aber es ist wohl völlig egal was ich hier eingebe:(

 StartInfo.dwX = x ; 

  StartInfo.dwXSize = x; 

  StartInfo.dwY = y ; 

  StartInfo.dwYSize = y; 

HELP

zur allgemeinen info :

ich hab den process jetzt mit SW_HIDE gestartet und dann mit movewindow verschoben:bimei

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.