Programm versteckt starten



  • Hallo,
    ich versuche mein eigenes Programm versteckt zu starten:

    hwnd = FindWindow("ConsoleWindowClass",NULL);
              ShowWindow(hwnd,SW_HIDE);
    

    Nur leider blitzt das Fenster doch kurz auf,was ich finde nicht so die schöne Art ist.
    Was für eine möglichkeit gibt es den noch das eigene Programm komplett versteckt zu starten?



  • Bei Konsolenanwendungen ist es unmöglich, da der Eintritt ins Programm nach dem Erscheinen der Konsole auf dem Desktop erfolgt. Erstell doch einfach ein GUI Programm (Subsystem:Windows) – ein Konsole kannst du immer noch nachträglich durch AllocConsole() hinzufügen.

    BTW: hWnd der Konsole bekommt man durch GetConsoleWindow().



  • Oder du programmierst einen Dienst



  • Dienst ... Und das würde was bringen ???



  • Oder du programmierst einfach eine "Windows-Anwendung" statt so einer lausigen Konsole.
    Da ersetzt du einfach int main() durch int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, char*, int) und musst noch irgendwie dem Compiler verklickert, dass du jetzt keine Konsole willst. Mit VC++ geht das ganz einfach.



  • asdfghjkl schrieb:

    Dienst ... Und das würde was bringen ???

    Kein sichtbares Fenster, Prozess läuft für jeden Anwender, einfacher Anwender kann Prozess nicht beenden.



  • Blaze schrieb:

    Oder du programmierst einfach eine "Windows-Anwendung" statt so einer lausigen Konsole.
    Da ersetzt du einfach int main() durch int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, char*, int) und musst noch irgendwie dem Compiler verklickert, dass du jetzt keine Konsole willst. Mit VC++ geht das ganz einfach.

    Habe ich gemacht jetzt sagt mir VC++ aber:

    error C2055: expected formal parameter list, not a type list

    Und wie bekomme ich dann die Windows-Anwendung unsichtbar?



  • Am Besten du versuchst erstmal zu verstehen was die Fehlermeldung dir sagen möchte 😉

    Eine Windows-Anwendung zeigt per default nichts an, sofern du nicht selber nen Fenster erzeugst...



  • Hi, also wenn es dir nur darum geht, das kein Consolen Fenster erscheint, dann kannst du auch einfach ein normales WIN32-Projekt erstellen und erzeugst dort kein Fenster z.b.

    #include <windows.h>
    
    INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, INT iCmdShow)
    {
      //Dein Programm-Code 
      return 0;
    }
    

Anmelden zum Antworten