无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 5193|回复: 18
打印 上一主题 下一主题

[分享]网上淘回来的WimgAPI For Visual Basic(更新:For VB.net版)

[复制链接]
跳转到指定楼层
1#
发表于 2009-6-27 21:10:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Public Class WimgAPI

    'Option Explicit

    Public Declare Function WIMApplyImage Lib "WIMGAPI.DLL" (ByVal hImage As Long, ByVal lpszPath As String, ByVal dzApplyFlags As Long) As Boolean
    Public Declare Function WIMCaptureImage Lib "WIMGAPI.DLL" (ByVal hwim As Long, ByVal lpszPath As String, ByVal dwCaptureFlags As Long) As Boolean
    Public Declare Function WIMCloseHandle Lib "WIMGAPI.DLL" (ByVal hObject As Long) As Boolean
    Public Declare Function WIMCreateFile Lib "WIMGAPI.DLL" (ByVal lpszWimPath As String, ByVal dwDesiredAccess As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal dwCompressionType As Long, ByRef CreationResult As Boolean) As Long
    Public Declare Function WIMMountImage Lib "WIMGAPI.DLL" (ByVal lpszMountPath As String, ByVal lpszWimFileName As String, ByVal dwImageIndex As Long, Optional ByVal lpszTempPath As String = "") As Boolean
    Public Declare Function WIMDeleteImage Lib "WIMGAPI.DLL" (ByVal hwim As Long, ByVal dwApplyFlags As Integer) As Boolean
    Public Declare Function WIMExportImage Lib "WIMGAPI.DLL" (ByVal hImage As Long, ByVal hwim As Long, ByVal dwApplyFlags As Integer) As Boolean
    Public Declare Function WIMGetImageCount Lib "WIMGAPI.DLL" (ByVal hwim As Long) As Integer
    Public Declare Function WIMGetMessagecallbackCount Lib "WIMGAPI.DLL" (ByVal hwim As Long) As Integer
    Public Declare Function WIMLoadImage Lib "WIMGAPI.DLL" (ByVal hwim As Long, ByVal dwImageIndex As Integer) As Long
    Public Declare Function WIMSetBootImage Lib "WIMGAPI.DLL" (ByVal hwim As Long, ByVal dwImageIndex As Integer) As Boolean
    Public Declare Function WIMSetReferenceFile Lib "WIMGAPI.DLL" (ByVal hwim As Long, ByVal lpszPath As String, ByVal dwFlags As Integer) As Boolean
    Public Declare Function WIMSplitFile Lib "WIMGAPI.DLL" (ByVal hwim As Long, ByVal lpszPartPath As String, ByRef pliPartSize As Integer, ByVal dwFlags As Integer) As Boolean
    Public Declare Function WIMUnmountImage Lib "WIMGAPI.DLL" (ByVal lpszMountPath As String, ByVal lpszWimFileName As String, ByVal dwImageIndex As Integer, ByVal bCommitChanges As Boolean) As Boolean
    Public Declare Function WIMSetTemporaryPath Lib "WIMGAPI.DLL" (ByVal hwim As Long, ByVal lpszPath As String) As Boolean
    Public Declare Function WIMGetImageInformation Lib "WIMGAPI.DLL" (ByVal hImage As Long, ByRef lplpvImageInfo As Long, ByRef lpcbImageInfo As Integer) As Boolean
    Public Declare Function WIMSetImageInformation Lib "WIMGAPI.DLL" (ByVal hImage As Long, ByVal lpvImageInfo As Long, ByVal cbImageInfo As Integer) As Boolean
    Public Declare Function WIMMessageCallback Lib "WIMGAPI.DLL" (ByVal dwMessageId As Integer, ByVal wParam As Long, ByVal lParam As Long, ByVal lpvUserData As Long) As Integer
    Public Declare Function WIMCopyFile Lib "WIMGAPI.DLL" (ByVal lpszExistingFileName As String, ByVal lpszNewFileName As String, ByVal lpProgressRoutine As Object, ByVal lpvData As Long, ByVal pbCancel As Boolean, ByVal dwCopyFlags As Integer) As Boolean

    Public Const WIM_GENERIC_READ As Long = &H80000000
    Public Const WIM_GENERIC_WRITE As Long = &H40000000
    Public Const WIM_Create_NEW As Byte = &H1
    Public Const WIM_Create_ALWAYS As Byte = &H2
    Public Const WIM_OPEN_EXISTING As Byte = &H3
    Public Const WIM_OPEN_ALWAYS As Byte = &H4
    Public Const WIM_COMPRESS_NONE As Byte = 0
    Public Const WIM_COMPRESS_XPRESS As Byte = 1
    Public Const WIM_COMPRESS_LZX As Byte = 2
    Public Const WIM_CreateD_NEW As Byte = 0
    Public Const WIM_OPENED_EXISTING As Byte = 1
    Public Const WIM_FLAG_RESERVED As Byte = &H1
    Public Const WIM_FLAG_VERIFY As Byte = &H2
    Public Const WIM_FLAG_INDEX As Byte = &H4
    Public Const WIM_FLAG_NO_APPLY As Byte = &H8
    Public Const WIM_FLAG_NO_DIRACL As Byte = &H10
    Public Const WIM_FLAG_NO_FILEACL As Byte = &H20
    Public Const WIM_FLAG_SHARE_WRITE As Byte = &H40
    Public Const WIM_FLAG_FILEINFO As Byte = &H80
    Public Const WIM_FLAG_NO_RP_FIX As Integer = &H100
    Public Const WIM_REFERENCE_APPEND As Long = &H10000
    Public Const WIM_REFERENCE_REPLACE As Long = &H20000
    Public Const WIM_EXPORT_ALLOW_DUPLICATES As Byte = &H1
    Public Const WIM_EXPORT_ONLY_RESOURCES As Byte = &H2
    Public Const WIM_EXPORT_ONLY_METADATA As Byte = &H4
    Public Const INVALID_CALLBACK_VALUE As Long = &HFFFFFFFF
    Public Const WIM_COPY_FILE_RETRY As Long = &H1000000
    Public Const WIM_MSG_SUCCESS As Byte = 0&
    Public Const WIM_MSG_DONE As Long = &HFFFFFFF0
    Public Const WIM_MSG_SKIP_ERROR As Long = &HFFFFFFFE
    Public Const WIM_MSG_ABORT_IMAGE As Long = &HFFFFFFFF
    Public Const WIM_ATTRIBUTE_NORMAL As Byte = &H0
    Public Const WIM_ATTRIBUTE_RESOURCE_ONLY As Byte = &H1
    Public Const WIM_ATTRIBUTE_METADATA_ONLY As Byte = &H2
    Public Const WIM_ATTRIBUTE_VERIFY_DATA As Byte = &H4
    Public Const WIM_ATTRIBUTE_RP_FIX As Byte = &H8
    Public Const WIM_ATTRIBUTE_SPANNED As Byte = &H10
    Public Const WIM_ATTRIBUTE_READONLY As Byte = &H20

    'Delete
    'lHandle = WIMCreateFile(ConvertToUniCode("Path_To_Wim"), WIM_GENERIC_WRITE, WIM_OPEN_EXISTING, WIM_FLAG_SHARE_WRITE, WIM_COMPRESS_XPRESS, 0)
    'WIMSetTemporaryPath(lHandle, ConvertToUniCode(oWSHShell.ExpandEnvironmentStrings("%Temp%")))
    'WIMDeleteImage(lHandle, cmbImageNumber.Text)
    'WIMCloseHandle (lHandle)

    'Mount
    'WIMMountImage(ConvertToUniCode("Path_To_Mount"), ConvertToUniCode("Path_To_Wim"), ImageNumber, ConvertToUniCode("Path_To_Temp"))

    'Unmount
    'WIMUnmountImage(ConvertToUniCode("Path_To_Mount"), ConvertToUniCode("Path_To_Wim"), ImageNumber, True/FalseSaveChanges))
    'Get Number of Images in WIM file
    'lHandle = WIMCreateFile(ConvertToUniCode("Path_To_Wim"), WIM_GENERIC_WRITE, WIM_OPEN_EXISTING, WIM_FLAG_SHARE_WRITE, WIM_COMPRESS_XPRESS, 0)
    'iNumberOfImages = WIMGetImageCount(lHandle)
    'WIMCloseHandle (lHandle)
End Class


修改了些许 保证在vb 2005下没报错
原先WIMCopyFile的lpProgressRoutine是Any,Visual Stdio报错说Any不能出现在声明里,我给改成Object了

vb.net版在8楼 测试可用

Have Fun : )

[ 本帖最后由 neo4026 于 2009-6-28 17:15 编辑 ]
2#
 楼主| 发表于 2009-6-27 21:35:27 | 只看该作者
老九顺便帮忙看看 我这句出错了
  1.         Dim lHandle As Long, flag As Boolean '创建wim文件句柄
  2.         lHandle = WIMCreateFile("C:\Programs\system.wim", WIM_GENERIC_WRITE, WIM_OPEN_EXISTING, WIM_FLAG_SHARE_WRITE, WIM_COMPRESS_XPRESS, flag)
复制代码
回复

使用道具 举报

3#
发表于 2009-6-27 22:00:49 | 只看该作者
帮顶

我承认,我没看懂,而且标题看成了从淘宝弄回来的。
回复

使用道具 举报

4#
发表于 2009-6-28 06:16:28 | 只看该作者
看不懂啊,谢谢分享。水平有限。
回复

使用道具 举报

5#
发表于 2009-6-28 09:57:36 | 只看该作者
把dim改成private,public之类看看。

说实话我对VB比较感兴趣倒是。
回复

使用道具 举报

6#
 楼主| 发表于 2009-6-28 11:22:11 | 只看该作者
搞不定
载了vc6和vc2005,打算先做个dll再用vb导入
唉,我只想获取卷名称和描述而已
回复

使用道具 举报

7#
发表于 2009-6-28 12:28:49 | 只看该作者
老实说,我看不懂!!!
回复

使用道具 举报

8#
 楼主| 发表于 2009-6-28 17:16:54 | 只看该作者
MWim.VB:
  1. Imports System.Runtime.InteropServices
  2. Imports System.IO
  3. Module MWim
  4.     Public Const WIM_GENERIC_READ As Long = &H80000000
  5.     Public Const WIM_GENERIC_WRITE As Long = &H40000000
  6.     Public Const WIM_CREATE_NEW As Byte = &H1
  7.     Public Const WIM_CREATE_ALWAYS As Byte = &H2
  8.     Public Const WIM_OPEN_EXISTING As Byte = &H3
  9.     Public Const WIM_OPEN_ALWAYS As Byte = &H4
  10.     Public Const WIM_COMPRESS_NONE As Byte = 0
  11.     Public Const WIM_COMPRESS_XPRESS As Byte = 1
  12.     Public Const WIM_COMPRESS_LZX As Byte = 2
  13.     Public Const WIM_CREATED_NEW As Byte = 0
  14.     Public Const WIM_OPENED_EXISTING As Byte = 1
  15.     Public Const WIM_FLAG_RESERVED As Byte = &H1
  16.     Public Const WIM_FLAG_VERIFY As Byte = &H2
  17.     Public Const WIM_FLAG_INDEX As Byte = &H4
  18.     Public Const WIM_FLAG_NO_APPLY As Byte = &H8
  19.     Public Const WIM_FLAG_NO_DIRACL As Byte = &H10
  20.     Public Const WIM_FLAG_NO_FILEACL As Byte = &H20
  21.     Public Const WIM_FLAG_SHARE_WRITE As Byte = &H40
  22.     Public Const WIM_FLAG_FILEINFO As Byte = &H80
  23.     Public Const WIM_FLAG_NO_RP_FIX As Integer = &H100
  24.     Public Const WIM_REFERENCE_APPEND As Long = &H10000
  25.     Public Const WIM_REFERENCE_REPLACE As Long = &H20000
  26.     Public Const WIM_EXPORT_ALLOW_DUPLICATES As Byte = &H1
  27.     Public Const WIM_EXPORT_ONLY_RESOURCES As Byte = &H2
  28.     Public Const WIM_EXPORT_ONLY_METADATA As Byte = &H4
  29.     Public Const INVALID_CALLBACK_VALUE As Long = &HFFFFFFFF
  30.     Public Const WIM_COPY_FILE_RETRY As Long = &H1000000
  31.     Public Const WIM_MSG_SUCCESS As Byte = 0&
  32.     Public Const WIM_MSG_DONE As Long = &HFFFFFFF0
  33.     Public Const WIM_MSG_SKIP_ERROR As Long = &HFFFFFFFE
  34.     Public Const WIM_MSG_ABORT_IMAGE As Long = &HFFFFFFFF
  35.     Public Const WIM_ATTRIBUTE_NORMAL As Byte = &H0
  36.     Public Const WIM_ATTRIBUTE_RESOURCE_ONLY As Byte = &H1
  37.     Public Const WIM_ATTRIBUTE_METADATA_ONLY As Byte = &H2
  38.     Public Const WIM_ATTRIBUTE_VERIFY_DATA As Byte = &H4
  39.     Public Const WIM_ATTRIBUTE_RP_FIX As Byte = &H8
  40.     Public Const WIM_ATTRIBUTE_SPANNED As Byte = &H10
  41.     Public Const WIM_ATTRIBUTE_READONLY As Byte = &H20

  42.     Private Declare Auto Function WIMCreateFile Lib "wimgapi.dll" (<MarshalAs(UnmanagedType.LPWStr)> ByVal WIMPath As String, ByVal AccessType As Integer, ByVal Creation As UInt32, ByVal Flags As UInt32, ByVal Compression As UInt32, ByRef CreationResult As Integer) As IntPtr
  43.     Private Declare Auto Function WIMMountImage Lib "wimgapi.dll" (ByVal eMountPath As String, ByVal eWimFile As String, ByVal eIndex As Integer, Optional ByVal eTempPath As String = "C:\Windows\Temp") As Boolean
  44.     Private Declare Auto Function WIMGetImageInformation Lib "wimgapi.dll" (ByVal hWnd As IntPtr, ByRef ImageInfo As IntPtr, ByRef ImageInfoSize As IntPtr) As Boolean
  45.     Private Declare Auto Function WIMUnmountImage Lib "wimgapi.dll" (ByVal MountPath As String, ByVal WimFile As String, ByVal Index As Integer, ByVal CommitChanges As Boolean) As Boolean
  46.     Private Declare Auto Function WIMDeleteImage Lib "wimgapi.dll" (ByVal hWim As IntPtr, ByVal dwApplyFlags As Integer) As Boolean
  47.     Private Declare Function WIMSplitFile Lib "WIMGAPI.DLL" (ByVal hwim As Long, ByVal lpszPartPath As String, ByRef pliPartSize As Integer, ByVal dwFlags As Integer) As Boolean
  48.     Private Declare Function WIMCaptureImage Lib "WIMGAPI.DLL" (ByVal hwim As Long, ByVal lpszPath As String, ByVal dwCaptureFlags As Long) As Boolean
  49.     Private Declare Function WIMSetImageInformation Lib "WIMGAPI.DLL" (ByVal hImage As Long, ByVal lpvImageInfo As Long, ByVal cbImageInfo As Integer) As Boolean
  50.     Private Declare Auto Function WIMCloseHandle Lib "wimgapi.dll" (ByVal Handle As IntPtr) As Boolean
  51.     Private Declare Auto Function WIMSetTemporaryPath Lib "wimgapi.dll" (ByVal hWnd As IntPtr, <MarshalAs(UnmanagedType.LPWStr)> ByVal TemporaryPath As String) As Boolean
  52.     Private Declare Function WIMExportImage Lib "wimgapi.dll" (ByVal hImage As IntPtr, ByVal hWim As IntPtr, ByVal dwApplyFlags As Integer) As Boolean
  53.     Private Declare Function WIMLoadImage Lib "wimgapi.dll" (ByVal hwim As IntPtr, ByVal dwImageIndex As Integer) As IntPtr
  54.    Public Sub DeleteFolder(ByVal Folder As String, ByVal Recreate As Boolean)
  55.         Try
  56.             Do Until Not Directory.Exists(Folder)
  57.                 Directory.Delete(Folder, True)
  58.             Loop
  59.         Catch
  60.         End Try
  61.         Try
  62.             If Recreate = True Then Directory.CreateDirectory(Folder)
  63.         Catch
  64.         End Try
  65.     End Sub

  66.     Public Function CWIM_MountImage(ByVal Index As Integer, ByVal WIMFile As String, ByVal MountPath As String)
  67.         DeleteFolder(MountPath, True)
  68.         Dim Mounted As Boolean = False
  69.         Try
  70.             WIMMountImage(MountPath, WIMFile, Index)
  71.             If Directory.Exists(MountPath & "\Windows") Then
  72.                 Mounted = True
  73.             Else
  74.                 Mounted = False
  75.             End If
  76.         Catch ex As Exception
  77.             MsgBox(ex.Message)
  78.             Mounted = False
  79.         End Try
  80.         Return Mounted
  81.     End Function
  82.     Public Function CWIM_UnmountImage(ByVal Index As Integer, ByVal WimFile As String, ByVal MountPath As String, Optional ByVal Save As Boolean = False)
  83.         Dim Unmounted As Boolean = False
  84.         Try
  85.             WIMUnmountImage(MountPath, WimFile, Index, Save)
  86.             If Not Directory.Exists(MountPath & "\Windows") Then
  87.                 Unmounted = True
  88.                 DeleteFolder(MountPath, False)
  89.             Else
  90.                 Unmounted = False
  91.             End If
  92.         Catch
  93.             Unmounted = False
  94.         End Try
  95.         Return Unmounted
  96.     End Function
  97.     Public Sub CWIM_DeleteImage(ByVal WIMFile As String, ByVal Index As Integer)
  98.         Dim lHandle As IntPtr = WIMCreateFile(WIMFile, WIM_GENERIC_WRITE, WIM_OPEN_EXISTING, WIM_FLAG_SHARE_WRITE, WIM_COMPRESS_XPRESS, 0)
  99.         WIMSetTemporaryPath(lHandle, "C:\Windows\Temp")
  100.         WIMDeleteImage(lHandle, Index)
  101.         WIMCloseHandle(lHandle)
  102.     End Sub
  103.     Public Function CWIM_GetWimInfo(ByVal WimImg As String)
  104.         Dim s As IntPtr = WIMCreateFile(WimImg, WIM_GENERIC_READ, WIM_OPEN_EXISTING, WIM_FLAG_VERIFY, WIM_COMPRESS_NONE, WIM_OPENED_EXISTING)
  105.         Dim XMLInf, iSize As IntPtr
  106.         WIMGetImageInformation(s, XMLInf, iSize)
  107.         Dim XMLStr = System.Runtime.InteropServices.Marshal.PtrToStringUni(XMLInf)
  108.         WIMCloseHandle(s)
  109.         Return XMLStr.Substring(1)
  110.     End Function
  111.     Public Sub CWIM_CaptureImage(ByVal Folder As String, ByVal WimImg As String, ByVal Compression As Long, ByVal TempFolder As String)
  112.         DeleteFolder(TempFolder, True)
  113.         Dim lHandle As IntPtr = WIMCreateFile(WimImg, WIM_GENERIC_WRITE, WIM_OPEN_EXISTING, WIM_FLAG_VERIFY, Compression, WIM_CREATED_NEW)
  114.         WIMSetTemporaryPath(lHandle, TempFolder)
  115.         WIMCaptureImage(lHandle, Folder, Compression)
  116.         WIMCloseHandle(lHandle)
  117.     End Sub
  118.     Public Sub CWIM_ExportImage(ByVal OriginalWIm As String, ByVal NewWIM As String, ByVal sIndex As Integer, ByVal Temp As String)
  119.         DeleteFolder(Temp, True)
  120.         Dim s As IntPtr = WIMCreateFile(OriginalWIm, WIM_GENERIC_READ, WIM_OPEN_EXISTING, WIM_FLAG_VERIFY, WIM_COMPRESS_NONE, WIM_OPENED_EXISTING)
  121.         Dim t As IntPtr = WIMCreateFile(NewWIM, WIM_GENERIC_WRITE, WIM_OPEN_ALWAYS, WIM_FLAG_VERIFY, WIM_COMPRESS_XPRESS, WIM_CREATED_NEW)
  122.         WIMSetTemporaryPath(t, Temp)
  123.         WIMSetTemporaryPath(s, Temp)
  124.         Dim si As IntPtr = WIMLoadImage(s, sIndex)
  125.         WIMExportImage(si, t, 0)
  126.         WIMCloseHandle(si)
  127.         WIMCloseHandle(t)
  128.         WIMCloseHandle(s)
  129.         DeleteFolder(Temp, False)
  130.     End Sub

  131. End Module
复制代码
淘了一个下午从国外论坛淘回来的
测试通过 : )

简陋示例见附件
反正我需要的只是第一个卷的信息

[ 本帖最后由 neo4026 于 2009-6-28 17:33 编辑 ]

无标题.jpg (16.17 KB, 下载次数: 42)

无标题.jpg
回复

使用道具 举报

9#
发表于 2009-6-28 18:25:03 | 只看该作者
原帖由 neo4026 于 2009-6-28 17:16 发表
MWim.VB:Imports System.Runtime.InteropServices
Imports System.IO
Module MWim
    Public Const WIM_GENERIC_READ As Long = &H80000000
    Public Const WIM_GENERIC_WRITE As Long = &H40000000
   ...

小子进步神速啊,搞起VB来了?
不过VB.NET做出来的东东是不是要NET XX才能运行?如果这样大多数PE1.X都得加这个NET组件了。
回复

使用道具 举报

10#
 楼主| 发表于 2009-6-28 20:03:59 | 只看该作者
原帖由 lxl1638 于 2009-6-28 18:25 发表

小子进步神速啊,搞起VB来了?
不过VB.NET做出来的东东是不是要NET XX才能运行?如果这样大多数PE1.X都得加这个NET组件了。

还好吧 VB一直都会: )
.net好几年没摸了 那些乱七八糟的函数都给忘光了

反正有vb6版本 用vb6写问题也不大
.net framework的话 也可以挂到X盘
回复

使用道具 举报

11#
发表于 2009-6-28 20:21:55 | 只看该作者
VB编的程序个头太大,而且支持库更是繁琐,特别是.net的VB,没有看到多少增加的亮点,相反资源占用和CPU时间消耗呈指数级上升。
如果你要性能和自由推荐masm32,如果要性能和可读性VC和Dephi不错,如果非用VB不可也强烈推荐你用VB5。
你把上面的声明弄到VB5里面也照样可用,完全没有必要扯上.net。

[ 本帖最后由 netwinxp 于 2009-6-28 20:24 编辑 ]
回复

使用道具 举报

12#
 楼主| 发表于 2009-6-28 20:31:50 | 只看该作者
原帖由 netwinxp 于 2009-6-28 20:21 发表
VB编的程序个头太大,而且支持库更是繁琐,特别是.net的VB,没有看到多少增加的亮点,相反资源占用和CPU时间消耗呈指数级上升。
如果你要性能和自由推荐masm32,如果要性能和可读性VC和Dephi不错,如果非用VB不 ...

水平有限,水平有限: )

[ 本帖最后由 neo4026 于 2009-6-28 20:38 编辑 ]
回复

使用道具 举报

13#
发表于 2009-6-28 21:00:47 | 只看该作者

回复 #12 neo4026 的帖子

你的水平可高过我等一大截了.VB 我不懂啊.

只会用ASP程序.编网络留言,论坛....只是搞网站才钻研的.

这里插不上嘴罗.
回复

使用道具 举报

14#
发表于 2009-6-28 21:05:54 | 只看该作者
.net与非.net的区别是可以编译出居于.net framework的中间代码的程序(个人认为这块显然没有Java的通用性高),除非你编写C/S架构的咚咚,否则除了增加资源消耗之外看不出有什么根本性的变化。
***只要学过Basic和一些windows编程知识基本上很快就能上手VB,却不那么容易上手vb.net。
asp不就是使用vbscript?它和vb的语法差不多,稍微熟悉一些窗口、控件之类的咚咚(对象、事件、属性和网页也很类似)就可以上手vb了,至于vb个人强力推荐vb5。

[ 本帖最后由 netwinxp 于 2009-6-28 21:10 编辑 ]
回复

使用道具 举报

15#
 楼主| 发表于 2009-6-29 00:03:53 | 只看该作者
原帖由 netwinxp 于 2009-6-28 21:05 发表
.net与非.net的区别是可以编译出居于.net framework的中间代码的程序(个人认为这块显然没有Java的通用性高),除非你编写C/S架构的咚咚,否则除了增加资源消耗之外看不出有什么根本性的变化。
***只要学过Basic ...

嗯,VB/ASP/VBS都是比较贴近英语语法,很好学
我那东西本来是想用VB6做的,但我的是精简版比较麻烦,所以用.net了

回去找个vb5研究下
回复

使用道具 举报

16#
发表于 2009-6-29 01:28:43 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

17#
 楼主| 发表于 2009-6-29 01:38:04 | 只看该作者
楼上的兄弟能否提供下那个sdk?
我最开始是用vb6做的,但我需要用到CheckListBox,我的精简版VB6没有,只好用.net做了
回复

使用道具 举报

18#
发表于 2009-6-29 02:08:39 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

19#
发表于 2009-6-29 08:04:45 | 只看该作者
本贴纯属技术贴,有待研究学习
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-12-18 22:24

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表