Problem mit ShowWindow(hwnd, SW_HIDE);
-
Hallo kann mir eventuell wer sagen was der fehler an meinen code ist, ich kann es nich compilieren und bekommen folgende fehlermeldung:
Linking: Dateipfad -Error: Unresloved External '_main' referenced from modul c0nt.ASM
#include <stdio.h> #include <conio.h> #include <stdlib.h> #include <windows.h> int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { struct test { int a; int b; int c; }; HWND hwnd = FindWindow("ConsoleWindowClass",NULL); ShowWindow(hwnd,SW_HIDE); struct test fu; printf("Struct fu:\n"); fu.a=101; fu.b=102; printf("%d\n%d\n",fu.a,fu.b); struct test rudi; printf("\nStruct rudi:\n"); rudi.a=201; rudi.b=202; printf("%d\n%d",rudi.a,rudi.b); getch(); }
es soll ein konsolenprogramm sein, das praktisch "unsichtbar" ist also im hintergrund läuft. es wäre sehr nett von euch wenn mir wer den lauffähigen code posten könnte. ich benutze einen borland compiler.
Danke im vorraus
-
Also bei funktioniert es...Hast du mein kompilieren auch -tW als Option angegeben? Also
bcc32 -tW prog.cpp
-
selbe fehlermeldung.
welchen compiler benutzt du ???
ich benutzte Borland C++ 5.0.1
wie ich diese linker hasse ^^
-
naja, also es gibt da sonne version, die ein kleines bisschen aktueller ist als deine...5.5.1
-
Vllt. erwartet der Linker statt der WinMain eine main-Fkt, also dass das Projekt ein Konsolenprogramm erstellen soll.
-
not registered schrieb:
wie ich diese linker hasse ^^
Mit welchen Parametern compilierst Du genau? Rufst Du den Linker separat auf (compilieren mit -c)?
c0?.obj ist die Startcodedatei für Konsolenanwendungen
push dword ptr [envp] push dword ptr [argv] push dword ptr [argc] call _main /* hier ist das Problem */ add esp,12
main -> (-tWC default) Startroutine für Konsolenprogramme immer mit "DOS-Box"
WinMain -> -tW Startroutine für Windowsprogramme, kommt auch ohne Fenster aus
-
Not registered schrieb:
Hallo kann mir eventuell wer sagen was der fehler an meinen code ist, ich kann es nich compilieren und bekommen folgende fehlermeldung:
Linking: Dateipfad -Error: Unresloved External '_main' referenced from modul c0nt.ASM
Dein Linker sucht vergebens eine main()
.
-
Not registered schrieb:
es soll ein konsolenprogramm sein, das praktisch "unsichtbar" ist also im hintergrund läuft.
Das ist echt ironisch. Wenn du kein Konsolenprogramm schreiben würdest, sondern ein Windowsprogramm, müsstest du gar nichts verstecken. Und der Code ist sogar ein Windowsprogramm, du versuchst aber, es als Konsolenprogramm zu bauen, daher der Linkerfehler. Dein Code löst ein Problem, das es gar nicht gibt.
-
not registered schrieb:
ich benutzte Borland C++ 5.0.1
wie ich diese linker hasse ^^Wooow!! Noch so ein Antiquitätenhändler
. Ich benutze Borland C++ 5.02.
Leider, wenn ich eine bestimmte Funktion (in der IDE) nicht finde, kann mir keiner mehr antworten, weil alle auf Borland Builder oder MS-VC umgestiegen sind. Gehts Dir auch so?
-
bin jetzt zwar nicht der mit dem problem, aber mir geht das auch immer so...
-
MFK:
dann gib mir doch mal an lösliches beispiel, das wäre evtl. hilfreich. wenn ich einen "windowscode" schreibe der als "consolencode" dargestellt sein soll, oder wie auch immer du das meinst. ich war immer schwer in der annahme es gibt auch "windowscode" der in der "console" ausgeführt wird ^^. mein prob ist ich möchte garnix sehen kein fenster nichts, es sollte dennoch im taskmanager zu finden sein, da es sonst zuviel umstand mach den "prozess" zu "killen". (ja ich bitte um entschuldigung für das "killen" aber ich bin neu am start mit win)Elektronix:
Hmm ja, war irgendwie immer zu faul mir seit n paar jahren ne neue version zu ziehn ^^ (wobei sich die meisten problemchen lösen ließen). Ich werde aber definitiv nicht zu VC oder zum Builder übergehenevtl. tuts ja die 5.5.1.
-
Diese Zeile:
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
wird nur bei Windows-GUI-Programmen gebraucht. Wenn Du Consolen-Programme schreibst, bleibt es bei int main().
Natürlich klappt int main() nur, wenn Du in den Compiler-Einstellungen auch "Console" einstellst (bzw. in der Kommandozeile den entsprechenedn Parameter angibst). Umgekehrt klappt int APIENTRY WinMain() auch nur, wenn der Compiler eine GUI erstellen soll.
-
kannst du mir evtl. sagen wie ich dann das consolenfenster verstecke bzw. es im hintergrund laufen lasse ??? (auch wenn ich die printf und scanf funktion weglasse, bleibt mein consolenfesnter sichtbar (bzw es blink kurz auf bis das programm abgearbeitet ist). Wenn ich aber beispielweiße ein programm habe das auf ein argument / parameter was auch immer eines anderen programmes wartet, bleibt mir das consolenfenster obwohl es dann leer ist trozdem sichtbar.
-
Nein, ich habe mich auf GUI spezialisiert. Poste mal im Unterforum DOS und Win32-Console, da wirst Du besser geholfen.
-
not registered schrieb:
kannst du mir evtl. sagen wie ich dann das consolenfenster verstecke bzw. es im hintergrund laufen lasse ???
Wenn du kein Konsolenfenster willst und brauchst, solltest du keine Konsolenanwendung schreiben. Dann brauchst du auch nichts zu verstecken.
-
Hi,
CreateProcess mit CREATE_NO_WINDOW oder so:
#include <Windows.h> // ... ShowWindow(GetConsoleWindow(), SW_HIDE);
bzw. (Beispielcode):
TCHAR szCommand[300]; STARTUPINFO suiStartUp; PROCESS_INFORMATION prciInfo; wsprintf(szCommand, TEXT("ping %s"), TEXT("192.168.2.1")); CreateProcess(TEXT("cmd.exe"), szCommand, NULL, NULL, FALSE, CREATE_NO_WINDOW, NULL, NULL, &suiStartUp, &prciInfo);