Tag: vbscript

为什么我的.NET组件上的索引器不能始终从VBScript访问?

我有一个.NET程序集,我通过COM互操作从VBScript(经典ASP)访问。 一个类有一个索引器(也就是默认属性),我通过向索引器添加以下属性从VBScript开始工作: [DispId(0)] 。 它适用于大多数情况,但不能作为另一个对象的成员访问该类。 如何使用以下语法使其工作: Parent.Member(“key”)其中Member具有索引器(类似于访问内置Request.QueryString的默认属性: Request.QueryString(“key”) ) ? 在我的例子中,有一个带有QueryString属性的父类TestRequest ,它返回一个IRequestDictionary ,它有默认的索引器。 VBScript示例: Dim testRequest, testQueryString Set testRequest = Server.CreateObject(“AspObjects.TestRequest”) Set testQueryString = testRequest.QueryString testQueryString(“key”) = “value” 以下行导致错误而不是打印“值”。 这是我想要工作的语法: Response.Write(testRequest.QueryString(“key”)) Microsoft VBScript运行时(0x800A01C2) 参数数量错误或属性赋值无效:’QueryString’ 但是,以下行无错误地工作并输出预期的“值”(请注意,第一行访问临时变量上的默认索引器): Response.Write(testQueryString(“key”)) Response.Write(testRequest.QueryString.Item(“key”)) 下面是C#2.0中的简化接口和类。 它们已通过RegAsm.exe /path/to/AspObjects.dll /codebase /tlb : [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)] public interface IRequest { IRequestDictionary QueryString { get; } } [ClassInterface(ClassInterfaceType.None)] […]

列出IIS 5,6和7中的所有虚拟目录

我正在尝试创建IIS站点中的所有虚拟目录的列表。 但是,我发现在旧版本的IIS中尝试执行此操作会有很大差异。 在IIS 7中,通过C#这是一个相对容易的任务,但我似乎无法找到在IIS 6和5中执行此操作的好方法。 我已经尝试使用System.DirectoryServices.DirectoryEntry,但似乎没有给我所需的输出。 我是服务器管理员,因此我愿意使用其他内容,例如内置于IIS中的.vbs文件以及编写自己的代码。

在所有Open Explorer Windows的ListBox中获取路径

我想列出所有打开的Windows资源管理器窗口及其在ListBox的活动路径。 如果浏览器窗口导航到其他路径,应用程序应刷新ListBox 。 例如,两个浏览器窗口是打开的。 一个导航到C:\Windows ,另一个导航到D:\Stuff 。 当它运行的应用程序时,它将C:\Windows和D:\Stuff到ListBox 。 然后,用户导航到其中一个打开的资源管理器窗口中的其他文件夹,如C:\Windows\system32 。 然后应用程序应刷新ListBox并列出C:\Windows\system32和D:\Stuff 。 我对如何做到这一点没有任何想法。 任何指针将不胜感激。

WMI硬件,获取RAM信息

我需要从本地和远程计算机检索RAM信息,我知道System.Management中的WMI并且我正在使用它,但我的WMI问题是Win32_PhysicalMemory类有一个我需要的值称为“ MemoryType ”,但是它总是返回0或“未知”。 Win32_PhysicalMemory类 (http://msdn.microsoft.com/en-us/library/aa394347%28v=vs.85%29.aspx) 我试图在具有管理员帐户的3台不同XP Professional计算机上使用C#和VBScript中的Win32_PhysicalMemory,并返回相同的0或“Unknown”MemoryType值。 我使用的代码简单而简短,从网络上的许多来源复制和粘贴,所以我确信它没有重大问题。 我错误地使用WMI还是有可以使用的Windows API替代方案? 远程报告不是必需的。 具体来说,我需要计算它拥有或可以拥有的RAM的数量,速度,它使用的RAM类型,DDR2,DDR3等,Win32_PhysicalMemory类为我提供除RAM类型之外的所有这些。 ConnectionOptions connection = new ConnectionOptions(); connection.Impersonation = ImpersonationLevel.Impersonate; ManagementScope scope = new ManagementScope(“\\\\.\\root\\CIMV2”, connection); scope.Connect(); ObjectQuery query = new ObjectQuery(“SELECT * FROM Win32_PhysicalMemory”); ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query); foreach (ManagementObject queryObj in searcher.Get()) { System.Diagnostics.Debug.WriteLine(“———————————–“); System.Diagnostics.Debug.WriteLine(“Capacity: {0}”, queryObj[“Capacity”]); System.Diagnostics.Debug.WriteLine(“MemoryType: {0}”, queryObj[“MemoryType”]); }

在VBScript中使用DLL

我已经将C#代码编译成DLL,但对它们几乎没有经验。 我的C#代码包含一个带有静态方法Print() HelloWorld类。 我想在VBScript中使用这个DLL来调用方法Print() 。 我知道这是基础,但我正在使用它作为一个大规模项目的测试,最终将编译为DLL。 什么是声明的样子以及方法调用的外观如何?

我可以使用VBScript以外的语言以编程方式执行QTP测试吗?

我有VBScript代码,它启动QuickTest Professional,执行一系列QTP测试,并通过电子邮件发送结果。 这很好用,但我更喜欢使用具有更好工具支持的语言(例如一个好的IDE)。 我目前正在从启动脚本调用.Net库,所以我想知道是否可以使用像C#这样的语言来完成相同的任务。 如果是这样,有什么好的资源可以解决这个问题吗? 我可以通过谷歌找到关于这个主题的很少的内容,似乎没有关于这个主题的任何其他问题。 为清楚起见,我已经包含了执行大部分工作的例程的代码。 这不包括.Net声明,但failedTestsList和allTestsList是System.ArrayList实例。 编辑 :所有QTP文档示例都使用VBScript,但正如您所看到的,代码只是创建QTP对象。 我认为这些可以从支持创建这些对象的另一种语言调用。 我的谷歌失败似乎没有人这样做。 Sub ExecuteQTPTest(name) Dim App, resultsPath Dim testPath, testResults testPath = name allTestsList.Add(name) Set App = CreateObject(“QuickTest.Application”) App.Launch App.Visible = False App.Open testPath SetQTPTestOptions(App) SetQTPRunOptions(App) SetQTPWebOptions(App) App.Folders.RemoveAll Dim qtpTest, qtpResultsOpt Set qtpTest = App.Test Set qtpResultsOpt = CreateObject(“QuickTest.RunResultsOptions”) resultsPath = testPath & “\RES1” qtpResultsOpt.ResultsLocation […]

如何使用管理员凭据更改当前用户的文件夹权限?

好的,所以我一直在搜索,标题解释了我想要做的事情。 此外,在代码中对管理员凭证进行硬编码也没有问题。 最初我在c#中写了一些代码,ALMOST解决了这个问题: private void button2_Click(object sender, EventArgs e) { DirectoryInfo myDirectoryInfo = new DirectoryInfo(textBox1.Text); DirectorySecurity myDirectorySecurity = myDirectoryInfo.GetAccessControl(); string User = System.Environment.UserDomainName + “\\” + comboBox1.SelectedItem.ToString(); myDirectorySecurity.AddAccessRule(new FileSystemAccessRule(User, FileSystemRights.FullControl, InheritanceFlags.ContainerInherit, PropagationFlags.None, AccessControlType.Allow)); //myDirectorySecurity.AddAccessRule(new FileSystemAccessRule(User, FileSystemRights.Write, InheritanceFlags.ContainerInherit, PropagationFlags.None, AccessControlType.Allow)); myDirectoryInfo.SetAccessControl(myDirectorySecurity); MessageBox.Show(“Permissions Altered Successfully” + User); } 如果我在我已经拥有权限的文件夹上使用它,这可以正常工作,但我需要的是一种使用管理员凭据授予普通用户没有的文件夹权限的方法。 后来我试着在vbscript中写一些东西: strHomeFolder = “C:\test” strUser = ” DOMAIN\user” […]

如何监控焦点变化?

好吧有时候我正在打字,很少发生什么东西偷了重点,我读了一些解决方案(甚至是VB手表),但它们并不适用于我。 是否有任何窗口’手柄’可以处理任何焦点变化? 无论在哪种语言,C,C ++,VB.NET,C#,Anything .NET或Windows相关,Batch,PoweShell,VBS Script ……只要我能够监控每个焦点变化并将其记录到文件/ cmd窗口/可视窗口。 就像是: void event_OnWindowsFocusChange(int OldProcID, int NewProcID); 会非常有用的。 或者也许有这方面的工具(我找不到?)