Niin, olen ihan vasta aloittanut ja kiinnostunut tästä C-koodaamisesta, C++:aa en ole vielä kokeillut. Tein juuri C-koodaamisen ensimmäisen tulostusharjoituksen joka on näillä sivuilla.
Kysymykseni on sellainen että voiko C/C++:lla koodata sellaisen ohjelman, että kun sen suorittaa niin se avaa koneesi CD-aseman? ei olisi myös pahitteeksi jos se näyttäisi DOS ikkunassa jonkin viestin, vaikkapa "tässä sinulle kahvikuppiteline"
Onko tämä toteutettavissa? ja jos on, niin voiko joku opastaa minua?
Beebo kirjoitti:
Kysymykseni on sellainen että voiko C/C++:lla koodata sellaisen ohjelman, että kun sen suorittaa niin se avaa koneesi CD-aseman?
Voi.
Näin pikaisesti haettuna ainakin tämä ketju käsittelee asiaa
En hirveästi saanut selkoa, kun siellä ei ollut mitään selkeää komentohässäkkää C:lle. tai jos oli niin se ei toiminut, joka taas johtuu käyttäjästä.
C-kielen vakiokirjastot eivät sisällä komentoa CD-aseman käsittelyyn. CD-aseman käsittely sinun on joko ohjelmoitava itse tai käytettävä jotain valmista kirjastoa. Et kertonut käyttöjärjestelmääsi, joten en voi antaa tarkkaa vastausta.
Käyttöjärjestelmänä windows xp ja käytän ohjelmaa nimeltä Dev-c++
Mikä ihme siinä CD-aseman luukussa viehättää? Eikö sitä voi ihan nappia painamalla avata, jos kerran on tarvis? CD:n sisään laittamiseksi täytyy kuitenkin kurottaa sinne asti.
Linkitä ohjelmaan winmm. (Dev-C++:n projektin asetuksissa on ruutu, johon voi kirjoittaa linkkerille komentoriviterveisiä, lisää siis siihen -lwinmm
.) Liitä includella windows.h ja käytä mciSendString-funktiota:
mciSendString("Set CDAudio Door Open", 0, 0, 0);
P.S. Oli taas niin kuvaava otsikko aiheella, että teki oikein pahaa muuttaa se paremmaksi. Keskustelun ohjeissa nähdäkseni kehotetaan kirjoittamaan otsikoita, joista saa käsityksen ongelmasta, ja ainakin minä kehotan noudattamaan kyseistä ohjetta.
Metabolix kirjoitti:
P.S. Oli taas niin kuvaava otsikko aiheella, että teki oikein pahaa muuttaa se paremmaksi. Keskustelun ohjeissa nähdäkseni kehotetaan kirjoittamaan otsikoita, joista saa käsityksen ongelmasta, ja ainakin minä kehotan noudattamaan kyseistä ohjetta.
Jos olisin tiennyt että täällä on tälläisia henkilöitä, olisin jättänyt kysymättä. Lisäksi neuvosi oli varsin sekava.
Näin lyhyt koodi riittää CD-luukun avaukseen Windowsissa:
#include <windows.h> int main(void) { mciSendString("set cdaudio door open", NULL, 0, NULL); return 0; }
Ainoa ongelma on siinä, että funktio mciSendString vaatii muutoksen linkkerille annettavaan komentoon. Minä en saanut ohjelmaa toimimaan Dev-C++:lla muuten kuin tekemällä tästä pienestä ohjelmasta oman projektin.
Tässä tulevat tarkat ohjeet projektin tekoon ja linkkerin säätöön:
1. Valitse File->New->Project.
2. Valitse Empty Project.
3. Anna nimeksi vaikka luukku.dev.
4. Valitse Project->New File
5. Kirjoita ohjelmaan yllä oleva koodi.
6. Tallenna vaikka nimellä luukku.c.
7. Mene valikkoon Project->Project Options.
8. Valitse välilehti Parameters.
9. Kirjoita Linker-kohtaan -lwinmm
.
Nyt ohjelma on valmis käännettäväksi ja ajettavaksi.
Kiitos kunnollisesta opastuksesta.
Miten cd-aseman saisi suljettua?
Pienellä loogisella päättelyllä esimerkiksi vaihtamalla lähetettävään komentoon Openin paikalle Close.
Metabolix kirjoitti:
Pienellä loogisella päättelyllä esimerkiksi vaihtamalla lähetettävään komentoon Openin paikalle Close.
Ei kyllä toimi oikein noi sinun loogiset päättelyt.
No ei näköjään, mutta siitä voi syyttää Microsoftia. Ja suoraan sanoen laiska tai osaamaton olet, kun et itse voi googlettaa komennon mahdollisia parametreja. Näyttäisi syystä tai toisesta olevan Closed
tuossa tapauksessa. Miksihän hemmetissä, sitä ei varmaankaan moni tiedä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.