[Gelöst]Cmd in den Vordergrund?
-
Hallo erstmal!
Ich wollte mir mal eben ein kleines "Startprogramm" programmieren, damit ich schnell die Programme starten kann, die ich brauche. Hier erst mal der Quellcode:
#include <iostream> #include <windows.h> #include <conio.h> using namespace std; int main(void) { int Wahl; do { system("cls"); cout << "Willkommen beim Starter! Was willst du starten? ;-)\n"; cout << "---------------------------------------------------\n"; cout << "1: ICQ\n"; cout << "2: Dev-cpp\n"; cout << "3: Internetz\n"; cout << "4: FFN\n"; cout << "5: Bremen 4\n"; cout << "6: Beenden\n"; cout << "Deine Wahl: "; Wahl = _getch(); switch(Wahl) { case 49: system("start icq"); break; case 50: system("start C:\\Programme\\Dev-cpp\\devcpp.exe"); break; case 51: system("start www.google.de"); break; case 52: system("start C:\\users\\Yannik\\downloads\\tunein_ffn.pls"); break; case 53: system("start http://www.radiobremen.de/bremenvier/media/player.php?firstTab=3"); case 54: break; default: cerr << "Falsch Eingabe!"; } } while(Wahl != 54); return 0; }
Wie schon gesagt, sehr simpel. Nun ja, aber mein Problem ist jetzt, dass wenn man irgendein Programm startet dieses sofort im Vordergrund ist. Heißt also, wenn ich google.de starte, drängt sich der Browser in den Vordergrund und ich muss den erst wieder minimieren, bevor ich weitermachen lann. Das selbe gilt auch für die anderen Programme. Hat jemand eine Idee, wie man das ändern könnte?
Danke schonmal
-
Nimm ShellExecute statt system, dann kannst du den initialen Fensterzustand angeben (z.B. SW_MINIMIZE).
-
Und wie kann ich dann das gewünschte Programm minimieren? Mit SW_MINIMIZE passiert bei mir auch nicht viel mehr.
-
Incocnito schrieb:
Und wie kann ich dann das gewünschte Programm minimieren? Mit SW_MINIMIZE passiert bei mir auch nicht viel mehr.
Eigtl sollte das aber klappen.
Alternativ kannst du auchSetForegroundWindow
undGetForegroundWindow
nehmen.bb
-
Ähm.. Und wie benutze ich jetzt dieses 'SetForegroundWindow'? Ich kenn mich mit der WinAPI nun gar nicht aus, kann das jemand erklären?
-
Naja wie dem auch sei.. Ich hab mein Problem jetzt einfach so gelöst, macht ja nicht soo einen großen Unterschied:
#include <iostream> #include <windows.h> #include <conio.h> using namespace std; int main(void) { int Wahl, Eingaben[5], i = 0; bool fertig = false; do { system("cls"); cout << "Willkommen beim Starter! Was willst du starten? ;-)\n"; cout << "---------------------------------------------------\n"; cout << "1: ICQ\n"; cout << "2: Dev-cpp\n"; cout << "3: Internetz\n"; cout << "4: FFN\n"; cout << "5: Bremen 4\n"; cout << "6: Beenden\n"; cout << "Deine Wahl: "; Wahl = _getch(); switch(Wahl) { case 49: Eingaben[i] = 1; break; case 50: Eingaben[i] = 2; break; case 51: Eingaben[i] = 3; break; case 52: Eingaben[i] = 4; break; case 53: Eingaben[i] = 5; break; case 54: Eingaben[i] = 6; fertig = true; break; default: cerr << "Falsche Eingabe!"; } i++; } while(!fertig); system("cls"); for(int i = 0; Eingaben[i] != 0; i++) { switch(Eingaben[i]) { case 1: system("start icq"); Sleep(500); break; case 2: system("start C:\\Programme\\Dev-cpp\\devcpp.exe"); Sleep(500); break; case 3: system("start www.google.de"); Sleep(500); break; case 4: system("start C:\\users\\Yannik\\downloads\\tunein_ffn.pls"); Sleep(500); break; case 5: system("start http://www.radiobremen.de/bremenvier/media/player.php?firstTab=3"); Sleep(500); break; case 6: return 0; } } }
Wenn mir das mit SetForegroundWindow noch jemand erklären könnte, wär ich auch ziemlich dankbar
-
#include <Windows.h> void start_program(const char* file, const char* parameters = NULL) { HWND actually_handle = GetForegroundWindow(); HINSTANCE ec = ShellExecute(GetDesktopWindow(), NULL, file, parameters, NULL, SW_SHOWMAXIMIZED); /*return value testen*/ SetForegroundWindow(actually_handle); } int main() { /*...*/ start_program("iexplore.exe", "www.google.de"); //IE start_program("www.google.de"); //standard browser /*...*/ /*noch paar bsp., was damit alles geht:*/ start_program("C:/Program Files (x86)/VideoLAN/VLC/vlc.exe"); //vlc öffnen start_program("C:/Program Files (x86)/VideoLAN/VLC/vlc.exe", "\"L:\\Filme\\asd.mpg\" --fullscreen"); //asd.mpg maximiert wiedergeben }
gut zu wissen:
pfad-angaben gehen stattC:\\...
auch immerC:/...
zu schreiben - ist übersichtlicher. (ok - vlc kann das gerade mal nicht - ausnahmen bestätigen die regel ;))bb
-
Ich glaub bald ernsthaht, wenn ich mit meinem fettem "C++ von A bis Z" von Jürgen Wolf durch bin, fang ich mit der WinAPI an
Nein, ernstahft. Dieses Windows nervt mich einfach megamäßig.. Ich glaub ich denk in Zukunft einfach etwas mehr nach und versuch meine Probleme mit meinen Kentnissen zu lösen, das übt ja doch gewaltig
Und ich benutze ungern abkopierte Quelltexte, die ich nicht einmal verstehe. Meine erste GUI wird erstmal wxWidgets sein, und das reicht mir vorerst auch völlig. Trotzdem danke für die Antworten. Und das mit *C:\* statt C:/ hab ich mir einfach angewöhnt.mfg incocnito
-
Incocnito schrieb:
"C++ von A bis Z" von Jürgen Wolf
Nein!
Hör auf zu lesen! Sofort! Schmeiß es weg! Verbrenn es!
http://www.c-plusplus.net/forum/viewtopic-var-t-is-272350.html
-
Also ich finde das Buch klasse, nach 300 Seiten immer noch keine Probleme
Und:http://www.c-plusplus.net/forum/viewtopic-var-t-is-272350.html
Hat der Typ irgendwie Langeweile gehabt oder versucht witzig zu sein? Und wenn es die Leute stört, dass fragen auftauchen weil in einem 1250 Seiten Buch immer noch nicht alles erläutert wurde, dann sind die Leute hier eben fehl am Platz..
Ansonsten: Empfehl mir doch eine Alternative^^ Mit
bin ich schon durch, durch C++ von A bis Z wollte ich mal tiefer reingehen..
-
Der verlinkte Thread ist nicht aus Langweile entstanden, sondern der volle Ernst. Das Buch ist wirklich so schlecht, dass dies hier im Forum einen 6-Seiten-Draufhau-Thread wert war. Das gab es bisher für kein anderes Buch.
-
Incocnito schrieb:
Ich glaub bald ernsthaht, wenn ich mit meinem fettem "C++ von A bis Z" von Jürgen Wolf durch bin, fang ich mit der WinAPI an
1. hör auf damit
2. wieso winapi?Nein, ernstahft. Dieses Windows nervt mich einfach megamäßig..
häh?
1. was hat das mit programmieren(und C++) zu tun?
2. dann wechsel doch das OS - gibt doch genug andere, wenn dir windows nicht passt... btw: 99% der windows-ist-doof-und-nervt-mich-sager haben 0 ahnung und wären mit jedem OS, was man nicht mit 2klicks installieren und 10einrichten kann, hoffnungslos überfordertIch glaub ich denk in Zukunft einfach etwas mehr nach und versuch meine Probleme mit meinen Kentnissen zu lösen, das übt ja doch gewaltig
wenn du kein plan hast, wie es geht, wie sollst du es dann lösen können?
evtl. solltest du erst ein (ordentliches) grundlagenbuch durchgehen und dann kannst du noch immer an eigenen(kleinen) projekten arbeiten.Und ich benutze ungern abkopierte Quelltexte, die ich nicht einmal verstehe.
was verstehst du denn nicht?
den shell-execute-aufruf? zu schwer, auf den link unten zu klicken?Meine erste GUI wird erstmal wxWidgets sein, und das reicht mir vorerst auch völlig.
wieso willst du jz schon ne GUI nutzen, wenn du nichts über die grundlagen weist?
Und das mit *C:\* statt C:/ hab ich mir einfach angewöhnt.
Super - '\' geht wenigstens nur unter Windows - '/' hingegen funktioniert auch unter anderen OS
bb
Hat der Typ irgendwie Langeweile gehabt oder versucht witzig zu sein
Nein, er sagt die Wahrheit. Du hast offensichtlich nicht mal die erste Seite des Threads gelesen - sonst hättest du gemerkt, dass das Buch wirklich von Fehlern wimmelt...
Alternative:
http://www.amazon.com/Programming-Principles-Practice-Using-C/dp/0321543726
sehr zu empfehlen
ansonsten gibts auch noch "Thinking C++" (auch frei als e-book zu erhalten)ansonsten ist von allen "C++ in xxx Tagen"- oder J.W. -Büchern abzuraten.
-
Du musst einem anscheinend ja jedes Wort im Mund umdrehen.
unskilled schrieb:
Zitat:
Nein, ernstahft. Dieses Windows nervt mich einfach megamäßig..häh?
1. was hat das mit programmieren(und C++) zu tun?
2. dann wechsel doch das OS - gibt doch genug andere, wenn dir windows nicht passt... btw: 99% der windows-ist-doof-und-nervt-mich-sager haben 0 ahnung und wären mit jedem OS, was man nicht mit 2klicks installieren und 10einrichten kann, hoffnungslos überfordertIch wollte mich da eigentlich nicht auf das Betriebssystem beziehen, sondern auf die WinAPI, ich dachte eben, dass das verständlich sei, weil ich diese kurz vorher erwähnt hab. Mit "Nein, ernstahft. Dieses Windows nervt mich einfach megamäßig.." meinte ich lediglich, dass mir diese WinAPI auf die nerven geht. Und zwar, weil ich andauernd in dieser verdammten Konsolen Welt dieses zeugs brauche. Aber da ich gerade mal bei der OOP in A bis Z bin, interessiert mich die herzlich wenig. Darum meinte ich das so. Ach ja und zu
Incocnito schrieb:
Ich glaub bald ernsthaht, wenn ich mit meinem fettem "C++ von A bis Z" von Jürgen Wolf durch bin, fang ich mit der WinAPI an1. hör auf damit
2. wieso winapi?Eine kleine Info: Ein ";)" und ein darauffolgendes "nein ernsthaft" lässt darauf schließen, das der Satz nicht ernst gemeint war. Kein Kommentar.
Zitat:
Und ich benutze ungern abkopierte Quelltexte, die ich nicht einmal verstehe.was verstehst du denn nicht?
den shell-execute-aufruf? zu schwer, auf den link unten zu klicken?Ich bin immer noch ein Anfänger und versteh überhaupt nichts von der WinAPI *hust*.
Zitat:
Meine erste GUI wird erstmal wxWidgets sein, und das reicht mir vorerst auch völlig.wieso willst du jz schon ne GUI nutzen, wenn du nichts über die grundlagen weist?
Grammatik für Anfänger: wird - werden, 3 person singular FUTUR 1. Wer sagt, dass ich jetzt mit wxWidgets anfangen will? Richtig: niemand. Ich bin immer noch auf Seite 300 von 1250. Ich WERDE mit wxWidgets anfangen, wenn ich denn so weit bin.
Und noch:
Zitat:
Hat der Typ irgendwie Langeweile gehabt oder versucht witzig zu sein
Nein, er sagt die Wahrheit. Du hast offensichtlich nicht mal die erste Seite des Threads gelesen - sonst hättest du gemerkt, dass das Buch wirklich von Fehlern wimmelt...Alternative:
http://www.amazon.com/Programming-Principles-Practice-Using-C/dp/0321543726
sehr zu empfehlen
ansonsten gibts auch noch "Thinking C++" (auch frei als e-book zu erhalten)ansonsten ist von allen "C++ in xxx Tagen"- oder J.W. -Büchern abzuraten.
Ich bin leider erst 14 Jahre alt, und kann eigentlich ganz gut Englisch verstehen. Wenns dann um Fachspezifische Texte geht wo Fachbegriffe verwendet werden, versteh ich (verständlicherweise - 9. Klasse englisch reicht da bei weitem nicht) so ziemlich gar nichts. Und es ist mir auch egal, was andere über "C++ von A bis Z" denken, mir gefällt das Buch einfach. Ich verstehe alles und lerne immer mal ein paar Kniffe dazu. Alles ist prima verständlich.
Falls ich da jetzt jemandem auf die Füße getreten haben sollte, tut's mir Leid. Aber ich kann es einfach nicht leiden, wenn Anfänger, die Fragen haben, von erfahreren Leuten fertig gemacht werden. Vor allem, wenn sie solche Texte wie die meinen völlig verkehrt interpretieren.
mfg
-
Incocnito schrieb:
Ich wollte mich da eigentlich nicht auf das Betriebssystem beziehen, sondern auf die WinAPI
Das machts natürlich gleich viel besser...
An dieser Stelle iwie völlig zu unrecht...
Es sind einfach nur Funktionen, deren Parameter auf der verlinkten Seite haargenau erklärt werden.(wenn dus nicht auf anhieb verstehst, such dir nen wörterbuch - aber hör auf, der dokumentation oder der api an sich die schuld dafür zu geben)Ich bin immer noch ein Anfänger und versteh überhaupt nichts von der WinAPI *hust*.
Ich verstehs immernoch nicht...
HWND GetForegroundWindow();
Was wird diese Funktion wohl tun?
Sie gibt dir ein Handle des Fensters zurück, welches zur Zeit im Vordergrund ist.
void SetForegroundWindow(HWND handle);
hingegen setzt das Fenster mit dem Handle handle in den Vordergrund.
Wie es mitShellExecute
ist, ist eigtl ganz einfach zu beschreiben:
-desktop-handle als handle übergeben (optional, wenns kein fenster gibt) / kannst auch das eigene handle(das deines programms) übergeben - aber dann wird das gestartete programm imho beendet, wenn du dein programm schließt
-operation - optional
-filename
-parameter - optional
-directory - optional, brauchst du nicht, wenn der filename komplett ist. allerdings kannst du dir so einen pfad zusammenbauen(als Bsp.: filename="vlc.exe", directory="C:/Program Files (x86)/VideoLAN/VLC")
-nShowCmd - wie soll das fenster geöffnet werden? maximiert? minimiert? normal? das kannst du dort als parameter übergeben
<return value> steht als tabelle unten drunter - da sollte nix dabei sein, was man nicht versteht...Und was ist der Unterschied zwischen "start asd" und ner 5 Zeilen langen Funktion, wie ich sie dir geschrieben habe?
Du weist weder, wie der system-Aufruf funktioniert, noch was ShellExecute macht - wo ist der Unterschied?
Und der system-Aufruf ist keinesfalls toller als die WinAPI-Lösung...PS:
Grammatik für Anfänger: wird - werden, 3 person singular FUTUR 1. Wer sagt, dass ich jetzt mit wxWidgets anfangen will? Richtig: niemand. Ich bin immer noch auf Seite 300 von 1250. Ich WERDE mit wxWidgets anfangen, wenn ich denn so weit bin.
Ach ja - nach dem Buch kannst du natürlich C++ programmieren... ist mir auch egal - wenn du es besser weist, welches Buch dir vernünftig C++ lehrt und welches nicht, dann viel erfolg noch...
Das solls von mir hier gewesen sein - mit dümmlichen Bemerkungen wie "Grammatik für Anfänger" machst du dir hier bestimmt noch viele Freunde
hf noch
-
Incocnito schrieb:
Also ich finde das Buch klasse, nach 300 Seiten immer noch keine Probleme
Da bist du wohl nicht der einzige Anfänger, bei dem dieses Phänomen auftritt. Wie soll ein Neuling merken, dass sauberes, idiomatisches und modernes C++ ganz anders aussieht, wenn er es nicht kennt und mit seinem "C mit Klassen" funktionierende Programme schreiben kann? Die Einsicht kommt erst, wenn man über den Horizont eines einzelnen Buchs hinausblickt, sich mehr Literatur und fremden Code anschaut, und sich etwas von erfahrenen Leuten sagen lässt.
Glaub mir, ich schwafle hier nicht einfach vor mich hin, sondern habe genau das Gleiche durchgemacht. Als ich mit C++ anfing, hatte ich nur relativ schlechte Bücher zur Verfügung. Die haben mir zwar die Grundlagen (prozedurale Programmierung) beigebracht, aber darüber hinaus hatte ich nur Halb- und Unwissen. Zum Beispiel, was Zeiger und Speicherverwaltung betrifft. Ich programmierte nichtsahnend weiter und schaffte es sogar, kleinere Projekte fertigzubringen. Doch zu einem hohen Preis: Etliche Memory Leaks und schlechte Performance, viele Probleme wurden aus Unkenntnis gewisser Sprachmittel und Techniken überaus umständlich gelöst, und ich musste mich lange Zeit mit dem Debuggen von einfachen Problemstellungen und undefiniertem Verhalten rumschlagen.
"Richtig" programmieren lernte ich erst einige Zeit später, als ich ein gutes Buch zur Verfügung hatte und vermehrt in diesem Forum nachfragte. Sprachmittel wie Operatorüberladung oder Templates und insbesondere auch die STL waren mir bis dahin gänzlich unbekannt. Um so grösser war die Freude, dass modernes C++ wirklich schön und vor allem nicht derart mühselig sein konnte. Aber das war zwei Jahre nach Beginn.
Es ist nicht nötig, dass du den gleichen Fehler, den schon tausende Leute vor dir begangen haben und immer wieder begehen, wiederholst. Fasse meinen Beitrag als gutgemeinten Rat auf und gestehe dir als Anfänger auch ein, dass du vielleicht nicht alles so gut beurteilen kannst wie Leute, die schon jahrelang programmieren und gegenseitig ständig Wissen austauschen. Ein "C mit Klassen", wie es leider in sehr vielen Büchern vermittelt wird, ist ein absolut übler Einstieg in C++, weil man zwar viele Probleme einigermassen lösen kann und sich deshalb schnell überschätzt, jedoch nur ein geringer Teil an Sprach- und Bibliotheksmitteln tatsächlich kennt und benutzt, und sich deshalb das Leben mit veralteten Programmiertechniken unnötig schwer macht. Hoffentlich kannst du das nachvollziehen.
-
Alternative wäre zum Beispiel C++ Primer oder The C++ Programming Language von Bjarne Stroustrup.
Hast dir den Thread mal durchgelesen?
Da bist du nicht der einzigste die Leser dieses Buches merken ja gar nicht das es sau schlecht ist sondern denken immer, achwas das ist voll gut.
Im Nachhinein wirst du das erst merken, wenn viele komische Fragen aufkommen oder wenn du ein viel besseres Buch ließt;-)Lg freeG
EDIT: Oh sorry hab übersehen dass es ne 2.Seite gibt bei dem Thread.Bezog sich auf das:
Incocnito schrieb:
Also ich finde das Buch klasse, nach 300 Seiten immer noch keine Probleme
Und:http://www.c-plusplus.net/forum/viewtopic-var-t-is-272350.html
Hat der Typ irgendwie Langeweile gehabt oder versucht witzig zu sein? Und wenn es die Leute stört, dass fragen auftauchen weil in einem 1250 Seiten Buch immer noch nicht alles erläutert wurde, dann sind die Leute hier eben fehl am Platz..
Ansonsten: Empfehl mir doch eine Alternative^^ Mit
bin ich schon durch, durch C++ von A bis Z wollte ich mal tiefer reingehen..
-
Ja was soll ich mir denn jetzt für ein buch holen? "C++ von A bis Z" hat immerhin 40€ gekostet, und die Rezensionen waren ja auch super. Und was ist mit C++ Primer? Kann man das, obwohl es von 2007 ist, trotzdem als "weiterführendes Buch" benutzen? Wie gesagt, mit Einstieg in C++ (von Arnold Willemer) bin ich ja durch. Mit englischen Fachbüchern kann ich noch sowieso nichts anfangen. Also wäre hier C++ Primer geeignet?
ps. achja mit
unskilled schrieb:
Das solls von mir hier gewesen sein - mit dümmlichen Bemerkungen wie "Grammatik für Anfänger" machst du dir hier bestimmt noch viele Freunde
hf nochwollte ich nur verdeutlichen, dass ich noch nicht mit wxWidgets programmiere. Wenn du willst, such ich mir halt eine andere verbale artikulation, mit der ich nicht so anecke
-
Incocnito schrieb:
Ja was soll ich mir denn jetzt für ein buch holen? "C++ von A bis Z" hat immerhin 40€ gekostet, und die Rezensionen waren ja auch super.
Das die Rezensionen super waren, erstaunt mich nicht. Siehe dazu den Beitrag von Nexus. Das Buch lügt die Leute an und da es keine Experten sind, welche diese Reviews schreiben, kann man auf diese nicht gehen. Vor allem Reviews über Fachbücher auf Seiten wie Amazon kann man kreuzweise vergessen. Oder man sollte nur die lesen mit weniger als 4 Sternen
Incocnito schrieb:
Und was ist mit C++ Primer? Kann man das, obwohl es von 2007 ist, trotzdem als "weiterführendes Buch" benutzen? Wie gesagt, mit Einstieg in C++ (von Arnold Willemer) bin ich ja durch. Mit englischen Fachbüchern kann ich noch sowieso nichts anfangen. Also wäre hier C++ Primer geeignet?
Der letzte C++ Standard stammt von 2003. Wieso sollte ein Buch aus 2007 deswegen schlecht sein? Es gibt sogar weiterführende Literatur noch aus dem letzten Jahrtausend, welche man ohne Probleme empfehlen kann.
Der C++ Primer vermittelt dir sehr gutes Grundlagenwissen. Falls du wirklich schon einiges an Grundlagen hast, dann wäre vielleicht "Die C++ Programmiersprache" von Bjarn Stroustrup eine Möglichkeit. Damit kann man Fehler aus Grundlagenbüchern ausbügelnAnsonsten kann man hier auch auf den FAQ Eintrag verweisen:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-251551.htmlGrüssli
-
Okay. Also soll ich jetzt ganz einfach meinen Eltern sagen: "Jaa, sorry, die 40€ hab ich aus dem Fenster geschmissen. Aber da kann ich ja nichts für. Ich kauf mir jetzt 'C++ Primer' und das wars dann endlich."?
Ist jetzt "C++ von A bis Z" wirklich so schlecht, dass ich sofort damit aufhören soll? Wär ja schade wegen den 40€..mfg
-
Hallo Icocnito,
ich bin auch jemand der zuerst mit "C++ von A bis Z" angefangen hat. Mir hat der nichtakademische Stil sehr gefallen aber ich habe dann doch die eine oder andere Frage gehabt und hier gestellt. Schnell wurde klar das Herr Wolf doch viel weglässt oder einfach im falschen Kontext erklärt.
Die einzigen Bücher die ich weiß die dir wirklich C++ beibringen sind:
- Der C++ Programmierer
- Die C++ Programmiersprache(wenn du schon programmieren kannst)
- Einführung in die Programmierung mit C++(sieht ganz gut aus, kenne ich aber nicht)
- Effektiv C++ programmieren(Wenn du C++ Grundlagen kannst und den Rest wissen willst)Gut 90% aller C++ sind schrott aber das absolute Schlusslicht in C und auch C++ Programmierung ist nun einmal Jürgen Wolf. Wie schon beschrieben merken die Anfänger erst Jahre später was für ein Unsinn sie gelernt haben lange nachdem sie ihre Rezensionen bei Amazon geschrieben haben. Am Anfang sind alle von der Lockerheit begeistert und geben 5 Sterne.
Ich musste auch doppelt zahlen aber das "C++ von A bis Z mit Lücken" konnte ich gut verkaufen.