我在VB下面我有一个方法是执行一个批处理文件的 用了API函数
'获取MAC地址的组件方法Public Function GetMacAddress()
    ShellExecute 0, "open", "D:\GetMacAdd\DosGetMac.Bat", "-s", "", 0
End Function当编译后生成Dll文件 注册后 在ASP页面调用的时候却什么错误也没有 可是却没有执行到DosGetMac.Bat文件DosGetMac.Bat文件的内容是
dir > D:\GetMacAddr\Mac.Txt 意思是将dir显示出来的信息重定向到Mac.Txt文件里可是执行后Mac.Txt文件里什么也没有  但是当我直接运行DosGetMac.Bat时内容是被写入到Mac.Txt文件里的,我想不该是DosGetMac.Bat文件的问题,所以请大家帮忙看看ShellExecute 0, "open", "D:\GetMacAdd\DosGetMac.Bat", "-s", "", 0
是不是错了 或该怎么办??另外就是让我郁闷了好几天也没有解决的办法
我不用ShellExecute来运行文件
用Shell "D:\GetMacAddr\DosGetMac.Bat", vbHide 
可是却报告说是Invalid procedure call or argument 的错误,,Shell "D:\GetMacAddr\DosGetMac.Bat", vbHide 很多人都是调试通过的 我就是不通过老实这个错误,包括运行其他的文件也是这样的 难道他还要认人不成了??
我的开发环境是windows 2003 + VB6.0我是实在没有办法了 ,,请大家帮帮忙吧~~~~ 难道这个VB本身的问题 还是是VB是用倒板的原因呀

解决方案 »

  1.   

    //Shell "D:\GetMacAddr\DosGetMac.Bat", vbHide 很多人都是调试通过的 我就是不通过老实这个错误,包括运行其他的文件也是这样的 难道他还要认人不成了??没用过2003,估计是操作系统的问题
      

  2.   

    try:Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongPrivate Sub Command1_Click()
    Open "D:\GetMacAdd\DosGetMac.Bat" For Output As 1
         Print #1, "dir > D:\GetMacAddr\Mac.Txt"
         Close 1
         Shell "D:\GetMacAdd\DosGetMac.Bat"
         'h = Shell("COMMAND.COM /C ", 0)
         ShellExecute hwnd, "open", "D:\GetMacAddr\Mac.Txt", "notepad.exe", vbNullString, 5
       End Sub
      

  3.   

    试试shell "cmd /c D:\GetMacAdd\DosGetMac.Bat"
      

  4.   

    如果你想获取本机MAC地址可以这样做
    Set NetAdapterSet = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select * from Win32_NetworkAdapter")For Each NetAdapter In NetAdapterSet
        txt = NetAdapter.MACAddress
    Next