Tag: vb6

获取当前鼠标光标类型

如何获取当前的GLOBAL鼠标光标类型(沙漏/箭头/ ..)? 在Windows中。 全局 – 即使鼠标位于我的应用程序之外,或者即使我的程序是无风的,我也需要它。 在C#,Delphi或纯winapi,没关系…… 非常感谢你提前!!

如何在.NET和vb6之间读取和编写可互操作的字符串到二进制文件

我有一个用C#编写的新程序,它需要读取和写入与vb6的二进制格式兼容的二进制文件。 我无法更改vb6程序,但我可以更改我的程序。 我有一切工作,除了我对字符串有点不确定。 如果我在vb6中写下以下内容 Private Type PatchRec string As String End Type Private Sub Command1_Click() Dim intFileNum As Integer Dim recTest As TestRec intFileNum = FreeFile Open “E:\testing” & “\” & “testfile” & “.bin” For Binary Access Write As #intFileNum recTest.string = “This is a test string” Put #intFileNum, , recPatch Close #intFileNum End Sub […]

从c#调用vb6 dll

我一直试图从C sharp应用程序调用vb6 dll,而不使用注册表。 我想在使用它时使用dll的路径。 我无法创建vb dll类的对象。 请帮忙! 我到目前为止编写的代码如下: Assembly assem = Assembly.LoadFile(“dll path”); Type classType = assem.GetType(“classname”); MethodInfo method = classType.GetMethod(“show”); //My methos is called show method.Invoke(null,null); // I have to invoke the method using class object, which I am unable to create

如何“按原样”将二进制数据写入Registry(即:我只将可见二进制数据作为来自regedit的字符串)

我一直在谷歌上搜索这一天并没有找到一整天的工作解决方案。 我对二进制数据类型一无所知(因为我从来没有故意使用过它们)而且我正在尝试将我在注册表中看到的二进制值写入注册表。 现在,我所看到的是以下[如下所示] …如果我尝试将其作为字符串传递给WinAPI中的RegSetValueEx ,当然它会出错……我不知道我需要什么’数字’传入RegSetValueEx lpData As Any, RegSetValueEx参数(我尝试了一个位数组),以便它在regedit中如下所示[如下所示]。 我真的不知道,我的测试在位数组中放置随机数只会产生相应的随机“数字”,如注册表中所见,我不明白如何将它们“逻辑”地“绑定”在一起。 这是罪魁祸首! Windows注册表编辑器版本5.00 [HKEY_CURRENT_USER \ SOFTWARE \一些\注册\位置] “的RegistryKey”=己烷:01,00,00,00,d0,8c,9D,DF,01,15,d1,11,8c,7α,00,c0,4f,c2,97,EB,\ 01,00,00,00,7b,96,8a,78,B9,CC,c1,4f,b1,35,11,01,5e,3C,25,9b,00,00,00,00,02, \ 00,00,00,00,00,10,66,00,00,00,01,00,00,20,00,00,00,22,1c,B6,EA,E3,a5,06,8b, \ 58,69,7b,89,19,b3,1f,a3,1d,D8,b7,5b,30,72,65,4b,22,41,a8,73,d1,92,BB,36,00, \ 00,00,00,0e,80,00,00,00,02,00,00,20,00,00,00,87,a0,1a,79,A7,C9,FE,图7A,图1B,图24, \ 图9a,71,5d,CF,7B,87,BC,1B,14,6e,59,96,e3,42,C6,f5,08,78,00,a6,42,3d,30,00,00, \ 00,02,0a,2A,EA,d9,49,0a,FA,48,B3,F1,E2,AE,E2,f8,42,a2,54,1e,56,DC,DD,9B,0D, \ 图9b,73,41,72,54,CC,64,49,99,f1,5c,12,70,33,8e,FB,b1,31,66,DF,B4,e0,02,BB,40, \ 00,00,00,13,c2,7d,88,16,AF,56,AC,82,21,39,95,43,04,50,71,c2,4c,6A,44,a6,03, \ EA,32,4d,D9,f3,0f,22,2e,41,17,2e,26,11,9b,10,9d,99,60,FC,12,D2,CE,7c中,1C,78, \ 图6b,f0,59,23,FD 84,46,2c,58,41,EE,31,7a,f8,95,57,54 如果我在字符串或位数组中有以下内容,我必须填充比特数,以便注册表在写入时输出[上面]? 或者,我怎样才能弄明白该怎么做? 我希望有一个函数可以读取我的二进制数据串并将其转换为真正的二进制格式,以提交给VB6中的RegSetValueEx函数或VB.Net或C#中的其他函数(这实际上是一个与语言无关的问题,并且问题存在于所有语言中;即:相同的过程)。 我希望有一个解决方案,我可以遵循这个或领导。 谢谢你们,当我把头发拉出来时,你们是最棒的!

C#到VB6 COM事件(“对象或类不支持事件集”)

真的把这头发拉出来…… 我有一个C#项目,其接口定义为: /* Externally Accessible API */ [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)] public interface ISerial { [DispId(1)] bool Startup(); [DispId(2)] bool Shutdown(); [DispId(3)] bool UserInput_FloorButton(int floor_number); [DispId(4)] bool Initialize(); } /* Externally Accesssible Event API */ [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)] public interface ISerialEvent { [DispId(5)] void DataEvent(); } [ComSourceInterfaces(typeof(ISerialEvent), typeof(ISerial))] [ClassInterface(ClassInterfaceType.None)] public class SerialIface : ISerial { public delegate void DataEvent(); public […]

如何在c#中调用visual basic 6.0方法?

我想用c#(visual studio 2008)编写一个用visual basic 6.0编写的方法。 可能吗? 我该怎么办?

VB6:二进制文件是如何编码的? 使用Put语句

我有这个代码 Open WritingPath & “\FplDb.txt” For Random As #1 Len = Len(WpRec) For i = 1 To 99 WpRec.WpIndex = FplDB(i, 1) WpRec.WpName = FplDB(i, 2) WpRec.WpLat = FplDB(i, 3) WpRec.WpLon = FplDB(i, 4) WpRec.WpLatDir = FplDB(i, 5) WpRec.WpLonDir = FplDB(i, 6) Put #1, i, WpRec Next i Close #1 SaveOk = 1 FplSave = […]

可以/如何在C#WPF应用程序中托管完整的VB6表单?

我目前正在探索使用C#将一些旧的VB6应用程序移植到WPF的选项。 该计划在第一阶段是移植几个关键forms而不是所有应用程序。 理论上的目标是通过ActiveX dll在WPF中的某种容器中打开VB6表单。 这有可能吗? 我试过看Interop,似乎找不到一个可靠的例子,说明如何使用Win32控件,而不是完整的表单。 我可以完全访问旧的VB6代码,并且无论如何都可以修改它。 主WPF应用程序的以下屏幕截图将用作包装器/容器: http://sofzh.miximages.com/c%23/main_menu_mockup.png 当前VB6维护屏幕将加载到上一屏幕右侧的“空白区域”部分。

在Windows 7上使用VB6注册Free Com

我有一些从VB6代码中使用的.NET代码。 我一直在XP机器上通过创建列出依赖.NET程序集的VB6.exe.manifest文件来开发它。 例如,假设我的2个.NET程序集是Some.Assembly.A.dll和Some.Assembly.B.dll,这里是VB6.EXE.manifest的样子(我使用的是version = 1.1.0.0,因为那是版本我在AssemblyInfo.cs中设置了.NET AssemblyVersion: 然后,与同一目录中的DLL一起,我有程序集和它们自己的清单文件。 这是一个示例“Some.Assembly.A.dll.manifest”: 我还在引用的DLL上运行tlbexp来创建TLB文件,这是我在VB6项目文件中引用的内容。 我想转移到Windows 7 64 BIT机器。 使用相同的方法,当我点击在WIN7机器上实例化.NET对象的VB6代码时,我得到了 “ActiveX组件无法创建对象。” 在XP上,它成功了。 如果我故意拼错VB6.EXE.manifest中的Dependent组件 – 在XP上我得到 “此应用程序无法启动,因为应用程序配置不正确。重新安装应用程序可能会解决此问题。” 在WIN7上,VB6只是加载。 它就像忽略了WIN7上的清单,所以我无法在WIN7上使用REG FREE方法加载我的.NET对象。 如果我regasm DLL,一切正常。 关于如何在WIN7(64位)上使用reg free com使VB6工作的任何想法?

Regfree COM事件从其他线程失败

我有一个COM可见的.NET类,它暴露事件并从VB6使用。 在过去的几天里,我一直试图让这个与regfree COM一起工作,但没有成功。 当从原始线程触发事件时,VB6事件以regfree模式运行。 当注册了类型库时,VB6事件在从另一个线程触发时运行。 (regasm / tlb / codebase后跟regasm / codebase / unregister,后者不注销tlb) 在regfree模式下从另一个线程触发时,它会抛出exception,因此永远不会执行VB6事件代码。 System.Reflection.TargetException: Object does not match target type. at System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters) at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams) at […]