AÇIKLAMA
C++ Builder 6 ile uyumludur. Bu programda birçok işlem beraber yapılmaktadır. Şöyleki öncelikli olarak formumuzda bir adet Image nesnesi ve Timer nesnesi bulunmaktadır. Programımızı koştuğumuzda ekranda ve görev çubuğunda görünmemesini istiyorsak daha önceki derslerimizde de görmüştük fakat tekrardan belirtelim Form Create olayında SetWindowLong(Application->Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW) API'sini kullanarak görev çubuğundan programınızın görünmemesini sağlayabilirsiniz. Ayrıca Project1.cpp içinde Application->CreateForm(__classid(TForm1), &Form1) satırından sonra Application->ShowMainForm=false kodunu yazarak programınızı koştuğunuzda programın formunun gizlenmesini yani görülmemesini sağlayabilirsiniz. Ekranın fotoğrafını çekme işlemine gelecek olursak; HDC dc=GetDC(0); satırında ekranın özelliklerini HDC türünden bir nesneya GetDC windows API'si ile atarız. Daha sonra Graphics::TCanvas *ScreenCanvas=new Graphics::TCanvas satırı ile TCanvas nesnesi türünden bir değişken tanımlarız. Buradaki tanımlama işlemi C++ modundadır ki doğal olarak C++ Builderde de çalışır. Daha sonra ekran özelliklerini aldığımız nesneyi tanımladığımız TCanvas türünden nesneye ScreenCanvas->Handle=dc satırı ile atarız. Neden bu işlemleri yaptık diyecek olursak bizim Image nesnemize direk olarak dc nesnesinden atama yapılamaz bu sebepten dc türünün atanabileceği TCanvas türünden bir nesne tanımlayıp oradanda TImage nesnesine atama yapabilelim diye. Daha sonra image nesnesinin boyutlarını dc (yani ekranın) nesnesinin atanmış olduğu screen türünden tanımlamış olduğumuz nesneden aldık ve atadık. Daha sonra TRect tipinden bir nesne tanımladık tam image nesnemizin içine oturacak ve onu dolduracak şekilde. Image1->Picture->Bitmap->Canvas->CopyRect(rect,ScreenCanvas,rect) satırı ile rect nesnesini içine ekranı yerleştirip rect nesnesini de image nesnemizin içine çizdirdik veya atadık da denilebilir. Daha sonra Image nesnesi içindeki resim doğal olarak bmp formatında olduğundan bulunduğu klasöre kaydediliir ve program 3 sn sonra sonlandırılır.
Programın Tamamını Aşağıdaki Linkten İndirebilirsiniz
Linki Görebilmeniz İçin Üye Olmanız Gerekmektedir...
Üye Kayıt
Program Kodu:
Project1.cpp :
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop //--------------------------------------------------------------------------- USEFORM("Unit1.cpp", Form1); //--------------------------------------------------------------------------- WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { try { Application->Initialize(); Application->CreateForm(__classid(TForm1), &Form1); Application->ShowMainForm=false; Application->Run(); } catch (Exception &exception) { Application->ShowException(&exception); } catch (...) { try { throw Exception(""); } catch (Exception &exception) { Application->ShowException(&exception); } } return 0; } //---------------------------------------------------------------------------
Unit1.cpp
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { SetWindowLong(Application->Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW); } //--------------------------------------------------------------------------- void __fastcall TForm1::Timer1Timer(TObject *Sender) { HDC dc=GetDC(0); Graphics::TCanvas *ScreenCanvas=new Graphics::TCanvas; ScreenCanvas->Handle=dc; Image1->Picture->Bitmap->Width=Screen->Width; Image1->Picture->Bitmap->Height=Screen->Height; TRect rect=Rect(0,0,Screen->Width,Screen->Height); Image1->Picture->Bitmap->Canvas->CopyRect(rect,ScreenCanvas,rect); Image1->Picture->SaveToFile("1.bmp"); Timer1->Enabled=false; } //---------------------------------------------------------------------------