Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Toisen ohjelman käynnistäminen?

Sivun loppuun

TVdata [24.11.2011 14:20:32]

#

Haluaisin käynnistää ohjelman toiseen ikkunaan ohjelman yhteydessä,
mutta sen sijaan että ohjelma avaa uuden ikkunan, kääntäjä (Dev-C++) avaa vain sen ohjelman, jonka koodin ohjelman olisi pitänyt käynnistää,esim.

#include <iostream>

int main() {
using namespace std;
cout <<"Hei putka!"; //Tätä ei näy.
std::cin.get();
system("c:\\hakemisto\\ohjelma.exe"); //Tämä on muka äsköinen ohjelma.
}

Metabolix [24.11.2011 14:43:42]

#

Selitäpä uudestaan.

Torgo [24.11.2011 14:59:04]

#

Kääntäjä ei avaa mitään ohjelmia. Se vain kääntää koodistasi objektitiedoston. Koodissasi oleva systeemikutsu on se joka ohjelman avaa. Se miksi tervehdyksesi ei tule näkyviin, johtunee siitä ettet flushaa tuota coutin käyttämää standardivirtaa. Endl lisääminen rivin loppuun pitäisi riittää.

Using namespacen käyttö on myös aika turhaa, jos kumminkin koodissa kirjoitat nimiavaruuden auki.

TVdata [24.11.2011 15:12:54]

#

Että minkä rivin loppuun? Ei oikein auttanut.

Chiman [24.11.2011 15:18:57]

#

Voisit aloittaa lukemalla putkan C++-oppaan läpi, heti johdantosivulla on mainittu endl, etsi sitä tältä sivulta:
https://www.ohjelmointiputka.net/oppaat/opas.php?tunnus=cpp_ohj_01

TVdata [24.11.2011 16:09:19]

#

Siis näin?

#include <iostream>

int main() {
std::cout <<"Hei putka!" << std::endl; //Tätä ei näy.
std::cin.get();
system("c:\\hakemisto\\ohjelma.exe"); //Tämä on muka äsköinen ohjelma.
}

Jos näin,niin ei kyllä minua auttanut yhtään.
Endl on rivinvaihto, kyllä minä sen tiedän.

vesikuusi [24.11.2011 16:17:38]

#

http://www.cplusplus.com/reference/iostream/manipulators/endl/

Endl huuhtelee virran ja lisää rivinvaihdon. "\n" on rivinvaihto.

Mitä tulee kysymykseesi muuten, niin en minäkään oikein tajunnut, mitä yrität saada aikaan.

Torgo [24.11.2011 16:28:51]

#

Nykyisellään ohjelma tulostaa "Hei putka!". Pyytää sen jälkeen syötettä ja sen saatuaan ajaa ulkoisen ohjelman "ohjelma.exe". Ymmärsin että se oli mitä haettiinkin, mutta ilmeisesti minäkin tajusin väärin mitä ajat takaa.

TVdata [24.11.2011 16:51:38]

#

Torgo kirjoitti:

Nykyisellään ohjelma tulostaa "Hei putka!". Pyytää sen jälkeen syötettä ja sen saatuaan ajaa ulkoisen ohjelman "ohjelma.exe". Ymmärsin että se oli mitä haettiinkin, mutta ilmeisesti minäkin tajusin väärin mitä ajat takaa.

Et tajunnut väärin.

Metabolix [24.11.2011 16:53:47]

#

Hyvä, että toimii. Mikä sitten on ongelma?

TVdata [24.11.2011 16:59:47]

#

Se ei näytä edelleenkään ohjelmaa,joka on ennen "ohjelma.exen" käynistämistä.

Metabolix [24.11.2011 17:05:26]

#

Mitä ei näytä? Selitä nyt ihan tarkasti, mitä tapahtuu, kun käynnistät ohjelman, ja sitten selitä erikseen, mitä mielestäsi pitäisi tapahtua.

Esimerkiksi jos nyt itse ajan ohjelmasi (lisättyäni ensin puuttuvan rivin #include <cstdlib>, jotta saan koodin käännettyä), tulostuu ensin teksti "Hei putka!", ja kun painan sitten enter-näppäintä, tulostuu virheilmoitus "sh: c:hakemistoohjelma.exe: command not found", minkä jälkeen ohjelma sulkeutuu.

TVdata [24.11.2011 17:21:19]

#

Minulla avautuu CD-asema.(Sillä se on käynnistettävä ohjelma,jota sinulla ei ole. https://www.ohjelmointiputka.net/keskustelu/13479-voiko-c-llä-tai-cpp-lla-avata-cd-aseman)
Ei kuitenkkaan näy tekstiä. Tuo ohjelma joka tulostaa tekstin, oli vain esimerkki.
Tai,miten saisi CD-luukun avaamiskoodin tuohon "Hei putka!" ohjelmaan?

vesikuusi [24.11.2011 17:26:53]

#

Torgo kirjoitti:

Nykyisellään ohjelma tulostaa "Hei putka!". Pyytää sen jälkeen syötettä ja sen saatuaan ajaa ulkoisen ohjelman "ohjelma.exe".

Ei pyydä syötettä, vaan enteriä :)

vesikuusi [24.11.2011 17:30:56]

#

TVdata kirjoitti:

Tai,miten saisi CD-luukun avaamiskoodin tuohon "Hei putka!" ohjelmaan?

Itsehän juuri linkkasit ratkaisun?

TVdata [24.11.2011 17:49:10]

#

#include <windows.h>

int main(void) {
    mciSendString("set cdaudio door open", NULL, 0, NULL);
    return 0;
}

Miten pistän mukaan sen toisen ohjelman? (Muu kuin pelkkä "Hei putka")

Metabolix [24.11.2011 17:55:45]

#

Mitä jos opettelisit edes alkeet ohjelmoinnista? Tuossa ohjelmassa on tasan yksi rivi, joka avaa CD-aseman (Windowsissa), ja voit helposti laittaa kyseisen rivin haluamaasi kohtaan omassa ohjelmassasi.

vesikuusi [24.11.2011 18:00:47]

#

Metabolix ja muut ystävät, luulen, että ongelmamme on tällainen.

TVdata [24.11.2011 18:21:27]

#

Onnistui. Tuo oli muuten aika hauska,vesikuusi.

Chiman [24.11.2011 18:24:49]

#

Näytäpä vielä valmis koodisi.

TVdata [24.11.2011 18:37:44]

#

#include <windows.h>
#include <iostream>

int main() {
    using namespace std;
    cout <<"Hei putka!" << std::endl;

    mciSendString("set cdaudio door open", NULL, 0, NULL);
    return 0;
}

Tässä.

vesikuusi [24.11.2011 18:53:23]

#

TVdata kirjoitti:

#include <windows.h>
#include <iostream>

int main() {
    using namespace std;
    ...

Laita using namespace std; main-funktion ulkopuolelle (jos et siis oikeasti halua rajata std-nimiavaruuden käyttöä mainin sisään).

E: using namespace std -määre ei muutenkaan ole aina kovin suositeltava. Kirjoita mieluummin:

std::cout
std::cin
std::endl
jne.

Kuten oletkin yllä olevassa ohjelmassasi yhdessä kohtaa tehnyt ihan turhaan.

Ja opettele oikeasti ohjelmoimaan, jos et siis ole trolli. Et voi joka käänteessä spammata ongelmiasi putkaan. Opettele ratkaisemaan ne itse. Putkasta löytyy oikein hyvä C++ -opas, samoin kirjastoista löytyy hyviä kirjoja vasta-alkajille.

Onnea opintoihin.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta