我按网上的资料写了一段代码如下:
Private Declare Function osfcreateshelllink Lib "vb6stkit.dll" Alias "fCreateShellLink" (ByVal lpstrfoldername As String, ByVal lpstrlinkname As String, ByVal lpstrlinkpath As String, ByVal lpstrlinkarguments As String) As Long
   
Private Sub Command2_Click()
Dim lresult As Long
lresult = osfcreateshelllink("C:\DOCUME~1\ADMINI~1\桌面", "test", App.Path & "TEST.EXE", "")
End Sub但运行出错,说内存不能read。请问该如何实现此功能?

解决方案 »

  1.   

    给你另外贴个例子,你照着试试:Public Declare Function fCreateShellLink Lib "vb5stkit.DLL" (ByVal lpstrFolderName As String, ByVal lpstrLinkName As String, ByVal lpstrLinkPath As String, ByVal lpstrLinkArgs As String) As Long
    Private Sub Command1_Click()
        Dim lReturn As Long
        '增加到桌面
        lReturn = fCreateShellLink("..\..\Desktop", Text1.Text, Text2.Text, "")
    End SubPrivate Sub Command2_Click()
        Dim lReturn As Long
        '增加到启动组
        lReturn = fCreateShellLink("\启动", Text1.Text, Text2.Text, "")
    End SubPrivate Sub Form_Load()
        Dim MyPath As String
        Dim MyName As String
        MyPath = App.Path
        Text1.Text = "测试建立快捷方式"
        Text2.Text = MyPath & "\example70.exe"
    End Sub
      

  2.   

    我测试过,Lib "vb5stkit.DLL"没问题,Lib "vb6stkit.DLL" 就非法操作了!奇怪!
    还是上网找个Lib "vb6stkit.DLL" 的吧。(我找不到)
    楼主你的这个声明是原样复制的吗?
    还是自己把5改成6的?
      

  3.   

    这是微软的MSDN,你自己看去吧http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q155/3/03.asp&NoWebContent=1
      

  4.   

    我是从我的例子库里找的,我刚才试了一下,改成"vb6stkit.DLL"果然会非法操作:(
      

  5.   

    0x779b9416指令引用0x0000002d内存,内存不能为"read"
      

  6.   

    我看的资料也是vb5stkit.dll的,请问coldmoon你怎么测试的vb5stkit.dll啊?vb5.0?
    该怎么办呢?没有在 6。0下做过的吗?
      

  7.   

    我有vb5的安装盘,从盘上拉的vb5stkit.dll。
    6。0的找不到。看MSDN吧
      

  8.   

    问题已解决,把方法贴出来:
    vb6下,fcreateshelllink要多加2个参数,还有系统是中文版的注意换成中文路径"..\..\桌面","..\程序\启动"。代码如下:Private Declare Function fCreateShellLink Lib "vb6stkit.dll" (ByVal lpstrFolderName As String, ByVal lpstrLinkName As String, ByVal lpstrLinkPath As String, ByVal lpstrlinkarguments As String, ByVal fprivate As Long, ByVal sparent As String) As LongPrivate Sub Command1_Click()    fCreateShellLink "..\程序\启动", "can2", App.Path & "\runfile\TitleBar2", "", ture, "$(Programs)"
        fCreateShellLink "..\程序\启动", "can2", App.Path & "\runfile\TitleBar2", "", ture, "$(Programs)"End Sub
      

  9.   

    Private Declare Function fCreateShellLink Lib "STKIT432.DLL" (ByVal lpstrFolderName As String, ByVal lpstrLinkName As String, ByVal lpstrLinkPath As String, ByVal lpstrLinkArgs As String) As Long 
    Sub Command1_Click()Dim lReturn As Long'添加到桌面
    lReturn = fCreateShellLink("..\..\Desktop", "Shortcut to Calculator", "c:\windows\calc.exe", "")
    '添加到程序组
    lReturn = fCreateShellLink("", "Shortcut to Calculator", "c:\windows\calc.exe", "")
    '添加到启动组
    lReturn = fCreateShellLink("\Startup", "Shortcut to Calculator", "c:\windows\calc.exe", "")End Sub