Bu benim programdan kod parçası, mikroişlemciyi olduğunu. Bu kodun VBScript'te çalıştığını biliyorum, ancak bunu bc.net ile çalışmaya çalışıyorum. Neyin yanlış gidiyor?WScript? <pre><code>WSHShell = WScript.CreateObject("WScript.Shell") </code></pre> <p>Ama nedense</p>, "WScript" ilan edilmez:
cevap
WScript
nesnesi, Windows Komut Dosyası Barındırıcısına özgüdür ve .NET Framework'te bulunmamaktadır.
Aslında, tüm WScript.Shell
nesne işlevselliği .NET Framework sınıflarında kullanılabilir. Bu nedenle, VBScript kodunu VB.NET'e taşıyorsanız, Windows Komut Dosyası Ana Bilgisayarı COM nesnelerini kullanmak yerine .NET sınıflarını kullanarak yeniden yazmanız gerekir.
nedense, yine de COM nesneleri kullanmayı tercih ederse
WScript.Shell
durumunda,
% WinDir% \ System32 \ wshom.ocx (veya 64-bit Windows üzerinde
% WinDir% \ SysWOW64 \ wshom.ocx).
Imports IWshRuntimeLibrary
....
Dim shell As WshShell = New WshShell
MsgBox(shell.ExpandEnvironmentStrings("%windir%"))
Alternatif olarak,
Activator.CreateInstance(Type.GetTypeFromProgID(ProgID))
kullanarak COM nesnelerinin örneklerini oluşturabilir ve daha sonra geç bağlama kullanarak onlarla çalışmak: Sonra böyle bir kod yazabilirsiniz. Bunun gibi, örneğin * için:
Imports System.Reflection
Imports System.Runtime.InteropServices
...
Dim shell As Object = Nothing
Dim wshtype As Type = Type.GetTypeFromProgID("WScript.Shell")
If Not wshtype Is Nothing Then
shell = Activator.CreateInstance(wshtype)
End If
If Not shell Is Nothing Then
Dim str As String = CStr(wshtype.InvokeMember(
"ExpandEnvironmentStrings",
BindingFlags.InvokeMethod,
Nothing,
shell,
{"%windir%"}
))
MsgBox(str)
' Do something else
Marshal.ReleaseComObject(shell)
End If
ben de VB.NET bilmiyorum *, bu nedenle bu kod çirkin olabilir; geliştirmek için çekinmeyin.
+1, ancak altta yaptığınız tavsiyenin muhtemelen gözden kaçırılmaması gereken en üstte yapılması gerekir! –
@Cody: Bitti. Teşekkürler! – Helen
Eric Lippert'in Blog'una bakın http://blogs.msdn.com/b/ericlippert/archive/2003/10/08/53175.aspx – volody
@volody ilginç bir yazı ama yine de nasıl uyarlanacağını bilmek istiyorum kodumu vb.net – user1196604
kodunuzu ayrı bir işlem olarak çalıştırabilirsiniz – volody