29 Jul

PHP-GTK ile ekran görüntüsünü (Screenshot) almak

Başlığa bakıp da, “hadi ya, bu nasıl olacak” diyen olmuştur sanırım. Bu tam olarak PHP-GTK işbirliği ile olabilecek birşey değil, en azından bildiğim kadarıyla 😉
Bu fikrin tamamen can sıkıntısı mahsülü olduğunu belirtmeden geçemeyeceğim.
Bu işlemi yapabilmek için şunlara ihtiyacınız var:

  • Buradan temin edebileceğiniz, php-gtk2 çalıştırılabilir dosyaları (indirin ve sadece bir klasöre açın hepsi bu kadar, ne ekstra bir ayar ne de başka birşey gerekmiyor)
  • .NET Framework hayda bu da nerden çıktı dediğinizi duyar gibiyim,az sabır 🙂 anlatacağım
  • Bu iş için hazırlanmış ve bize yardım edecek dll dosyamız

Daha önce sistem çekmecesine yerleşen uygulamamızdaki örneği kullanacağım burda. Bunu yaparken de, PHP-GTK çalışıtırılabilirlerini indirip bir klasöre açtığınızı, .NET Framework u indirip kurduğunuzu, linkini vermiş olduğum dosyayı indirdikten sonra, .NET Framework içerisinde bulunan “regasm.exe” yardımıyla “Ekran.dll” dosyamızı kayderttiğimizi (regasm /tlb:ekran.tlb ekran.dll komutuyla) farz ediyorum 😉 şimdi başlayalım:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php

/*
* Daha önce verdiğimiz örnekteki tek değişiklik
* Ekran.dll kütüphanesindeki nesneyi oluşturup kurmamızdır
**/
$NETObjem = new COM("Ekran.Ekran");
$pencere = new GtkWindow();
$pencere->set_title("Örnek Pencere başlığım");
$pencere->set_size_request(240, 120);
$pencere->set_position(Gtk::WIN_POS_CENTER_ALWAYS);
$pencere->connect_simple('destroy', array('Gtk','main_quit'));
$pencere->add($vbox = new GtkVBox());
$vbox->pack_start(
new GtkLabel("Sistem çekmecesindeki ikona tıkladınız!"));
$vbox->pack_start(
new GtkLabel("Gizlemek için birkez daha tıklayın."));
// sistem çekmecesine yerleşecek ikonu ayarlıyoruz
// işte yeni versiyondaki yenilik ve büyük kurtarıcı
$statusicon = new GtkStatusIcon();
// Sistem çekmecesinde görünecek ikonumuzu seçiyoruz
<a href=http://gtk.php.net/manual/en/gtk.enum.stockitems.php target=_blank> burdan da </a>görebileceğeniz gibi PHP-GTK2 içerisinde
// onlarca hazır ikon bulunmaktadır
$statusicon->set_from_stock(Gtk::STOCK_HOME);
// sistem çekmecesindeki ikon üzerine gelindiğinde
// görüntülenecek ipucuyu ayarlıyoruz.
$statusicon->set_tooltip(?Pencereyi gormek için sol tıklayın?);
$app_status = 0;
// sistem çekmecesindeki ikona sol tıkladığımızda bir olay
// gerçekleşir (signal) ve bu olay karşılığında çalışmasını
// istediğimiz işlevi atıyoruz (callback)
$statusicon->connect(?activate?, ?on_activate?);
$pencere->hide_all();
Gtk::main();
function on_activate($statusicon) {
global $pencere, $app_status;
 if ($app_status) {
$statusicon->set_tooltip(?Pencereyi görmek için sol tıklayın?);
$pencere->hide_all();
/*
* Penceremizi gizliyoruz ve ekran görüntümüzü
* alıyoruz, hepsi bukadar
**/
$NETObjem->Cek();
$app_status = 0;
} else {
 $statusicon->set_tooltip(?Pencereyi görmek için?);
  $pencere->show_all();
  $app_status = 1;
 }
}
?>

Biliyorum, Print+Screen tuşu ile kolayca yapabileceğimiz bu işi böyle eziyete dönüştürmek istemeyenimiz olacaktır. Fakat burda asıl amacım PHP nin yeteneklerini sergileyebilmekti. Umarım anlatabilmeyi başarmışımdır. Ayrıca bu uygulamanın windowsta (şimdilik) çalıştığını belirtsem fena olmaz sanırım.

One thought on “PHP-GTK ile ekran görüntüsünü (Screenshot) almak

Comments are closed.