Προς το περιεχόμενο

Κρύψιμο του παραθύρου του DOS


th_m_s

Προτεινόμενες αναρτήσεις

Δημοσ.

Γεια χαρά παιδιά.

Προσπαθώ να φτιάξω μια εφαρμογή σε C η οποία να εκτελεί εντολές του DOS και να τρέχει στο παρασκήνιο. Το πρόβλημα είναι ότι το παράθυρο του command line δεν λέει με τίποτα να κρυφτεί. Δοκίμασα πολλά πράγματα που βρήκα στο google (πχ να κάνω το πρόγραμμα "παραθυρικό" και όχι κονσόλας ή να δημιουργήσω ένα παράθυρο εντολών και μετά να το κάνω κρυφό) αλλά μόλις βάζω ένα system("entoli"); στούπ, πετάγεται πάλι το dos. Έχει κανείς καμιά ιδέα;

Δημοσ.
Δοκίμασα πολλά πράγματα που βρήκα στο google (πχ να κάνω το πρόγραμμα "παραθυρικό" και όχι κονσόλας ή να δημιουργήσω ένα παράθυρο εντολών και μετά να το κάνω κρυφό) αλλά μόλις βάζω ένα system("entoli"); στούπ, πετάγεται πάλι το dos. Έχει κανείς καμιά ιδέα;

 

Τι ακριβώς εννοείς; Γιατί κάτι τέτοιο σε μένα δουλεύει

>
#include <windows.h>
#include <stdlib.h>

int __stdcall WinMain(HINSTANCE inst, HINSTANCE prev_inst, LPSTR cmd_line, int show) {

HWND hc;
if (!AllocConsole()) return -1;
if (!(hc = GetConsoleWindow())) { FreeConsole(); return -1;}
ShowWindow(hc, SW_HIDE);
system("εντολή...");
FreeConsole();
return 0;
}

Δημοσ.

Προσπάθησα να κάνω compile τον κώδικά σου αλλά μου πετάει error:

In function `WinMain':

[Warning] assignment makes pointer from integer without a cast

[Linker error] undefined reference to `GetConsoleWindow'

 

Το hc=GetConsoleWindow() τον προβληματίζει αλλά γιατί;

 

(Ποιον compiler χρησιμοποιείς αλήθεια; )

Δημοσ.
Προσπάθησα να κάνω compile τον κώδικά σου αλλά μου πετάει error:

In function `WinMain':

[Warning] assignment makes pointer from integer without a cast

[Linker error] undefined reference to `GetConsoleWindow'

 

Το hc=GetConsoleWindow() τον προβληματίζει αλλά γιατί;

 

(Ποιον compiler χρησιμοποιείς αλήθεια; )

 

Της ms (visual studio). Έχεις συνδέσει τις βιβλιοθήκες των windows? Για τη συγκεκριμένη είναι η kernel32.lib. Λογικά με ότι IDE και να δουλεύεις, αν δημιουργήσεις μια win32 application, σου κάνει. Απλά τα σβήνεις όλα και κρατάς την WinMain.

Α υπάρχει και η περίπτωση το _WIN32_WINNT να είναι ορισμένο για μικρότερη έκδοση από τα win2000 οπότε πάνω από το <windows.h> δήλωσε

#define _WIN32_WINNT 0x0500

Δημοσ.

Τελικά πρόσθεσα πριν από τον κώδικά σου το

#define _WIN32_WINNT 0x0500

και δούλεψε!

Σε ευχαριστώ πάρα πολύ φίλε bilco!

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...