dljdlj70000 2006-11-17 16:23
我想实现当在目录窗口或资源管理器中选中文件时,得到此文件的文件名.和路径名
我想实现当在目录窗口或资源管理器中选中文件时,得到此文件的文件名.和路径名 请各位大虾帮忙
dljdlj70000 2006-11-17 16:51
就是我在资源管理器上双击某个文件(已和我要编的程序建立关联关系)时被我要编的程序关联打开 我这个程序如何获得这个文件的名称和路径
dljdlj70000 2006-11-17 16:55
老大,我不需要时时刻刻监控他 只要双击和我关联的程序的文件时获得文件名和路径
Nothing 2006-11-17 16:58
很简单,在这个程序中调用 Command 函数就可以了
Command
说明
当从命令行装入 Visual Basic 时,/cmd 之后的命令行的任何部分作为命令行的参数传递给程序。下面的示例中,cmdlineargs 代表 Command 函数返回的参数信息。
VB /cmd cmdlineargs
对于使用 Visual Basic 开发并编译为 .exe 文件的应用程序,Command 返回出现在命令行中应用程序名之后的任何参数。例如:
MyApp cmdlineargs
想知道如何在正在使用的应用程序的用户界面中改变命令行参数,请搜寻关于“命令行参数”的帮助。
本示例在某个函数中用 Command 函数获得命令行参数,并将命令行参数以 Variant 类型之数组返回。
[code]
Function GetCommandLine(Optional MaxArgs)
'声明变量。
Dim C, CmdLine, CmdLnLen, InArg, I, NumArgs
'检查是否提供了 MaxArgs 参数。
If IsMissing(MaxArgs) Then MaxArgs = 10
' 使数组的大小合适。
ReDim ArgArray(MaxArgs)
NumArgs = 0: InArg = False
'取得命令行参数。
CmdLine = Command()
CmdLnLen = Len(CmdLine)
'以一次一个字符的方式取出命令行参数。
For I = 1 To CmdLnLen
C = Mid(CmdLine, I, 1)
'检测是否为 space 或 tab。
If (C <> " " And C <> vbTab) Then
'若既不是 space 键,也不是 tab 键,
'则检测是否为参数内含之字符。
If Not InArg Then
'新的参数。
'检测参数是否过多。
If NumArgs = MaxArgs Then Exit For
NumArgs = NumArgs + 1
InArg = True
End If
'将字符连接到当前参数中。
ArgArray(NumArgs) = ArgArray(NumArgs) & C
Else
'找到 space 或 tab。
'将 InArg 标志设置成 False。
InArg = False
End If
Next I
'调整数组大小使其刚好符合参数个数。
ReDim Preserve ArgArray(NumArgs)
'将数组返回。
GetCommandLine = ArgArray()
End Function
[/code]
dljdlj70000 2006-11-17 23:56
[size=12px]MDIForm.Picture1.LinkExecute "asd"
将这个发送要打开的文件名就可以了,一般是Commend函数,例如
MDIForm.Picture1.LinkExecute [color=red]Commend[/color][/size]
[size=12px] [/size]
[size=12px]老大,上面是你昨天写的,你把[color=blue]Command[/color]写成Commend[/size]
[size=12px]第二天上午我花了100分 在[color=red]cdsn上求助[/color][/size]
[size=12px]才知道用[color=red]Command[/color] 和你现在说的Command函数大致一样 呵呵你们都是高手啊[/size]
[size=12px]不过直接MDIForm.Picture1.LinkExecute Command就行了[/size]
[size=12px] [/size]
[size=12px]richtextbox.loadfile Command 就可以打开点击的文件了[/size]
[size=12px] [/size]
[size=12px]非常谢谢[color=red]落花老大[/color][/size]
dljdlj70000 2006-11-18 00:25
Private Sub MDIForm_Load()
If App.PrevInstance Then
frmMDI.LinkTopic = "" ' 这两行用于清除新运行的程序的DDE服务器属性,
frmMDI.LinkMode = 0
frmMDI.Picture1.LinkMode = 0 '--
frmMDI.Picture1.LinkTopic = "DDE|frmMDI" ' |______连接DDE程序并发送数据/参数
frmMDI.Picture1.LinkMode = 2 ' | “|”为管道符,是“退格键”旁边的竖线,
frmMDI.Picture1.LinkExecute Command
End ' 结束新程序的运行
End If
================================
Private Sub MDIForm_LinkExecute(CmdStr As String, Cancel As Integer)
frmMDI.Picture1.Tag = Command
Me.WindowState = 2
Me.SetFocus
Dim fso
Set fso = CreateObject("scripting.filesystemobject")
Dim dirx As String
dirx = Right(Command, Len(Command) - 1)
dirx = Left(dirx, Len(dirx) - 1)
If fso.FileExists(dirx) Then
CreateNewDocument
frmMDI.ActiveForm.rtfText.LoadFile dirx
frmMDI.ActiveForm.Caption = dirx
Else: MsgBox "不存在"
End If
Cancel = False ' '如果为TRUE 则客户端要出错
End Sub
最终终于成功 [color=red][b]最后再次谢谢落花老大[/b][/color]
Nothing 2006-11-18 13:51
你可能没有安装MSDN,其他装了MSDN,一查里面的函数就可以了。
不好意思我将函数名称输入错了。