通过快捷方式查找文件的绝对路径。
在AutoCAD绘图仪管理器中,可以将快捷方式拖放到包含附加pc3、CTB等的网络驱动器上的文件夹中。然后,AutoCAD会忽略文件不是直接位于绘图仪管理器文件夹中的事实,并像处理文件一样处理它们。我有一个小工具,我已经成功地用于提取与pc3等相关的信息,但它一直在我的独立设置中使用,我的文件直接在文件夹中,而不是通过一个快捷方式,这一切都很好地工作,因为我需要一个pc3文件的绝对路径,我的工具才能工作。现在,如果我通过我的对话框(使用GetPlotDeviceNames填充的列表)选择一个pc3,那么它会给我实际的pc3名称,而不是绝对路径,因为它会被假定为直接在绘图仪文件夹中。这意味着如果不重新映射支持文件夹,我就不能将任何文件放入网络文件夹。我知道很多办公室更喜欢在绘图仪管理器中添加快捷方式,而不是在其他地方重新映射支持目录,所以如果可能的话,我不想重新映射任何东西。相反,我想知道是否有任何方法可以通过快捷方式获得pc3或ctb文件的绝对路径?有人能提供解决方案或在正确的方向上推一把吗?
**** Hidden Message ***** 我使用了指向本地计算机上的网络驱动器的快捷方式。 不知道您在这里告诉我什么
我想我现在可能已经成功地破解了它,方法是从。绘图仪文件夹中的lnk。这些数据足以让我知道网络pc3的绝对路径。 精神食粮(如果我的思路正确的话)...
Sub Test(path As String)
Dim shellObjAs Shell32.Shell, _
folderObj As Shell32.Folder, _
itemObj As Shell32.FolderItem, _
linkObj As Shell32.ShellLinkObject
Set shellObj = New Shell32.Shell
Set folderObj = shellObj.NameSpace(path)
For Each itemObj In folderObj.Items
If itemObj.IsFolder Then
Call Test(itemObj.path)
ElseIf itemObj.IsLink Then
Set linkObj = itemObj.GetLink
Debug.Print itemObj.path & vbCrLf
With linkObj
Debug.Print _
vbTab & "Arguments =" & .Arguments & vbCrLf & _
vbTab & "Description =" & .Description & vbCrLf & _
vbTab & "Hotkey =" & .Hotkey & vbCrLf & _
vbTab & "Path =" & .path & vbCrLf & _
vbTab & "ShowCommand =" & .ShowCommand & vbCrLf & _
vbTab & "WorkingDirectory =" & .WorkingDirectory & vbCrLf
End With
End If
Next
End Sub
Sub Main( )
Call Test("C:\Program Files\AutoCAD 2008")
End Sub
可能会打印出来-
C:\Program Files\AutoCAD 2008\Data Links\Where are my Data Files.lnk
Arguments =C:\Program Files\AutoCAD 2008\Help\acad171.chm::/move_datalinks.htm
Description =Where are my Data Files
Hotkey =0
Path =C:\WINDOWS\hh.exe
ShowCommand =1
WorkingDirectory =C:\Program Files\AutoCAD 2008\Help\
C:\Program Files\AutoCAD 2008\Drv\Where are my PMP files.lnk
Arguments =C:\Program Files\AutoCAD 2008\Help\acad171.chm::/move_pmp.htm
Description =Where are my PMP Files
Hotkey =0
Path =C:\WINDOWS\hh.exe
ShowCommand =1
WorkingDirectory =C:\Program Files\AutoCAD 2008\Help\
C:\Program Files\AutoCAD 2008\Plot Styles\Where are my Plot Styles.lnk
Arguments =C:\Program Files\AutoCAD 2008\Help\acad171.chm::/move_plotstyles.htm
Description =Where are my Plot Styles
Hotkey =0
Path =C:\WINDOWS\hh.exe
ShowCommand =1
WorkingDirectory =C:\Program Files\AutoCAD 2008\Help\
C:\Program Files\AutoCAD 2008\Plotters\Where are my Plot Configurations.lnk
Arguments =C:\Program Files\AutoCAD 2008\Help\acad171.chm::/move_plotters.htm
Description =Where are my Plot Configurations
Hotkey =0
Path =C:\WINDOWS\hh.exe
ShowCommand =1
WorkingDirectory =C:\Program Files\AutoCAD 2008\Help\
C:\Program Files\AutoCAD 2008\Support\Where are my Support Files.lnk
Arguments =C:\Program Files\AutoCAD 2008\Help\acad171.chm::/move_support.htm
Description =Where are my Support Files
Hotkey =0
Path =C:\WINDOWS\hh.exe
ShowCommand =1
WorkingDirectory =C:\Program Files\AutoCAD 2008\Help\
C:\Program Files\AutoCAD 2008\Template\Where are my Template Files.lnk
Arguments =C:\Program Files\AutoCAD 2008\Help\acad171.chm::/move_template.htm
Description =Where are my Template Files
Hotkey =0
Path =C:\WINDOWS\hh.exe
ShowCommand =1
WorkingDirectory =C:\Program Files\AutoCAD 2008\Help\
C:\Program Files\AutoCAD 2008\Textures\Where are my Textures Files.lnk
Arguments =C:\Program Files\AutoCAD 2008\Help\acad171.chm::/move_textures.htm
Description =Where are my Textures Files
Hotkey =0
Path =C:\WINDOWS\hh.exe
ShowCommand =1
WorkingDirectory =C:\Program Files\AutoCAD 2008\Help\
Sub GetPrintfile()
将首选项标注为acad Preferences
Set Preferences = this drawing。Application . Preferences
Dim sprint file As String
sprint file = Preferences . files . print file
'如果字符串是一个点,您需要计算出完整路径
' sprint file = " C:\ Documents and Settings \ yadayada \ Application Data \ Autodesk \ AutoCAD Mechanical 2008 \ r 17.1 \ enu \ ploters "
Dim Fs,folder,file
' http://www . tutorialized . com/view/tutorial/Extract-the-target-targetlnk/18349
Dim wsh shell As Object,oShellLink As Object
Dim Shortcut As String,star get As String
Set wsh shell = CreateObject(" WScript。shell ")
Set Fs = CreateObject(" Scripting。FileSystemObject")
设置folder = Fs。get folder(sprint file)
For folder . files
If file。Type = "Shortcut "然后
Shortcut = file。Path
Set oShellLink = wshShell。CreateShortcut(快捷方式)。目标路径调试。如果下一个结束Sub,则打印sTarget结束
我已经拼凑了一个解决方案,但Bryco的GetPrintFile是一个更整洁的解决方案,可以让我获得相同的信息,所以谢谢你。 我想在回答之前我应该先喝杯咖啡。我误解了你想要的。Bryco和MP肯定会让你去
页:
[1]