PHP DOTNET (): kullanılabilir bir WIN GUI oluşturmak için System.Windows.Forms denetim olayları yakalama

0 Cevap php

PHP en DOTNET class ve System.Windows.Forms ile Windows GUI yaptı. Ama, ben düğme tıklama, alan güncellemeleri oluştururlar açma / kapama, vb işleme üzerinde şaşırıp

Ben herhangi bir olaylarıyla çalışırken () com_event_sink alınamıyor. Ben sahte PHP almak veya kontrol olayı "delege" lavaboya herhangi bir yöntemi biliyor. Yapabileceğim en iyi hackish - bir düğme şu anda gerçek bir tıklama olay yerine sürüklenen ise böyle çek gibi - sürekli değişiklikler herhangi bir ipucu için kontrol özelliklerini izlemek. Ama ben bile burada kullanabilirsiniz kullanıcı etkileşimi ile ilgili sadece bir ya da iki olası özellikleri var. Açıkçası, form kontrolü olayların içine çengel olmadan, bu benim uygulama oldukça güçsüz kılar.

PHP kullanarak, herkes etkili bir Windows GUI yapmak için gerçek System.Windows.Forms sınıf olayların içine kanca başardı? Eğer öyleyse, nasıl? Ya da, ben onun yerine bakmak gerekir bir farklı montaj var? Alıntı wezfurlong.org: If you want events in the mean time, all the .Net docs suggest that you should instead make your own wrappers for the objects... :(. Herkes yeni bir dil öğrenmek için zorlamaz geçici bir çözüm bulundu?

İşte benim çalışma testi GUI var ...

<?php

$full_assembly_string = 'System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089';
$namespace = 'System.Windows.Forms';

// Main Form
$form = new DOTNET($full_assembly_string, $namespace.'.Form');
$form->Width = 450;
$form->Height = 550;
$form->Show();

// Textbox 1
$txt1 = new DOTNET($full_assembly_string, $namespace.'.TextBox');
$txt1->Name = "IP";
$txt1->Height = 400;
$txt1->Width = 400;
$txt1->Top = 40;
$txt1->Left = 5;
$txt1->Parent = $form;

// Textbox 2
$txt2 = new DOTNET($full_assembly_string, $namespace.'.TextBox');
$txt2->Height = 300;
$txt2->Width = 400;
$txt2->Top = 80;
$txt2->Left = 5;
$txt2->Multiline = True;
$txt2->ScrollBars = 3;
$txt2->Parent = $form;

// Button 1
$btn1 = new DOTNET($full_assembly_string, $namespace.'.Button');
$btn1->Height = 25;
$btn1->Width = 75;
$btn1->Text = "Backtrace";
$btn1->Top = 5;
$btn1->Left = 5;
$btn1->Parent = $form;

// Hack message/event capturing loop
while(true) {
    com_message_pump(1);
    // Check if 'Capture' property of Button 1 changed in lieu of actual click event
    if ((bool) $btn1->Capture) {
        $txt2->Text = "BACKTRACING ".$txt1->Name." ".$txt1->Text."!!";
        $btn1->Capture = false; // force release of the button
        }
    }

?>

Ben de bir alternatif ilgileniyorum - PHP-GTK. Herkes normal PHP5.3 kurulumu ile gerekli kütüphanelerini kaplayan bu çalışma aldı? Ben güncel yıl olduğu gibi PHP-GTK ile birlikte paketlenmiş PHP sürümünü yükleyerek ilgilenmiyorum. Herkes almak için PHP-GTK adlı paket üzerinden dosyaları dll hangi söyle ve herhangi bir normal uzantısı gibi çalışıyor almak benim normal PHP kurulum içine düşmesi seçebilirsiniz Ama eğer ben dinliyorum.

Edit: Durumda herkes Winbinder bahseder - bu, bir dağınık hobi proje sadece çok adamcağız, ben bu geliştiriciler büyük bir iş yaptığını düşünüyor olsa da, ve merkezi şu anda kullanılabilir olması değil yapılmaktadır.

Herkes bir hile ya da bir sarıcı olarak hareket olabilir belirli bir COM-etkin. Net montaj bilir sürece Update:, ben doğal PHP yöntemleri kullanarak bu sorunu çözülemeyen düşünecektim. Ben bir COM sınıf olarak kaydetmek, go-arasında olduğu VB.Net Yansıma sınıf ağır güvenerek kendi VB.Net sarıcı kütüphanesi yapmak için başvurmak zorunda, ve bunun yerine-ki-COM yoluyla bağlayın. Hayal kırıklığı, ama işe başlıyor.

0 Cevap