folder Tahribat.com Forumları
linefolder C - C++
linefolder C De Programın Kapanması Eventi



C De Programın Kapanması Eventi

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    kvasir
    kvasir's avatar
    Kayıt Tarihi: 24/Ağustos/2005
    Erkek

    Beyler Unload tarzı programın kapanmasına ilişkin bir event falan varmıdır bu c de? Aslında yapmak istediğim şu:

    program şifre soracak, 60 saniye içerisinde yazılmassa, yanlış yazılırsa veya program kapatılırsa bilgisayar kapanacak.

    ?

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SpArK
    SpArK's avatar
    Kayıt Tarihi: 17/Temmuz/2005
    Erkek

    VBDream bunu yazdı:
    -----------------------------

    Beyler Unload tarzı programın kapanmasına ilişkin bir event falan varmıdır bu c de? Aslında yapmak istediğim şu:

    program şifre soracak, 60 saniye içerisinde yazılmassa, yanlış yazılırsa veya program kapatılırsa bilgisayar kapanacak.

    ?


    -----------------------------

    Bunu sana yazmak isterdim ama sinava calisiyorum suan :) Ama aradigin seylerden biri

     

    atexit()  fonksiyonudur. Oncelikle program kapandigi taktirde calismasini istedigin bir fonksiyonu yazarsin mesela  void kapandiktanSonraCalis(/*void*/)  gibi
    ve bu fonksiyonu atexit() in icine parametre olarak verirsin, zaten atexit() icine fonksiyon pointer alir ve cagrimi soyle yapicaksin ornek ;


    //burada kutuphanelerin ve kapandiktanSonraCalis
    in definition i yada implementasyonu

    int main(int argc, char **argv, char **env)
    {
    atexit(kapandiktanSonraCalis); // bunu yaptiktan sonra programin kapatildiktan sonra kapandiktanSonraCalis, programin bittikten sonra calisir.
    // bu fonksiyonla, bir arkadasim denemelik bir program istemisti yollada yaptigi islere bakayim diye :) sonra
    // bu fonksiyondan koyup konsola bu programin kendisini silen komutu verince, program kendi kendini silmis gibi olmustu :)
    }
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SpArK
    SpArK's avatar
    Kayıt Tarihi: 17/Temmuz/2005
    Erkek

    Programi eger ctrl+v ,c ,x gibi uygulaya signal yollayan seylerle interrupt ederse ki linuxta bunu yapariz genelde ozaman signal handling kullanman gerekicek, cok zevklidir :)

    http://www.cppreference.com/wiki/c/other/signal

     

     

    http://www.cs.cf.ac.uk/Dave/C/node24.html

    http://www.chemie.fu-berlin.de/chemnet/use/info/libc/libc_21.html

    http://publications.gbdirect.co.uk/c_book/chapter9/signal_handling.html

     

    kolay gelsin, gercekten zevkli seylerde ugrasiyorsun, aklim simdi bu baslikta kalicak :)

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    kvasir
    kvasir's avatar
    Kayıt Tarihi: 24/Ağustos/2005
    Erkek

    çok sağol hocam :), vaktin varsa şu 60 sn bekleme olayını nasıl yapıcam söylermisin ? o tür bir bekleme esnasında veri girilebilirmi ayrıca ?

  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    wh0
    wh0's avatar
    Kayıt Tarihi: 21/Temmuz/2008
    Homo
    bekletmek icin sleep apisini kullanabilirsin dinamik olarak cagir getprocaddress loadlibrarya sleep(60000); veri girisi icin multithreaded yaparsan girebilir yoksa giremez. createthread apisini kullanabilirsin. kernel32.dll User32.dll

    🏴‍☠️Hi'dan gelen varır Who'ya, Hi'da onun adıdır Who'da...
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    kvasir
    kvasir's avatar
    Kayıt Tarihi: 24/Ağustos/2005
    Erkek

    WH0 bunu yazdı:
    -----------------------------
    bekletmek icin sleep apisini kullanabilirsin dinamik olarak cagir getprocaddress loadlibrarya sleep(60000); veri girisi icin multithreaded yaparsan girebilir yoksa giremez. createthread apisini kullanabilirsin. kernel32.dll User32.dll
    -----------------------------

    benim sıkıntımda sleep olayında zaten. C ye de yeni başladım o kadar hakim değilim.

  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    wh0
    wh0's avatar
    Kayıt Tarihi: 21/Temmuz/2008
    Homo
    msdn i kullanabilirsin.bu arada bende javaya basladim... mobile icin. ancak java hic sarmadi.

    🏴‍☠️Hi'dan gelen varır Who'ya, Hi'da onun adıdır Who'da...
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    kvasir
    kvasir's avatar
    Kayıt Tarihi: 24/Ağustos/2005
    Erkek

    hocam ctrl+c, v , x veya herhangi tuş, tuş kombinasyonu ile çalışıyor fakat fare ile "Kapat" düğmesine basınca çalışmıyor :D

  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SpArK
    SpArK's avatar
    Kayıt Tarihi: 17/Temmuz/2005
    Erkek

    VBDream bunu yazdı:
    -----------------------------

    WH0 bunu yazdı:
    -----------------------------
    bekletmek icin sleep apisini kullanabilirsin dinamik olarak cagir getprocaddress loadlibrarya sleep(60000); veri girisi icin multithreaded yaparsan girebilir yoksa giremez. createthread apisini kullanabilirsin. kernel32.dll User32.dll
    -----------------------------

    benim sıkıntımda sleep olayında zaten. C ye de yeni başladım o kadar hakim değilim.


    -----------------------------

    VBDream bunu yazdı:
    -----------------------------

    WH0 bunu yazdı:
    -----------------------------
    bekletmek icin sleep apisini kullanabilirsin dinamik olarak cagir getprocaddress loadlibrarya sleep(60000); veri girisi icin multithreaded yaparsan girebilir yoksa giremez. createthread apisini kullanabilirsin. kernel32.dll User32.dll
    -----------------------------

    benim sıkıntımda sleep olayında zaten. C ye de yeni başladım o kadar hakim değilim.


    -----------------------------

    C ye yeni basladiysan bu yapmak istedigin nedir dostum, bence yapamazsin ornek kod bulmadan :( Dedigim gibi, signal handling, ve wh0 nun dedigi thread olayini soylicektim birtek orasi kadar uzun surebilir diye ama daha yeniyim diyorsun, forklama, shared memory kullanimi, threadler yaratma, ki https://computing.llnl.gov/tutorials/pthreads/   posix kullanabilirsin linux icin kodluyorsan. bekleme icin wh0 nun dedigi gibi sleep(kacMiliSaniyeBeklesin);  diye fonksiyon var basit bir kutuphane icinde var guncel UI i mesgul ediceginden, veri girisini veya saniye saymayi bir thread e koyman gerekir. Soyle olabilir saniye saymadi threadde baslatirsin vs vs.

  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    seretide
    seretide's avatar
    Kayıt Tarihi: 14/Haziran/2010
    Erkek

    bekleme esnasında veri girilmesini winapi yle yapabilirsin ama baya karışık .Şunu kullanabilirsin

     

    for(i=0;i<=bekleme_suresi*10;i++)
    {
       Sleep(100); //1 saniyenin 10 da birinde bir kontrol edicek
       if (GetAsyncKeyState(
    0x41)==-32767) //a tuşuna basılırsa 0x41 a nin virtual key code karşılığı
       {

            //a ye basılınca yapılacak işler

       }      

    }

     virtual key cod listesine şurdan bakabilirsin

    http://msdn.microsoft.com/en-us/library/dd375731%28v=VS.85%29.aspx 

     

    edit: windows.h ıda çağırman gerek



    Saçma
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    guru
    guru's avatar
    Kayıt Tarihi: 30/Mart/2007
    Erkek

     

    #include <windows.h>
    #include <stdio.h>
    
    HANDLE g_hThr;
    DWORD g_dwThrID;
    
    DWORD WINAPI thr_wait(LPVOID p);
    
    int main(int argc, char* argv[])
    {
    	char buff[512];
    
    	/*thread yarat. 60 saniye sonra programi kapatsin*/
    	g_hThr = CreateThread(NULL, 0, thr_wait, NULL, 0, &g_dwThrID);
    	
    	if (g_hThr == NULL)
    	{
    		perror("thread");
    		return 0;
    	}
    
    	gets_s(buff, 512);/*sifreyi al ;-)*/
    
    	if (strcmp(buff, "Sifre") != 0)/*sifre kontrolu*/
    		return 0;
    
    	/*sifre dogruysa akis burda. kapaticak threadi sonlandir.*/
    	TerminateThread(g_hThr, 0);
    
    	/*programin kodlari*/
    	
    	return 0;
    }
    
    DWORD WINAPI thr_wait(LPVOID p)
    {
    	Sleep(60 * 1000);
    	exit(-1);
    	return 0;
    }
    
    
    

     

    ornek olsun ;-)


    ..
Toplam Hit: 2846 Toplam Mesaj: 18