th_m_s Δημοσ. 5 Μαρτίου 2009 Δημοσ. 5 Μαρτίου 2009 Γεια χαρά παιδιά. Προσπαθώ να φτιάξω μια εφαρμογή σε C η οποία να εκτελεί εντολές του DOS και να τρέχει στο παρασκήνιο. Το πρόβλημα είναι ότι το παράθυρο του command line δεν λέει με τίποτα να κρυφτεί. Δοκίμασα πολλά πράγματα που βρήκα στο google (πχ να κάνω το πρόγραμμα "παραθυρικό" και όχι κονσόλας ή να δημιουργήσω ένα παράθυρο εντολών και μετά να το κάνω κρυφό) αλλά μόλις βάζω ένα system("entoli"); στούπ, πετάγεται πάλι το dos. Έχει κανείς καμιά ιδέα;
bilco Δημοσ. 5 Μαρτίου 2009 Δημοσ. 5 Μαρτίου 2009 Δοκίμασα πολλά πράγματα που βρήκα στο 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; }
th_m_s Δημοσ. 5 Μαρτίου 2009 Μέλος Δημοσ. 5 Μαρτίου 2009 Προσπάθησα να κάνω compile τον κώδικά σου αλλά μου πετάει error: In function `WinMain': [Warning] assignment makes pointer from integer without a cast [Linker error] undefined reference to `GetConsoleWindow' Το hc=GetConsoleWindow() τον προβληματίζει αλλά γιατί; (Ποιον compiler χρησιμοποιείς αλήθεια; )
bilco Δημοσ. 5 Μαρτίου 2009 Δημοσ. 5 Μαρτίου 2009 Προσπάθησα να κάνω 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
th_m_s Δημοσ. 6 Μαρτίου 2009 Μέλος Δημοσ. 6 Μαρτίου 2009 Τελικά πρόσθεσα πριν από τον κώδικά σου το #define _WIN32_WINNT 0x0500 και δούλεψε! Σε ευχαριστώ πάρα πολύ φίλε bilco!
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.