Örnek: MFCAxs.exe MFC kullanarak Active Script Host uygular.

Makale çevirileri Makale çevirileri
Makale numarası: 168214 - Bu makalenin geçerli olduğu ürünleri görün.
Bu makale arşivlenmiştir. "Olduğu gibi" sunulmaktadır ve bundan sonra güncelleştirilmeyecektir.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

MFCAxs.exe MfcAxscrVb içeren bir örnektir. MfcAxscrVb MFC kullanılarak yazılmış bir yönerge örnek Active Komut Dizileri ana bilgisayardır. VBScript DLL ev sahipliği yapan; ancak, Active Komut Dizileri düzenekleri herhangi Active Komut Dizileri altyapıya genel. MfcAxscrVb, ana bilgisayarın Active Komut Dizileri arabirimlerini ve ana pencerede, iletilerini olaylar için komut dosyası altyapısı harekete bağlanmak için ana bilgisayardan gönderme nesneler için yalnızca bir olası yol gösterir.

MfcAxscrVb Visual C++ 5.0 çalışma ve proje dosyası içerir. Hiçbir VC ++ 4.2 uyumlu makefile veya mdpfile bulunmakla MfcAxscrVb kaynak kodu, MFC 4.2b ile uyumludur.

Önkoşullar: COM otomasyonu

Daha fazla bilgi

Aşağıdaki dosya Microsoft Yükleme Merkezi'nden yüklenebilir:
MFCAxs.exe
Microsoft destek dosyalarını karşıdan yükleme konusunda ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
119591Microsoft Destek Dosyaları Çevrimiçi Hizmetler'den Nasıl Alınır
Microsoft bu dosyada virüs taraması yapmıştır. Microsoft, dosyanın kullanıma sunulduğu tarihteki en güncel virüs tarama yazılımını kullanmıştır. Dosya, üzerinde herhangi bir yetkisiz değişiklik yapılmasını engellemeye yardım eden geliştirilmiş güvenliğe sahip sunucularda depolanır.

Örnek çalışan

MfcAxscrVb örnek çalıştırdığınızda bir büyük bir düzenleme denetimi uygulama sol üst köşesindeki görürsünüz. Komut dosyasını başlatmak için bu pencereyi içine türü komut dosyası ve select "Çalıştır komut" düğmesini ya da, yapıştırabilirsiniz. Birkaç sınama komut Script.txt ve Testevents.txt dosyaları için sağlanır.

Ana bilgisayar açıklamanızı: nesne gönderme

Ana odak için bu örnek MFC kullanarak gönderme nesneleri uygulamasıdır. Bunun nedeni, basit bir işlemdir. Komut dosyası dili, yoksa komut herhangi bir şey çok kullanım değildir.

Tüm Active Komut Dizileri bağlı olduğu çekirdek çoğu zaman, otomasyon teknolojidir. Otomasyon düz bilgili, Active Komut Dizileri herhangi bir ana kod denemeden önce kesinlikle gerekli değildir. Otomasyon için birkaç iyi başvuruları vardır: 14 ve, Brockshmidt'ın "iç OLE," Bölüm 11 15 bölümler iç Dale Rogerson'ın "COM" ve "OLE Otomasyonu Programcı Başvuru."

CCmdTargetPlus:

Gerek duyduğunuz olan komut dosyası özellikleri ve yöntemleri ıdispatch için izin vermek, ancak aynı zamanda komut dosyası olayları oluştur bazı nesneler. MFC kesinlikle grunt işin çoğunu dağıtma arabirimi için bir COM nesnesi oluştururken yapar. Ancak, hem gelen dağıtma arabirimlerini giden dağıtma arabirimlerini veya olay havuzlarını, destekleyen tek MFC COleControl sınıftır. COleControl ne için istediğiniz kadar çok bulky ' dir. Yalnızca olayları bir dağıtma arabirimi istediğiniz ve bilgileri yazın. VBScript olayları destekleyen gönderme nesneleri tür bilgileri gerekir. Oluşturduğunuz ya da bu hızlı, veya bir statik tür kitaplığı için ana bilgisayarın gönderme nesneleri oluşturmak ve tek tek her nesne için ıtypeınfo edinin.

Büyük bir olasılıkla gerekli, ancak, bu üç parça destekleyen CCmdTargetPlus adında bir temel sınıf MfcAxscrVb vardır: arabirim, bağlantı noktaları bir olay harita denetim stili ve ıprovideclassınfo'yu üzerinden kolayca erişilebilir bir tür bilgi gönderme. Çoğu CmdTargetPlus kodu sınıflar çok daha kolay olayları ekleme hangi yaptığı türetilmiş olay eşlemeler, izin vermek için eklendi.

Nesneleri gönderme:

Tüm ana bilgisayar tarafından sağlanan gönderme nesneleri CCmdTargetPlus kullanılarak uygulanır. Iyi iş yapmanız gereken birkaç şey vardır. Herhangi birine gönderme (CAButtonDispatch CBButtonDispatch ve benzeri) nesneleri için ne gerekli olduğu hakkında bir demirbaş bakın. Bu belgenin sonunda listelenen MfcAxscrvb'ın nesne modeli hakkında kısa bir özeti.

Kendi nesne eklerseniz, birincil dağıtma ve birincil olayları arabirimleri ve toplam nesnesinde için clsid üç benzersiz Guıd'ler için bir kez daha denetleyin dikkat edin. Bu <a0>Uygulama</a0> dosyasında hem de .odl dosyada yapılması gerekir. (Kes ve Yapıştır yardımcı burada.) Kestiğiniz tüm sınıf Sihirbazı makroları yapıştırın ve sonra yeni sınıf adını değiştirin. Sınıf Sihirbazı çok belirli olduğu halde izlerseniz, her şey yalnızca sağ .odl, .h ve .cpp dosyaları, özellikleri, yeni olaylar eklemek için kullanabilirsiniz ve bunu bir MFC OLE denetimi gibi yöntemleri, dağıtım için nesne. Bu, sort kullanışlıdır.

MfcAxscrVb gönderme mekanizmaları, bunu gerçekten başvuruda MFC nesneden ayrı uygulama nesnesi tutar. Örneğin, iletişim kutusunda, "komut dosyası olan AButton," adlı bir düğme vardır. MFC düğmesini CButton nesnedir. CCmdTargetPlus türetilmiş sınıf, CAButtonDispatch, ayrı ve farklı. Bu önemli bir noktadır. Yalnızca ne ana Programcı açıkça temel MFC nesneler ve Windows denetimleri için seçerse komut satırı olacaktır.

CEventsButton, CEventsEdit, CeventsListBox:

Olaylar için varsa gereken bir Windows olayı--söyleyin için bir düğmeyi tıklatın--yanıt verir ve komut dosyası altyapısı için bir olayı oluşturur kodu. (Bir ana bilgisayar</a0> nesnesindeki bağlantı noktaları tarafından işlenen bir arabirim üzerinde ınvoke dağıtma etkinliğidir unutmayın.) Bu örnekte, bu nesneler, çeşitli sınıftan türetilmiş içine standart MFC ileti işleyicileri ekleyerek gerçekleştirir. Bu işleyiciler her yalnızca FireEvent (courtesy kodunun CCmdTargetPlus için eklenen) gönderme nesneye çağrı yok. Otomatik olarak şey olmuyor.

Bu örnekte ayrı dağıtım nesnesi ve gerçek MFC penceresi nesnesi olduğu için iletişim ana açıkça ikisi birlikte kanca gerekir. Bu işlem, Mfcaxscrvbdlg kurucusunda yapılır.

Adlandırılmış öğeler

Gönderme nesneleri sonra komut dosyası alt yapısı hakkında bunları biliyor böylece bunları ayarlamanız gerekir. Komut dosyası altyapısı bilmektedir adlı dağıtım nesnelerinin derlemesini "Komut dosyası ad." olarak adlandırılır Öğeler, IActiveScript::AddNamedItem yöntemle komut dosyası ad alanına eklenir. BEN önceden de belirttiğimiz gibi bir ıdispatch nesnesinin uygulamak ve nesne için tür bilgileri ıtypeınfo üzerinden desteklemek için ana bilgisayarın harcı var. Komut dosyası altyapısı, adlandırılmış bir öğeye başvuru çözümlemeye gerektiğinde bir ıunknown işaretçisi (Bu, çoğunlukla ıdispatch için sorgular) ve bir ıtypeınfo işaretçisi istemek için IActiveScriptSite::GetItemInfo yöntemini kullanır.

Olmayan bir ana bilgisayar komut dosyası olarak istediği herşeyi adlı bir öğe olması gerekir. Ana bilgisayar, genellikle, nesnelerinde daha yüksek düzeyli bir nesne erişilebilir olduğu nesnelerin bir sıradüzeni vardır. Uygulama BIR ortak mecazının olan belge, belge nesnesi bir uygulama nesnesi ıdispatch özelliği olarak en üst düzey uygulama nesnesi için erişilebilir olduğu madde hiyerarşisini->->. Aynı şekilde, çeşitli nesnelerinde Document nesnesi gösterir; her madde, madde dizi ya da diğer contrivance edinebilirsiniz.

Bu düzen, komut dosyası altyapısı Akıllı yeterli bir sub-item için belge gerek kalmadan, aşağıdaki komut dosyası kodu Fort, giderek veya öğe komut dosyası ad alanına eklenecek kullanmaktır:
Set Obj = Application.Document.Item(1)
				
nesnelerinde get-, üst nesnenin özelliklerini kullan?ma sunulan gibi sürece, komut dosyası altyapısı bunları başarıyla bulur. Interestingly kadar komut dosyası altyapısı "hiyerarşisinde en üst düzey öğeyi kabul için <a0></a0>" olur. Bu uygulama, en üst düzey öğe olarak bildirilirse, daha sonra önceki komut dosyası kodu aşağıdaki söylemeniz yeterli olduğunu anlamı:
Set Obj = Document.Item(1)
				
bu tam olarak nasıl ınternet Explorer 3.0 için <a0>Pencere</a0> nesnesinin bağlamında komut dosyası kodu her zaman "Penceresi." ile nesne tüm başvuruları ad?n?nönüne olmadan sağlar, Bir komut dosyası yürütücüsünü SCRIPTITEM_GLOBALMEMBERS bayrağı'nı kullanarak, AddNamedItems çağrısında en üst düzey kod maddeyi tanımlamak gerekir. Ne genellikle temizleyin Active Komut Dizileri belgeleri tarafından ancak yapılan değil, yalnızca öğeleri adlı olayları destekleyebilir. Yukarıdaki örnek olarak kullanarak, belirli bir maddenin bir olayda işlemek için aşağıdaki söyleyin bir sözdizimi vardır:
   Sub Application.Document.Item(1)_OnEvent ' this doesn't work!
				
her nesnenin hiyerarşisinde, olayları işlemek için istediğiniz çünkü SO, MfcAxscrvbdlg için her nesnenin adlandırılmış bir öğe eklenir. Her nesne olayları şu anda desteklemeyen en üst düzey Scripter nesne ile (iletişim kendisi), erişilebilir.

WebBrowser denetimi:

Bu örnekte, komut dosyası ana bilgisayar komut dosyası ad alanı için yalnızca bir dış nesne gösterir. WebBrowser denetiminin iletişim kutusunda, MFC'ın varsayılan denetimi içerik desteği tarafından barındırılan budur. Gereken bir AddRef denetimi işaretçi gönderme ve sizin ayarladığınız. Olaylar için dış nesne bir ıtypeınfo işaretçisi şekilde duyurmak gerekir. Bu MfcAxscrVb IProvideClassInfo::GetClassInfo alır. Son çare olarak, nesnenin türü-bilgi kendisi bir ıtypeınfo duyurmak için bir ana bilgisayar olarak okuyabilir. Neyse ki; bu nedenle, bu MfcAxscrVb yapmaz WebBrowser denetimi GetClassInfo, destekler.

Ad boşluğuna diğer dış Otomasyon nesne eklemek isterseniz, tüm genellikle gerekli olan, Cocreateınstance kullanan bir ıunknown arabirimi. Gerekmeyen birler olayları ele sahip albeit alternatif olarak, ana bilgisayar bir genel yol dış nesneleri almak için destekler. Bunu yapmak için bu işlevi, Visual Basic'te CreateObject denir.

Diğer uygulamalar için alınıyor: HostCreateObject

Tüm alt nesneleri duyurmak için kullanılan özellikler kümesini farklı olarak, ana nesneyi Scripter (iletişim sınıfın kendisi) yalnızca bir özel bir yöntem sunar. VB'ın CreateObject işlevini taklit etme için basit bir anlamına gelir, bu yöntem gösterilmektedir. Yöntem bu yöntem ücretsiz komut dosyası altyapısı tarafından sağlanan, ancak ana bilgisayar uygulamalıdır vurgulamak için HostCreateObject adlı Not kendisi. Bazı ana bilgisayarlar açıkça güvenlik nedenleriyle bu beceriyi sağlamak isteyebilirsiniz değil, ıe3 birinci bir örnektir. Istenen nesne gönderme işaretçiyi dönmek için birincil amacı, HostCreateObject var. Komut dosyası altyapısı dağıtma sahip sonra orada ne olduğunu bilir.

Not: sürüm 2.0 olarak, VBScript ve JScript altyapılarının artık CreateObject yerleşik bir işlevi olarak desteklemektedir. Ana bilgisayar, bu işlevi uygulamak gerekli değildir. Ancak, bu işlev, nesne izin vermeden önce komut dosyası için güvenli olup olmadığından emin olmak için nesneyi sınayacak. Nesnelerin kendilerini ıobjectsafety arabirimini destekleyen veya güvenli-için-Scripting için uygun bileşen kategori kayıt defteri girdileri işaretleme kodlama için güvenli deem. Daha fazla bilgi için Microsoft Bilgi Bankası için başvurun.

Sınıf Sihirbazı desteği

Son az aldatmaca MfcAxscrVb içinde ClassWizard desteklemek için yapılan değişiklik bitidir. Sihirbazı sınıfı, teknik "dumb." Bunu yalnızca mentally varolup. Ne yapar, ancak, yalnızca almak için bu özel ClassWizard yorumlar aranıyor dosyalarını arar, anımsamak için oldukça kullanışlıdır. COleControl için biçimi uygularsanız, ClassWizard'ın Otomasyonu ve olaylar kullanılırken yalnızca get yerine koyma hakkında sekmelerini.

Bir olası sorun MfcAxscrVb türetme kendi nesne s?radüzeni bazıları kullanmasıdır. Tüm düğme nesneleri, özellikleri ve yöntemleri, tümü, tek tek destekleyecektir gösterir ortak CButtonDispatch nesneden türetilir. Ancak, .odl dosyanın doldurmak için gereken zamanı geldiğinde, her bir nesnenin tüm özellikleri ve yöntemleri <a0>üst</a0> sınıfının içermesi gerekir. Needless kadar ki bu DISPIDs numaralandırmak için zamanı geldiğinde Class Wizard yanıltır geçmektedir. Sınıf Sihirbazı'nı kullanırsanız, iki yerde oluşturulmuş olan DISPIDs denetleyin dikkat: .odl dosya Otomasyon sınıf ve sınıf tanımı içinde numaralandırma. Türetilmiş düğmesini sınıflarıyla çalışırken, birden çok özellik ve yöntemleri için atanmış bir aynı DISPID görmek kolay bir işlemdir. DISPIDs düzeltmek çok kolaydır yine de sıfırdan göre her şeyi eklemek için daha çok işlevi MfcAxscrVb ayrıldı.

Visual C++ 5.0'ın Gelişmiş desteğiyle IDL yöntemleri ve özellikleri ClassView yoluyla, onu bir toss ClassWizard veya gerektiği kadar olur. Ancak, şimdilik desteklediği MfcAxscrVb. Keyfini çıkarın.

Ekte A: nesne modeli

Scripter:

Bu, ana nesneyi diğer nesnelere elde edilen olur. .Odl dosyasındaki "IMfcaxscrvbDlg" olduğunu ancak adlandırılmış maddenin "Scripter" eklenir. Bu, bir yöntem, yukarıda açıklanan HostCreateObject vardır.

Düğme nesneleri:

AButton BButton, CancelButton, OKButton, RunScript

Özellikleri
  • : Başlık Düğme yüzeyi metni.
Yöntemleri Tuşuna basın:, düğme basılı gibi davranır.
  • Tuşuna basın:, düğme basılı gibi davranır.
Olayları
  • OnClick: düğmesine basıldığında harekete geçirildi.
  • OnMouseOver: fare düğme üzerine geldiğinde harekete geçirildi.
  • OnFocus(bSet): odağı verildiğinde, harekete veya düğmesinden.
BroCon:

BroCon WebBrowser denetiminin iletişim kutusundaki adıdır. Bu, tüm özellikleri ve yöntemleri, WebBrowser denetimi için ınternet istemcisi SDK/ActiveX SDK'sındaki belirtildiği gibi destekler.

EditCon:

Yöntemleri
  • AppendLine(strToAdd): sona erdirmek için strToAdd ekler metin düzenleme penceresinin.
  • (StrToAdd, nBurada) InsertLine: satır #nWhere strToAdd ekler.
  • RemoveLine(nWhere): satır # nWhere düzenleme penceresinden kaldırır.
Olayları
  • OnMouseOver: fare penceresi üzerine geldiğinde harekete geçirildi.
  • OnChar(strChar): karakter strChar penceresine girildiğinde harekete geçirildi.
  • OnFocus(bSet): odağı verildiğinde, harekete veya düğmesinden.
Lbox:

Yöntemleri
  • AddString(strIn): StrIn liste kutusuna ekler.
  • ClearList: tüm dizeler liste kutusundan temizler.
  • RemoveString(strRemove): StrRemove ilk örneğini kaldırır ve bu liste kutusundan kaldırır.
  • SelectString(strSelect): strSelect tarafından belirtilen dize seçer.
Olayları
  • OnMouseOver: fare penceresi üzerine geldiğinde harekete geçirildi.
  • OnFocus(bSet): odağı verildiğinde, harekete veya düğmesinden.
  • OnSelCancel(strCancelled): Ne zaman içinde liste kutusu öğesi strCancelled seçimi iptal edildi.
  • OnSelChange(strChange):, Liste kutusu öğesi strChange kullanıcı tarafından ne zaman seçilir.

Özellikler

Makale numarası: 168214 - Last Review: 1 Şubat 2014 Cumartesi - Gözden geçirme: 2.2
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Internet Explorer 3.01
  • Microsoft Internet Explorer 3.02
  • Microsoft Internet Explorer 4.0 128-Bit Edition
  • Microsoft Internet Explorer 4.01 Service Pack 2
  • Visual Basic, Scripting Edition 1.0
  • Microsoft Visual Basic, Scripting Edition 1.1
  • Visual Basic, Scripting Edition 2.0
  • Microsoft Foundation Class Library 4.2, Ne zaman ne ile kullanilir:
    • Microsoft Visual C++ 5.0 Enterprise Edition
    • Microsoft Visual C++ 5.0 Professional Edition
Anahtar Kelimeler: 
kbnosurvey kbarchive kbmt kbdownload kbfile kbinfo kbsample KB168214 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:168214

Geri Bildirim Ver

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com