如何编辑和写入VB6资源文件,例如图片,文本供工程进行调用

最近整了下VB项目,修改了下UI。和C# Qt不一样,VB资源文件内的图标需要重新用命令行和工具重新写入,供工程通过LoadResData方法调用

bImg = LoadResData("IMAGE1", "CUSTOM")

资源.res文件创建/修改方法。

1. 先将所有图片防止到工程目录下;

2. 编写.rc文件,将路径写入如下:

1      		24    	MOVEABLE        PRELOAD         asAdmin.manifest
APPICON      	ICON    MOVEABLE        PRELOAD         app.ico
IMAGE1      	CUSTOM    MOVEABLE        PRELOAD         1.png
IMAGE2      	CUSTOM    MOVEABLE        PRELOAD         2.png
IMAGE3      	CUSTOM    MOVEABLE        PRELOAD         3.png
IMAGE4      	CUSTOM    MOVEABLE        PRELOAD         banner.png
IMAGE5      	CUSTOM    MOVEABLE        PRELOAD         5.png

3. 找到visual basic安装目录下的包含RC.EXE文件的Wizards目录,

D:\Program Files (x86)\Microsoft Visual Studio\VB98

4. 右键Wizards目录,选择“在此处打开命令行窗口”,在新弹出窗口下输入以下命令

D:\Program Files<x86>\Microsoft Visual Studio\VB98\Wizards>rc /r <你的.rc文件路径>

此时,会生成新的.res文件,你的图片就会被打包到这个.res资源文件中,供你VB工程调用。

注意,打包的时候ico必须是256色,否则会出现以下错误。可以用这个网站https://www.icoconverter.com/将png或者jpg图片进行转换。

error RC2176 : old DIB in res/AES.ico; pass it through SDKPAINT

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
'这是从源文件调用msvbvm60.dll 注册的代码 '本代码是放在模块 Moudule1.bas 里面,不是放在Form1里面的. '要注册.dll .ocx最好是放在.bas里面,并把启动项设为Sub Main '否则有可能在还没进入窗体执行注册的动作前,就产生错误而中断了 '尤其是98系统之下的msvbvm60.dll '先建立一个源文件, 在 Custom 101 装载 msvbvm60.dll Global winsys$, appdisk$, aa$ Sub Main() On Error Resume Next If App.PrevInstance Then MsgBox "本系统已运行中, 不得重复加载!!", vbOKOnly, "菜鸟多媒体桌面工具": End appdisk = IIf(Right(App.Path, 1) = "\", App.Path, App.Path & "\") winsys = GetSyspath Call regdllocx Form1.Show End Sub Private Sub regdllocx() On Error Resume Next Dim byt() As Byte aa = winsys & "msvbvm60.dll" If Dir(aa) = "" Then byt = LoadResData(101, "CUSTOM") Open aa For Binary As #1 Put #1, 1, byt() Close #1 End If If Dir(aa) <> "" Then aa = "Regsvr32 /s " & aa Call Shell(aa, vbHide) End If End Sub Public Function GetSyspath() As String '获取system32路径 aa = Trim(Environ("ComSpec")) GetSyspath = Mid(aa, 1, InStrRev(aa, "\")) End Function '直接从源文件调用 .bmp图片(只允许.bmp),不必释放到硬盘 'Me.Icon = LoadResPicture(101, vbResIcon) '注释:加载图标 'Picture1.Picture = LoadResPicture(101, vbResBitmap) '注释:加载位图 'Command1.MouseIcon = LoadResPicture(101, vbResCursor) '注释:加载光标' '播放 WAVE 声音(只允许.wav) Option Explicit Private Declare Function sndPlaySoundFromMemory Lib "winmm.dll" Alias "sndPlaySoundA" (lpszSoundName As Any, ByVal uFlags As Long) As Long Const SND_ASYNC = &H1 Const SND_MEMORY = &H4 Private Sub Command1_Click() Dim bArr() As Byte bArr = LoadResData(101, "CUSTOM") DoEvents sndPlaySoundFromMemory bArr(0), SND_ASYNC Or SND_MEMORY End Sub 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/cbm666/archive/2008/03/08/2158287.aspx
### 回答1: 以下是VB.NET代码示例,演示如何读取文本文件并将其写入Excel工作表中: ``` Imports Microsoft.Office.Interop.Excel Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click '打开文本文件 Dim fileReader As String = My.Computer.FileSystem.ReadAllText("C:\example.txt") '分割文本文件中的行 Dim lines() As String = fileReader.Split(Environment.NewLine) '创建一个新的Excel应用程序实例 Dim ExcelApp As New Excel.Application '打开Excel文件 Dim ExcelWorkbook As Excel.Workbook = ExcelApp.Workbooks.Open("C:\example.xlsx") '选中第一个工作表 Dim ExcelWorksheet As Excel.Worksheet = ExcelWorkbook.Sheets(1) '写入文本文件中的行到Excel工作表中 For i As Integer = 0 To lines.Length - 1 ExcelWorksheet.Cells(i + 1, 1) = lines(i) Next '保存Excel文件并关闭应用程序 ExcelWorkbook.Save() ExcelWorkbook.Close() ExcelApp.Quit() '释放Excel对象 Marshal.ReleaseComObject(ExcelApp) End Sub End Class ``` 在这个示例中,我们使用`My.Computer.FileSystem.ReadAllText()`方法读取文本文件的内容,并使用`String.Split()`方法将其分割成行。我们创建了一个新的Excel应用程序实例,并打开了一个Excel工作簿。然后,我们选中了第一个工作表,并使用`Cells()`属性将文本文件中的每一行写入到Excel工作表中。最后,我们保存Excel文件并关闭应用程序。 ### 回答2: 在VB.NET中读取TXT文件并将其写入Excel文件的过程如下: 首先,要在代码中导入相关的命名空间: ```vb Imports Microsoft.Office.Interop Imports System.IO ``` 然后,可以编写一个方法来实现这个功能: ```vb Private Sub ReadTxtWriteToExcel(txtFilePath As String, excelFilePath As String) ' 创建Excel应用程序 Dim excelApp As New Excel.Application() ' 打开Excel文件 Dim excelWorkbook As Excel.Workbook = excelApp.Workbooks.Open(excelFilePath) ' 选择第一个工作表 Dim excelWorksheet As Excel.Worksheet = CType(excelWorkbook.Worksheets(1), Excel.Worksheet) ' 读取TXT文件的内容 Dim txtLines As String() = File.ReadAllLines(txtFilePath) For i As Integer = 0 To txtLines.Length - 1 ' 获取每一行的数据 Dim lineData As String = txtLines(i) ' 将数据按照某种规则拆分成列 Dim columns As String() = lineData.Split(vbTab) ' 根据制表符拆分列数据 ' 将数据写入Excel的单元格 For j As Integer = 0 To columns.Length - 1 ' Excel单元格是从1开始计数的,所以要加1 excelWorksheet.Cells(i + 1, j + 1) = columns(j) Next Next ' 保存并关闭Excel文件 excelWorkbook.Save() excelWorkbook.Close() ' 关闭Excel应用程序 excelApp.Quit() End Sub ``` 在调用这个方法时,需要提TXT文件的路径和Excel文件的路径作为参数。例如: ```vb ReadTxtWriteToExcel("C:\input.txt", "C:\output.xlsx") ``` 这样,就可以将TXT文件的内容写入Excel文件了。注意要确保Excel应用程序已经安装在计算机上,并且有读写目标Excel文件的权限。 ### 回答3: 在VB.Net中,可以通过以下步骤将TXT文件读取并写入Excel里。 步骤1:导入所需的命名空间 首先,在代码中导入以下命名空间: ``` Imports System.IO Imports Excel = Microsoft.Office.Interop.Excel ``` 步骤2:创建读取TXT文件的函数 下面是一个示例函数,用于读取TXT文件中的数据: ``` Private Function ReadTextFile(filePath As String) As List(Of String) Dim lines As New List(Of String) If File.Exists(filePath) Then Using reader As New StreamReader(filePath) While Not reader.EndOfStream lines.Add(reader.ReadLine()) End While End Using End If Return lines End Function ``` 步骤3:创建写入Excel文件的函数 下面是一个示例函数,用于将数据写入Excel文件中: ``` Private Sub WriteToExcel(data As List(Of String), excelFilePath As String) Dim xlApp As New Excel.Application Dim xlWorkbook As Excel.Workbook = xlApp.Workbooks.Add() Dim xlWorksheet As Excel.Worksheet = xlWorkbook.Sheets(1) For i = 0 To data.Count - 1 xlWorksheet.Cells(i + 1, 1) = data(i) Next xlWorkbook.SaveAs(excelFilePath) xlWorkbook.Close() xlApp.Quit() End Sub ``` 步骤4:调用函数 在你的代码中,你可以调用上述函数来读取TXT文件并将其写入Excel文件中: ``` Dim txtData As List(Of String) = ReadTextFile("path/to/text/file.txt") WriteToExcel(txtData, "path/to/excel/file.xlsx") ``` 请确保你已经安装了Microsoft Excel,并将Excel的Interop组件添加到你的项目引用中,以便在代码中使用相关的类和方法。另外,确保提正确的路径来读取和保存文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值