Verstecktes Konsolenfenster - wie?



  • Hallo!

    Ich habe eine c++ Anwendung:

    pragma hdrstop
    
    #include <iostream.h>
    //---------------------------------------------------------------------------
    
    #pragma argsused
    int main(int argc, char* argv[])
    {
    Sleep(20000);
    system("z:/***.exe");
            return 0;
    }
    //---------------------------------------------------------------------------
    

    wie kann ich machen, daß kein Konsolenfenster beim Start der exe sichtbar ist?

    Danke schonmal im Vorraus!



  • EDIT: Ups Frage nicht richtig gelesen - Posting gelöscht.



  • Du musst eine Windowsanwendung erstellen und dort alles, was in der WinMain drinsteht, von wegen Fenster öffnen usw. rausnehmen, und da deinen Code einbauen... das ist die einzige mir bekannte Methode unter Windows... so läuft dein Programm quasi als Dienst... ist auch im TaskManager nur unter Prozesse aufgeführt.



  • Also so hier:

    #include <windows.h>
    int WINAPI WinMain (HINSTANCE hThisInstance,
                        HINSTANCE hPrevInstance,
                        LPSTR lpszArgument,
                        int nFunsterStil)
    
    {
        /* Hier dein Code */
        return 0;
    }
    


  • Nö, geht noch einfacher:

    [cpp]
    WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
    {
    try
    {
    DWORD dwExStyle=GetWindowLong(Application->Handle,GWL_EXSTYLE);
    dwExStyle |= WS_EX_TOOLWINDOW;
    SetWindowLong(Application->Handle,GWL_EXSTYLE,dwExStyle);

    Application->Initialize();
    Application->Title = "Lustiger Name";
    Application->ShowMainForm = false;
    Application->CreateForm(__classid(TfrmMain), &frmMain);
    Application->Run();
    }
    catch (Exception &exception)
    {
    Application->ShowException(&exception);
    }
    return 0;
    }
    [/cpp]



  • Er redet von Konsolenanwendungen, d.h. er wird wohl kaum mit der VCL programmieren...

    EDIT: Außerdem ist deines nicht wirklich einfacher...



  • Falls Du das starten einer Konsolenanwendung meinst??:

    ShellExecute(NULL,"open","Programname.exe",NULL,NULL,SW_HIDE)
    


  • Windoof schrieb:

    Er redet von Konsolenanwendungen, d.h. er wird wohl kaum mit der VCL programmieren...

    EDIT: Außerdem ist deines nicht wirklich einfacher...

    Er will aber, dass das Konsolenfenster beim Start einer Konsolenanwendung nicht auf geht, und dass ist laut meinem Kenntnisstand nicht möglich. Also muss er eine VCL-Anwendung schreiben und das Main-Window verstecken.



  • Da müsste er jetzt mal definieren, welches Fenster er verstecken will... meint er sein eigenes Programm oder das, was er aufruft? Meint er sein eigenes, würde ich eher von der VCL abraten und meine Lösung nehmen, will er andere Anwendungen verstecken, sollte er zur VCL greifen... das, was du machst, beinhaltet aber das Verstecken des eigenen Fensters... Apropos... soweit ich mich durch die BCB-Hilfe gearbeitet habe, will Windows ShellExecute bald nichtmehr unterstützen... dann hilft nurnoch "system" mit dem vollständigen Pfad...


Anmelden zum Antworten