DOS-Fenster unterdrücken
-
dittus.uwe schrieb:
Hallo nochmal,
bin auf ein weiteres Problem gestoßen!
Mein Programm soll zu keiner Zeit ein DOS Fenster öffnen.Wichtig ist allerdings, dass es keines zusätzlichen Tool oä bedarf. Also rein im Code! Gibts da nen Parameter, oder ne Funktion welche dies bewerkstelligen?
Vielen Dank nochmal
Anhand deiner dummen Frage schließe ich darauf, dass du ein eingefleischter Windowsuser bist.
In der WinAPI gibts ne Funktion FreeConsole() (bin nicht mwhr sicher wie sie genau hieß). Dies lässt das "DOS-Fenster" schließen, die Anwendung läuft allerdings weiter.
Das ist aber höchstw2ahrscheinlich nicht das was du suchst.
Im normalfall teilt man dem Compiler mit ob beim ausführen ein "DOS-Fenster" erstellt werden soll oder nicht.
Ich hab zwar keinen Plan welchen Compiler du nutzt, aber erstelle ein WinApp projekt.
Falls du Dev-C++ nutzt (gcc/g++), dann kannste das irgendwo in den optionen festlegen.
Wenn du UNTER _WINDOWS_ die option "-mwindows" ohne "" an gcc/g++ übergibst, so wird beim ausführen KEIN "DOS-Fenster" erstellt.
In dem Sinne noch: Viel Spaß beim coden von Schädlingen (oder warum sollte man ein programm im Hintergrund ablaufen lassen? ok, abgesehen von irgendwelchen diensten, aber deine "Dienste" werden sich voraussichtlich auf "keylogger" oder änliches beziehen
)
-
Über Code kann man nur das Konsolenfenster wieder verstecken. Das heißt das Konsolenfenster würde kurz aufflackern was du bestimmt nicht willst.
Wenn das Konsolenfenster gar nicht kommen soll musst du dem Linker-Tool das per Parameter sagen.
-
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.
-
#include <Windows.h> // ... ShowWindow(GetConsoleHandle(), SW_HIDE); // ...
-
CodeFinder schrieb:
#include <Windows.h> // ... ShowWindow(GetConsoleHandle(), SW_HIDE); // ...Mein Programm soll zu keiner Zeit ein DOS Fenster öffnen.
-
@quote, du Troll:
dittus.uwe schrieb:
Wichtig ist allerdings, dass es keines zusätzlichen Tool oä bedarf. Also rein im Code! Gibts da nen Parameter, oder ne Funktion welche dies bewerkstelligen?
Anders gehts nit...oder du steigst vollständig auf WinAPI bzw ne WinMain um.
...
Außerdem ist das:
Mein Programm soll zu keiner Zeit ein DOS Fenster öffnen.
realtiv. Wenn du ShowWindow(...) direkt als erstes aufrufst, wirst du dein Fenster wohl nicht zu Gesicht bekommen.
-
Ja was er fordert geht nicht. Also ist es sinnlos ihm Code zu geben der nicht seinen Forderungen entspricht.

-
quote schrieb:
Ja was er fordert geht nicht. Also ist es sinnlos ihm Code zu geben der nicht seinen Forderungen entspricht.

So ist es nicht realisierbar, das stimmt.
Aber damit kommt man am nähesten dran :p
-
Es geht nur *sinnvoll* duch die passenden Linker-Einstellungen (/SUBSYSTEM:WINDOWS)!
Alles andere was hier erzählöt wird ist Blödsinn.
-
Jochen Kalmbach schrieb:
Es geht nur *sinnvoll* duch die passenden Linker-Einstellungen (/SUBSYSTEM:WINDOWS)!
Alles andere was hier erzählöt wird ist Blödsinn.Dann fordert der Linker aber ne WinMain! Das wurde hier bereits erwähnt!
-
CodeFinder schrieb:
Jochen Kalmbach schrieb:
Es geht nur *sinnvoll* duch die passenden Linker-Einstellungen (/SUBSYSTEM:WINDOWS)!
Alles andere was hier erzählöt wird ist Blödsinn.Dann fordert der Linker aber ne WinMain! Das wurde hier bereits erwähnt!
Also Visual C++ kommt auch mit main() klar in ner Windows Subsystem Anwendung. :p
-
nein doch nicht habs mit was anderes verwechselt. aber irgendwas war da. oder war es WinMain in Konsolenanwendung.
-
CodeFinder schrieb:
Jochen Kalmbach schrieb:
Es geht nur *sinnvoll* duch die passenden Linker-Einstellungen (/SUBSYSTEM:WINDOWS)!
Alles andere was hier erzählöt wird ist Blödsinn.Dann fordert der Linker aber ne WinMain!
Und was soll daran ein Problem sein? Der OP *will* doch explizit eine Codeänderng durchführen! Oder hab ich das erste Post falsch gelesen...
-
Hm habs ausprobiert (Visual C++ 6.0):
#include <iostream> int main() { return (0); }Error Output schrieb:
--------------------Konfiguration: CppTestumgebung - Win32 Release--------------------
Kompilierung läuft...
CppTestumgebung.cpp
Linker-Vorgang läuft...
LIBC.lib(wincrt0.obj) : error LNK2001: Nichtaufgeloestes externes Symbol _WinMain@16
Release/CppTestumgebung.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise
Fehler beim Ausführen von link.exe.CppTestumgebung.exe - 2 Fehler, 0 Warnung(en)
und mit Visual C++ Express Edition 2005:
Debug Output schrieb:
------ Erstellen gestartet: Projekt: CppTestumgebung, Konfiguration: Debug Win32 ------
Kompilieren...
CppTestumgebung.cpp
Manifest in Ressourcen wird kompiliert...
Verknüpfen...
LIBCMTD.lib(wincrt0.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_WinMain@16" in Funktion "___tmainCRTStartup".
.\Debug/CppTestumgebung.exe : fatal error LNK1120: 1 nicht aufgelöste externe Verweise.
Browseinformationsdatei wird erstellt...
Microsoft Browse Information Maintenance-Programm Version 8.00.50727
Copyright (C) Microsoft Corporation. All rights reserved.
Das Buildprotokoll wurde unter "...\BuildLog.htm" gespeichert.
CppTestumgebung - 2 Fehler, 0 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========Oder reden wir hier noch eine andere Option *verwirrt sei*
-
Jochen Kalmbach schrieb:
Oder hab ich das erste Post falsch gelesen...
Es geht doch nur um ein "DOS Fenster", also ne main()!
Naja ...die Frage war aber auch seehr undeutlich/unverständlich gestellt.
-
ach sorry was ich meinte war völlig daneben.
in einer konsolenanwendung akzeptiert visual c++ z.b. folgende main-Funktionint main(double d, int i, char c, float f);

sorry for offtopic
-
CodeFinder schrieb:
Es geht doch nur um ein "DOS Fenster", also ne main()!

Ja, es geht um ein DOS (oder besser Consolen-) Fenster, das er nicht haben will.
Also geht es um kein DOS-Fenster. :p
-
@vc++ user:
Jo np.Jochen Kalmbach schrieb:
Also geht es um kein DOS-Fenster. :p
Hähä
, Was nicht passt wird passend gemacht 
-
Sorry wenn meine Anfrage etwas undetailiert ist!
Folgendes:
bool uebergabe(char* ip) { // bool return=false; char pfad[200]={"ftp -v -s:s:\\SFM_technik\\testprojekt\\ftp.tmp "}; strcat(pfad,ip); system(pfad); return(0); }Die Funktion an sich tut ja einwandfrei, jedoch wird eine "Eingabeauforderung" sichtbar! Dieses Fenster soll nun unterdrückt werden!
Es sei denn es gäbe eine Möglichkeit eine eigene Funktion (zb: shellx();) zu schreiben welche beinhaltet dass das Fenster nicht sichtbar wird!In VB hab ich das schon entdeckt. Da geht das auch "relativ" einfach! Jedoch krieg ich das net in meim C++ unter!
Also vielen Dank nochmal
-
hab mir jetzt nicht alles durchgelesen ist nicht sowas wie
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/createprocess.asp
oder
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shellexecute.asp
was für dich