我试图解决这个问题,但找不到任何解决方案.我在普通模块中定义了UDT,并希望将其用作Public Sub类模块中的参数.然后我得到一个编译错误:
只有公共对象模块中定义的公共用户定义类型可以用作类模块的公共过程的参数或返回类型,或者用作公共用户定义类型的字段
然后我尝试在类中移动我的UDT,声明为Private.我得到这个编译错误:
私有枚举和用户定义的类型不能用作公共过程,公共数据成员或公共用户定义类型字段的参数或返回类型.
我最终尝试Public在类中声明它,并得到此编译错误:
无法在私有对象模块中定义公共用户定义的类型.
那么有没有办法让公共UDT用作类中公共子的参数?
是否有人使用Visual Studio 2010将VB6项目迁移到.Net?
我已经在VS2005中测试了迁移,但是由此产生的.Net代码被搞砸了,我们决定不迁移到.Net.那么在VS2005或VS2008中VS2010迁移向导是否已经改进了向导?
我最近浏览了一堆用VB6编写的独立实用程序应用程序,以确保Windows Vista及更高版本的注册表虚拟化已关闭.我为每个exe创建了一个独立的清单文件,设置得requestedExecutionLevel恰当(其中一些需要修改HKEY_LOCAL_MACHINE注册表项,其他不需要),并测试它们.它们似乎都正常工作.
我只剩下一个小问题.由于它们是独立的实用程序,人们习惯于只在网络上复制它们并手动运行它们.如果有人忘记复制清单文件以及exe,那么exe将静默写入虚拟化注册表项而不是真实注册表项,并导致难以调试的问题.
显而易见的解决方案是将清单作为资源嵌入到exe中.我在网上看到的所有文章都告诉你要嵌入这样的资源:
#define CREATEPROCESS_MANIFEST_RESOURCE_ID 1
#define RT_MANIFEST 24
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "app.manifest"
Run Code Online (Sandbox Code Playgroud)
这应该工作得很好,除了VB编译器总是创建资源ID = 1的应用程序图标.当我尝试上面的代码时,Windows拒绝运行exe,抱怨资源错误(我将更新此帖子与细节稍后).我尝试将资源ID更改为另一个数字,之后Windows成功运行程序但未识别清单内容.
有没有人知道如何让一个嵌入式清单在VB6 exe中工作,或者我应该坚持使用外部文件?
更新1
上面给出的文本是.rc文件的全部内容.我把它编译成这样的.res文件:
"%ProgramFiles%\Microsoft Visual Studio\VB98\Wizards\rc.exe" /r /fo "Resources.res" "Resources.rc"
并将其嵌入VB6项目文件中,如下所示:
Type=Exe
Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#..\..\..\..\..\..\..\..\WINDOWS\system32\stdole2.tlb#OLE Automation
Form=Main.frm
ResFile32="Resources.res"
IconForm="FMain"
Startup="FMain"
HelpFile=""
Title="Windows Vista Registry Test - VB6"
ExeName32="RegistryTestVB6.exe"
Path32=""
Command32=""
Name="RegistryTestVB6"
HelpContextID="0"
CompatibleMode="0"
MajorVer=1
MinorVer=0
RevisionVer=0
AutoIncrementVer=0
ServerSupportFiles=0
VersionComments="Windows Vista Registry Test - VB6"
VersionCompanyName=""
VersionFileDescription="Windows Vista Registry Test - VB6"
VersionLegalCopyright=""
VersionProductName="Windows Vista Registry Test - …Run Code Online (Sandbox Code Playgroud) 如何检查VB 6.0中的对象类型我们必须修改现有代码以使用'typeof'方法,是否有任何方法,如将光标移动到对象变量或快速监视,我可以看到它的类型.
我知道以下方法,但我不想使用它 -
Set fs = New Scripting.FileSystemObject
If TypeOf fs Is Scripting.FileSystemObject Then
Debug.Print "Is a FileSystemObject"
End If
Run Code Online (Sandbox Code Playgroud) 我正在研究VB6中的一个小项目,并试图摆弄设计视图中控件的位置和大小.但他们不会移动或调整大小; 一个抓住小手柄,没有任何反应.有谁知道为什么,以及如何处理它?
在我的笔记本电脑上,我可以通过按FN+ 手动切换飞行模式F12,我想从VB6项目或VBA自动执行相同的操作.
我做了很多搜索,只找到了有关启用/禁用无线适配器或Sendkeys用于Windows 8的答案:
Dim WSh As Object
Set WSh = CreateObject("Wscript.Shell")
WSh.Run "C:\WINDOWS\system32\rundll32.exe %SystemRoot%\system32\van.dll,RunVAN", , True
Sleep 200
WSh.SendKeys " "
Sleep 1000
WSh.SendKeys "{ESC}"
Run Code Online (Sandbox Code Playgroud)
但是这段代码不可靠,我认为它不适用于Windows 7或Windows 10.
所以我的问题是:有没有可靠的方法在Windows上自动切换飞行模式.
Visual Basic 6.0(VB6)中的运算符优先顺序是什么?
特别是对于逻辑运算符.
我有VB6应用程序,我想在其中放入一些好的错误处理功能,它可以告诉我错误是什么,确切地点发生时,有人可以建议这样做的好方法
我需要从我的VB6程序中使用外部Web服务.如果可能的话,我希望能够在没有SOAP工具包的情况下部署我的程序,但这不是必需的.我没有Web服务源,也没有创建它.它是供应商提供的服务.
那么在SOAP工具包之外,从VB6使用Web服务的最佳方法是什么?
vb6 ×10
vba ×2
automation ×1
cmd ×1
deployment ×1
ide ×1
manifest ×1
migration ×1
resources ×1
soap ×1
uac ×1
vbscript ×1
web-services ×1