Exe Starten und Position und Größe angeben



  • Sorry, aber das zeug aus der msdn-libary check ich echt überhaupt nicht. Da wäre ein beispiel ganz gut



  • Hallo,

    Wie Akari schon sagte, brauchst ShellExecuteEx statt ShellExecute. Da du den Handle des erzeugten Fensters für SetWindowPos benötigst.
    Etwa so:

    SHELLEXECUTEINFO sei;
    ZeroMemory((PVOID)&sei, sizeof(sei));
    // Infostruktur füllen
    sei.cbSize = sizeof(sei);
    sei.fMask  = SEE_MASK_NOCLOSEPROCESS;
    sei.nShow  = SW_SHOW;
    sei.lpVerb = TEXT("open");
    sei.lpFile = TEXT("C:\\x29.exe"); // Name der Applikation
    //sei.lpParameters = TEXT("para"); falls Parameter erforderlich sind
    ShellExecuteEx(&sei);
    // Test ob Aufruf erfolgreich, sei.hProcess ist dann das Handle der aufgerufenen Applikation
    if(sei.hProcess)
    {
    // Setzen von Position und Größe, Parameter müssen vorher belegt werden
        SetWindowPos(sei.hProcess, HWND_TOP, top, left, width, height, SWP_NOSIZE);
    }
    

    Die Parameter mußt du halt entsprechend anpassen. Im von HEZ angegebenen Link ist auch ein Beispiel dabei.
    Bei weiteren Nachfragen solltest du aber im WinAPI-Forum nachfragen.

    Ciao



  • Ach so, ShellExecute() gibt ja gar kein Handle zurück. Brauchst also doch ShellExecuteEx(). Na da wirst du um die MSDN wohl nicht rum kommen.

    Ist wohl inzwischen ein WinAPI-Problem, vielleicht findest du in dem Unterforum was. (Suchen, nicht posten, wird ein Mod schon verschieben, wenns da rübergehört.)

    //Oha, hab gar nicht bemerkt, dass sich da jemand reingedrängt hat...



  • Ok, danke für die Hilfe, leider wird aber nicht die Größe und die Position des Fensters geändert. Hab diese Frage jetzt schon im WinAPI-Forum gestellt.

    Bye



  • Liest Du die Postings überhaupt?!?

    HEZ schrieb:

    (Suchen, nicht posten, wird ein Mod schon verschieben, wenns da rübergehört.)



  • Kann es sein, daß der Parameter "SWP_NOSIZE" an der Stelle fehl am Platz ist?

    MSDN schrieb:

    SWP_NOSIZE
    Retains the current size (ignores the cx and cy parameters).

    Ansonsten müßte es irgendeine Möglichkeit geben, zu dem hProcess das Fenster herauszufinden *grübel*



  • Das SWP_NOSIZE hab ich da nur so hingeschrieben ohne auf die Wirkung zu schauen. Immerhin steht die Bedeutung der Parameter im angegebenen Link. Ich selber hab mit SetWindowPos noch nicht gearbeitet.



  • Naja, ich verwende SWP_SHOWWINDOW, damit funktionierts aber auch nicht



  • Du brauchst ein Fensterhandle, um etwas mit dem Fenster machen zu können, kein Prozesshandle. Also mußt du das erstmal rausfinden (versuch' mal FindWindow() dafür)



  • MartinN schrieb:

    Hab diese Frage jetzt schon im WinAPI-Forum gestellt.

    Und da geht's jetzt weiter.

    In Zukunft aber bitte den Thread von einem Moderator in das gewünschte Forum verschieben lassen.


Anmelden zum Antworten