Programm öffnen und danach Fenstergröße anpassen



  • hallo zusammen,
    habe da ein problem.
    vor einem halben jahr habe ich ein kleines proogramm geschrieben, welches ein programm z.b. Acrobat Reader6.x öffnet und zusätzlich noch direkt das zugehörige pdf. dies hat auch bis jetzt wunderbar funktioniert, jedoch habe ich auf Acrobat Reader 7.0 umgestellt und es funktioniert nicht mehr. es wird einfach nur der Reader gestartet und das zugehörige pdf nicht mehr.
    bitte kann mir jemand eine brauchbare info geben. werde den code einfach mal reinstellen, möglicherweise sieht einer von euch gleich den fehler.

    //#include <afxwin.h>
    #include <windows.h>
    #include <iostream>
    #include <string.h>
    #include <stdlib.h>
    using namespace std;
    
    STARTUPINFO stgStartupInfo;
    PROCESS_INFORMATION stgProcessInfo;
    
    const int MAX_STR = 256;
    
    int main(int argc, char **argv)  
    {
    	bool gefunden = false;
    	int applikationshoehe = 100, Button = 0, help = 0;
    	char cmd_line[MAX_STR];
    	char * applikationPfad = NULL;
    	char * dateiPfad = NULL;
    	char * applikationName = NULL;
    	char * dateiName = NULL;
    	char hHandleWindow[MAX_STR];
    	char * MsgText_Ueberschrift = NULL;
    	char * MsgText_Text = NULL;
    
    		//####applikationPfad = argv[1];
    		//####dateiPfad = argv[2];
    		applikationPfad = "C:\\Programme\\Adobe\\Acrobat 7.0\\Reader\\AcroRd32.exe";
    		dateiPfad = "C:\\xxx.pdf";
    
    		sprintf(cmd_line, "\"%s\"\"%s\"", applikationPfad, dateiPfad);
    
    		CreateProcess(
    			applikationPfad,
    			cmd_line,
    			NULL,
    			NULL,
    			false,
    			CREATE_DEFAULT_ERROR_MODE,
    			NULL,
    			NULL,
    			&stgStartupInfo,
    			&stgProcessInfo
    			);
    
    		//####applikationName = argv[3];
    		//####dateiName = argv[4];
    		//####applikationshoehe = atoi(argv[5]);
    		applikationName = "Adobe Reader";
    		dateiName = "[xxx.pdf]";
    		applikationshoehe = 500;
    
    		strcpy (hHandleWindow, applikationName);	// String kopieren
    		help = strlen(hHandleWindow);
    
    			strncat(hHandleWindow, " - ", 3);		// X Zeichen an String anhaengen
    				strncat(hHandleWindow, dateiName, strlen(dateiName));		// X Zeichen an String anhaengen
    
    		gefunden = false;
    		while(gefunden == false)
    		{
    			HWND hWindow = FindWindow( NULL, hHandleWindow);
    			if (hWindow != NULL)
    			{
    				SetWindowPos(
    					hWindow,
    					NULL,
    					0, 0, 1024, applikationshoehe, 
    					SWP_NOOWNERZORDER | SWP_NOZORDER
    					);
    				gefunden = true;
    			}
    		}
    
        return 0; 
    }
    

    danke für eure hilfe!!!

    lg
    ntl



  • is programmspezifisch
    musst dich halt mal bei adobe informiern mit welchen parametern man den reader starten kann



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • hallo,
    danke für die antwort aber die hilft mir nicht weiter!?!?

    habe das ganze auch schon mit excel xp probiert und es klappt auch nicht obwohl es zuvor mit excel 97 klappte.
    kann es sein, dass der "CreateProcess" nur mit 16bit programmen funktioniert und bei 32bit nicht???
    gibt es eine andere möglichkeit?

    danke für eure hilfreichen antworten!

    NTL



  • NTL schrieb:

    es wird einfach nur der Reader gestartet und das zugehörige pdf nicht mehr.

    ich wollte damit sagen dass sich die parameter geändert haben
    vielleicht sagt man jetzt nich mehr
    "acroread.exe test.pdf"
    sondern
    "acroread.exe -f test.pdf"

    wie genau die parameter aussehn weiss nur adobe
    schau doch mal die dokus durch



  • ok werde mal in den dokus nachsehen, hoffe ich finde was!

    ntl



  • hi,
    habe es nun nicht mit "CreateProcess" sondern mit "ShellExecute(NULL, "open", "diedatei.exe", NULL, NULL, SW_SHOW);" probiert und es funktioniert nun.
    keine Ahnung warum, egal ich brauche es dringend!

    gruß
    ntl



  • stimmt daran hat ich nich gedacht 🙄

    ShellExecute(NULL, "open", "diedatei.pdf", NULL, NULL, SW_SHOW);
    ShellExecute(NULL, "open", "diedatei.xls", NULL, NULL, SW_SHOW);

    so kannste files mit ihren standardprogrammen öffnen



  • stimmt, hätte ich von anfang an nehmen sollen!


Anmelden zum Antworten