Kommandozeilen exe vs. GUI exe



  • Hallo,

    ich möchte ne exe, die beides kann.
    Sie soll die Konsole als Ausgabe benutzten, wenn Sie in der Kommandozeile mit ein paar Parametern gestartet wird. Und sie soll mit der GUI starten, wenn sie mit einem dblclick gestartet wird.

    Ist so was überhaupt möglich, bzw sinnvoll. Wie würdet ihr das machen? Bzw. ist es ratsam 2 exe anzulegen wie MeinProg_cmd.exe und MeinProg_gui.exe.

    Gruß



  • kannst einfach ne normale gui appliktion machen und wenn die in die konsole willst, dir mit AllocConsole eine anlegen.
    siehe:
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/character_mode_applications.asp



  • CMatt schrieb:

    kannst einfach ne normale gui appliktion machen und wenn die in die konsole willst, dir mit AllocConsole eine anlegen.

    Das löst aber mein Problem nicht.
    Beim starten der Applikation wird bereits entschieden, ob mit Konsole oder mit GUI gearbeitet wird.
    Start App in Kommandozeile (+Parameter) -> Konsole
    Start App mit dblclick -> GUI

    Meine GUI App soll einfach zusätzlich batchfähig sein.



  • weis zwar nicht genau ob das klappt aber kontrollier doch einfach ob mindestens 2 parameter übergeben werden wenn ja wird console angezeigt wenn nein dann eben die gui(erster parameter ist immer der vollständige pfad)
    das müsste eigentlich gehen



  • Siehe Posting von Olli vom 2005-07-09@18:51: http://www.delphipraxis.net/post394699.html#394699



  • electron_1 schrieb:

    CMatt schrieb:

    kannst einfach ne normale gui appliktion machen und wenn die in die konsole willst, dir mit AllocConsole eine anlegen.

    Das löst aber mein Problem nicht.
    Beim starten der Applikation wird bereits entschieden, ob mit Konsole oder mit GUI gearbeitet wird.
    Start App in Kommandozeile (+Parameter) -> Konsole
    Start App mit dblclick -> GUI

    Meine GUI App soll einfach zusätzlich batchfähig sein.

    versteh nicht wo das problem liegt 😕

    int WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,
                int nCmdShow )
    {
     if(IstConsolenParameterDa(lpCmdLine))
     {
       CreateConsole();
     }
     else
     {
      CreateGUIWindow();
     }
     return 0;
    }
    


  • ...also geht nicht 😞



  • @CMatt jetzt warn wir gleichzeitig

    muss ich mal ausprobieren, ob deine Lösung auch batchfähig ist. Das Problem, das Olli da beschreibt (thks @ Lucky) ist, dass eine Neue Konsoleninstanz angelegt wird. Möchte man die aktuelle Konsole benutzen, dann geht das nicht.



  • hmm... sollte das nicht per AttachConsole machbar sein?



  • was interessant wäre willst du dein programm batchfahig haben oder soll man es auch per hand in der kommandozeile bedienen können?



  • Das Thema hat mich jetzt doch nicht losgelassen - ich hab noch etwas rumprobiert:

    #include "stdafx.h"
    #include "temp3.h"
    #include "mywin.h"
    
    #ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif
    
    /////////////////////////////////////////////////////////////////////////////
    // The one and only application object
    CWinApp theApp;
    using namespace std;
    int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
    {
    	int nRetCode = 0;
    	// initialize MFC and print and error on failure
    	if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
    	{
    		// TODO: change error code to suit your needs
    		cerr << _T("Fatal Error: MFC initialization failed") << endl;
    		nRetCode = 1;
    	}
    	else
    	{
    		// TODO: code your application's behavior here.
    		if (argc < 2)
    		{
    		PSTR szCmdLine;
                      //standard WinMain Funktion für ein WinApi Fenster
                      // http://www.winapi.net/index.php?inhalt=tipp1
    		WinMain (theApp.m_hInstance, NULL, szCmdLine, SW_SHOW);
    		}
    		else
    		{
    		CString strHello;
    		strHello.LoadString(IDS_HELLO);
    		cout << (LPCTSTR)strHello << endl;
    		}
    	}
    	return nRetCode;
    }
    

    Ich habe in ein Win32ConsoleApplication Projekt ein WinApi Fenster eingebaut. Es scheint zu funktionieren.
    Mal sehen ob/wie man ein MFC Fenster einbauen kann. Nur leider bin ich ohne MFC Wizard ziemlich aufgeschmissen 😞


Anmelden zum Antworten