Shell
Komutu VBScript’te VS6’da Neden Çalışmıyor?
Eğer hiç VBScript ile Visual Studio 6 (VS6) üzerinde çalıştıysanız, dış bir programı çalıştırmak için Shell
komutunu kullanmaya çalışırken karşınıza çıkan bir engel ile karşılaşmış olabilirsiniz: type mismatch runtime error
. Bu durum, basit bir komut ile görevlerinizi kolaylaştırmak istediğinizde oldukça kafa karıştırıcı olabilir. Peki, sorun nedir? Neden Shell
beklendiği gibi çalışmıyor? Bu meseleyi adım adım inceleyelim ve çözüme gidelim.
Problem
Makro kodunuzda, muhtemelen şöyle bir şey yazmış olabilirsiniz:
shell("p4 open " + ActiveDocument.FullName)
Ancak, bu bir hataya yol açar. Kafa karışıklığının kaynağı, VBScript ile Visual Basic (VB) arasındaki farklardır. Her iki dil benzerlikler taşırken, nesne kullanımı ve işlevselliği açısından önemli ayrımlar bulunmaktadır.
VBScript ve WScript Nesnesini Anlamak
VBScript vs. Visual Basic
Bu konudaki tartışmalarda belirtilmiş olduğu gibi, VBScript, Visual Basic ile aynı değildir. Anahtar nokta, VBScript’in sınırlı sayıda yerleşik nesne setine sahip olduğudur. Örneğin, VBScript’teki tek yerleşik nesne WScript
nesnesidir.
WScript.Echo "Merhaba, Dünya!"
Bu WScript
nesnesi, Windows Script Host nesne modeli hiyerarşisinin kökü olarak işlev görür. Temel işlevsellik sağlasa da, Shell
komutu aracılığıyla dış programları doğrudan çalıştırma gibi gelişmiş işlemleri gerçekleştiremez.
CreateObject Yöntemi
VBScript’teki diğer nesneleri kullanabilmek için, bunları CreateObject
yöntemi ile oluşturmanız gerekir. Shell nesnesi, çalıştırmak için bu yaklaşımı gerektiren “diğer” nesnelerden biridir.
Çözüm: WScript.Shell Kullanımı
VS6 makronuzda dış bir programı başarıyla çalıştırmak için, WScript.Shell
nesnesini kullanmanız gerekmektedir. İşte bunu doğru şekilde yapma yolu:
Dim wshShell
Set wshShell = CreateObject("WScript.Shell")
strResult = wshShell.Run("p4 open " + ActiveDocument.FullName)
Çözümü Parçalara Ayırmak
-
Bir Değişken Tanımlayın: Öncelikle
wshShell
gibi bir değişken tanımlarsınız, bu Shell nesnesini tutmak için. -
Shell Nesnesini Oluşturun:
Set wshShell = CreateObject("WScript.Shell")
ile Shell nesnesinin bir örneğini oluşturun. -
Komutu Çalıştırın:
wshShell.Run()
yöntemini kullanarak istediğiniz komutu çalıştırın, bu durumda"p4 open " + ActiveDocument.FullName
.
Sonuç
Ekstra adımlar ilk başta gereksiz görünebilir, ancak CreateObject
aracılığıyla WScript.Shell
nesnesini kullanmak, Visual Studio 6 içinde VBScript ile dış uygulamaları çalıştırmak için esastır. Bu yöntem, VBScript’in tasarlandığı şekilde uyumlu olup, kodunuzun çalışma zamanında hata vermeden çalışmasını sağlar.
VBScript ile Visual Basic arasındaki farkı anlayarak bu zorlukların üstesinden gelebilir ve kodlama deneyiminizi kolaylaştırabilirsiniz. Makrolar ile çalışıyorsanız, bu bilgi uzun vadede zaman ve kafa karışıklığı tasarrufu sağlar.
Doğru nesneleri kullanmak, sadece programlama becerilerinizi artırmakla kalmaz, aynı zamanda üretkenliğinizi de yükseltir. İyi kodlamalar!