Pagina 4 din 6

Scris: 14 Mar 2014, 21:24
de BosGrigore
Multumesc pentru ajutor!

Scris: 16 Mar 2014, 08:32
de BosGrigore
Care este codul sursa pentru o combinatie de doua taste pentru a deschide NotePad asa cum exista scurtatura windows+e pentru Windows Explorer din xp? Codul sursa sa fie scris tot in c++.
Unde se afla in Visual express c++ 2008 date despre aceste combinatii de taste?

Scris: 16 Mar 2014, 09:58
de Campus
Salutare
Depinde mult de ce fel de aplicatie vrei sa creezi. Daca faci o aplicatie care ruleaza in consola poti folosi metoda explicata de mine anterior. Daca faci o aplicatie cu interfata grafica trebuie doar sa adaugi un eveniment pentru apasarea tastelor la formular. Ce fel de aplicatie vrei sa faci? are interfata grafica?

Scris: 18 Mar 2014, 21:17
de BosGrigore
Vreau sa fac un cronometru care sa ruleze in consola. Aplicatia vrau sa fie instalata pe un memorycard conectat la USB.
Multumesc!

Scris: 20 Mar 2014, 11:34
de Campus
Unde se afla in Visual express c++ 2008 date despre aceste combinatii de taste?
Situatia este putin mai complicata deoarece aceste scurtaturi de taste sunt detectate de biblioteci specializate din limbajul c
Daca ar fi sa o luam de la inceput, in limbajele astea de programare exista functii care sunt grupate in biblioteci de functii. Astfel, cand am pus in codul anterior linia #include <time.h> am inclus biblioteca de functii pentru masurarea timpului. Din aceasta biblioteca functia clock() returneaza timpul prezent la un moment dat si asa mai departe.
In visual studio ca si in orice alt mediu de programare tu lucrezi cu aceste biblioteci asa ca documentatia legata de ele o gasesti mai degraba pe internet in engleza decat in visual studio care e de fapt doar un editor mai avansat ce iti permite sa le pui laolalta si sa creezi un program.
Ca sa detectezi apasarea tastelor poti folosi mai multe variante de biblioteci asa cum era si in link-ul pus de mine anterior. Exemplul facut de mine era bazat pe biblioteca windows.h pentru ca am presupus ca doresti sa o incluzi intr-un program cu interfata grafica ulterior si era mai usor de adaptat. La fel de bine poti folosi si curses.h si alte stfel de biblioteci.
In fine, m-am pierdut in detalii. ideea de baza e ca ar trebui sa incerci sa faci mai intai programe mai simple pentru a intelege mecanismele unui limbaj de programare. De exemplu un programel in consola care sa ia un cuvant si sa il transforme in alt cuvant sau care la o anuita comanda sa iti printeze timpul actual al sistemului. :)
modalitatea prin care lansezi orice program din cod c++ este functia system(). De exemplu system("notepad.exe") va lansa notepad intr-o maniera similara cu felul in care windows deschide notepad atunci cand scrii notepad.exe in dialogul Run...
Referitor la programelul pe care vrei sa il faci, am o curiozitateL de ce doresti sa fie in consola? In visual studio e oarecum mai usor sa creezi programe cu interfata grafica care folosesc dot net decat programele in consola in c++. Daca doresti sa inveti doar c++ si sa crreezi programele in consola e suficient sa folosesti Orwell dev-c++ , de exemplu., sau orice alt mediu de programare accesibil si gratuit.

Scris: 20 Mar 2014, 20:57
de BosGrigore
Cate o intrebare este buna pentru ca se edifica anumite lucruri. Din superficialitate am inteles ca in fisierele header sunt doar declaratii dar de fapt sunt biblioteci. Este in regula Campus, multumesc pentru explicatii.

Scris: 28 Apr 2014, 20:26
de BosGrigore
Functia Beep () reda sunetul in difuzorul pc-ului. Exista o functie la fel ca Beep () dar care sa redea sunetul in boxele conectate la pc si care este aceasta in c++?

Scris: 28 Apr 2014, 23:35
de Campus
Salut
Am incercat si eu si am gasit o solutie alternativa pentru windows.
Trebuie sa trimiti caracterul specific pentru alerta: '\a'
Se va auzi un beep din windows specific unui messagebox din cate am observat eu,
In codul cu care am incercat eu am pus si un sleep pentru ca programul sa aiba timp sa redea sunetul.
Iata codul cu care am testat eu:

Cod: Selectaţi tot

#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
    cout << "Beep in difuzoare!" << endl;
    cout << '\a';
    Sleep(1000);
    return 0;
}

Scris: 30 Apr 2014, 16:04
de BosGrigore
Cu '\a' sunetul se aude tot in difuzorul intern al calculatorului. Mentionez ca utilizez windows xp pro.

Scris: 30 Apr 2014, 19:28
de Campus
Ce interesant! pe Windows 8 se aude in difuzoare. Probabil si pentru ca eu folosesc compilerul mingw.... cine stie.
M-am mai uitat pe internet si am gasit ca se poate folosi functia PlaySound din winapi. Pentru asta, in project properties trebuie sa adaugi biblioteca winmm pe undeva pe la linker settings
Urmatorul cod functioneaza la mine:

Cod: Selectaţi tot

#include <windows.h>
#include <mmsystem.h>
using namespace std;
int main()
{
    PlaySound(TEXT("SystemStart"), NULL, SND_ALIAS);
    return 0;
}

Scris: 19 Mai 2014, 21:21
de BosGrigore
Am adunat WinMM.Lib in linker -> input -> aditional dependencys. Se scrie WinMM.Lib in campul de editare si se apasa enter > apply > ok. Functia PlaySound reda sunetul care se aude la pornirea pc-ului si cu OS windows xp. Care este codul sursa care la apasarea oricarei taste sa redea un beep sau sa redea un fisier cum este pas.ogg utilizat de Manu in explorare sala?

Scris: 27 Mai 2014, 18:16
de BosGrigore
Osolutie pentru "Beep la apasarea oricarei taste":
Inceput Cod
//PressAnyKeyBeep
#include <windows.h>
#include <iostream>
using namespace std;
int main (void)
{
int i;
short esc = 0;
while (!esc)
{
esc = GetAsyncKeyState ( VK_ESCAPE ); //oprire aplicatie
for (i=0; i<256; i++) //verificam tastele cu ajutorul buclei for
{
if (GetAsyncKeyState (i)&& i!=16&&i!=17) //nu se genereaza beep pentru codul ascii 16 respectiv 17
{
Beep (4000, 100);
}
}
Sleep (50); //pauza 50 milisecunde
}
return 0;
}
Sfirsit cod
Campus, este suficient de buna solutia aleasa de mine?

Scris: 27 Mai 2014, 19:51
de Campus
Da, e o solutie buna. La mine functioneaza.
Pana la urma in programare nu exista neaparat retete optime. Totul depinde de scopul programului si de mijloacele pe care doresti sa le folosesti. Cel putin pentru mine orice solutie care functioneaza , poate fi integrata intr-un program mai larg si nu consuma nejustificat resurse e buna :)

Scris: 27 Mai 2014, 20:00
de Campus
BosGrigore scrie:Am adunat WinMM.Lib in linker -> input -> aditional dependencys. Se scrie WinMM.Lib in campul de editare si se apasa enter > apply > ok. Functia PlaySound reda sunetul care se aude la pornirea pc-ului si cu OS windows xp. Care este codul sursa care la apasarea oricarei taste sa redea un beep sau sa redea un fisier cum este pas.ogg utilizat de Manu in explorare sala?
Cu WinMM cred ca poti reda doar fisiere suportate de windows adica wav, wma si probabil mp3 desi nu sunt sigur de asta. Ca sa redai un sunet trebuie sa il convertesti in wav, sa il pui in directorul programului si sa folosesti
PlaySound(TEXT("sunet.wav"), NULL, SND_FILENAME);
Pentru sunete in formate mai xomplexe se folosesc biblioteci multimedia cum este si bass.dll care este dedicata manipularii sunetelor sau ceva ce postase manu pe aici in python dar care are si biblioteca pt c++.

Scris: 31 Mai 2014, 17:21
de BosGrigore
Cu WinMM.lib si functia playsound se pot reda fisiere cu extensia .wav.
Cu c++ 2008 express instalat pe pc cu windows xp se poate compila codul sursa pentru a obtine o aplicatie care sa ruleze pe linux?