等了一上午,难道没有高手能解决吗?在发一次(100分)

  • 主题发起人 主题发起人 sujing1982
  • 开始时间 开始时间
S

sujing1982

Unregistered / Unconfirmed
GUEST, unregistred user!
怎么同时 打开多个关联。
前提是:打开多个文件自己的程序也只运行一次。
就比如 winrar 选中一个文件 点‘添加到*。rar’他就压缩一个文件
如果选中多个文件 他就选中的压缩多个文件, 而不是启动多次 每次压一个文件
如能解决,感激不尽
 
神啊 救就我吧~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
简单点的可以改成在程序中选取文件。
 
在程序中取文件当然可以实现,我已经做好了。
就是想跟winrar 一样 用关联系统菜单
求各位大虾想想办法啊
 
你的程序可以同时处理多个文件吗?
如果可以,我倒有个想法。
1、程序开始运行时先探测是否程序已经运行。
2、如果已经运行则把需要处理的文件信息用消息发到已运行的程序。
3、收到消息后处理文件。
 
你的方法我知道 不过我认为不可行
比如 我选中3个文件压缩
我难道先压缩一个 在把第二个文件信息传过去 然后再压??
但是这样 我压缩的过程 就不能执行 必须等把要压的文件信息全部收齐了 才能执行哦。
避免多次运行程序可以作到, 但是我想在压缩的过程执行之前 要收集到所有文件信息。
难道我在窗体show的时候要sleep 一段时间 在用你说的 等把信息收齐了在 执行压缩过程??
 
查了UltraEditt和Winrar两个程序,发现选择多个文件打开时,都是调用DLL文件(UC_ShellExt.dll,RarExt.dll),不知到有没有人清楚这个DLL怎么写的。

打开多个文件有一个笨点的方法,就是把你的程序加入SendTo文件夹里,选择多个文件后用发送到你的程序就可以得到这此文件的路径了。
 
可惜实现 我上面说的吗?
最好是能实现winrar 的 单的的都ok了 就是多个不好处理

不过谢谢回答了问题的兄弟 结帖后都发分
 
弄个list,每次都循环压不就ok了
 
汗~~ chbqq 你没清楚我意思。
list是当然的 但是我无法得到文件信息 。 我用的关联的菜单启动程序,
选多个文件后 程序只能启动一次 , 但是如何得到所有文件信息。
 
这里你要处理好一个参数,就是要只运行程序一个实例,同时,当有人再次用程序名 文件名运行程序时,要实现发消息给第一个运行起来的程序,把这次的文件信息传过去。
这样就能选一个文件能处理,多个也能处理了。我认为
 
楼主参考下如下代码,对你可能有帮助:

做了一个简单的程序,当你选取几个文件拖放到此程序执行文件上时,会显示所有选择的文件名,同理可以获取你需要处理的所有文件。
program Project1;

uses
Forms,
Dialogs;

{$R *.res}
var
s: string;
a: byte;
begin
s:='';
a:=1;
while ParamStr(a)<>'' do //获得所有文件参数信息.
begin
s:=s+ParamStr(a)+' ';
inc(a);
end;
ShowMessage(s); //显示所以需要打开的文件名称.
Application.Initialize;
Application.Run;
end.
 
我还是用了 检测程序是否运行 , 在运行就把文件信息写到注册表,
在由程序读出来。
可以实现打开多个文件了 , 如果选中的文件非常多 不知道会不会有问题,
暂时还没试 , 4,5个文件 包括文件夹没问题
nicai_wgl 70分 其他的回答了的10分
分少了别怪我,我分也不多 呵呵。。
 
后退
顶部