只能运行一个实例的程序的一个问题(50分)

  • 主题发起人 主题发起人 Allen
  • 开始时间 开始时间
A

Allen

Unregistered / Unconfirmed
GUEST, unregistred user!
一个程序只运行一个实例,这不成问题,问题是启动了一个实例,如何在通过双击其所关联
的文件时将文件传到已启动的实例去,就象ULTRAEDIT一样,双击其所关联的文档后
就新开一个编辑区。
 
1、前提是你的程序是MDI应用;
2、你的程序还需要能够接受到WM_DROPFILES的消息;
3、并且是通过 "CF_HDROP" 剪贴版格式来交换数据的。
 
必须是MDI 吗?
WINZIP也可以这样,但它不是MDI
 
当然不必是MDI
你可以自定义一个消息,在新打开的实例里面把要打开的文件名放在消息里面
一起传到第一个实例,第一个实例接到消息后再自己决定怎么处理,打开他并
覆盖原来打开的文件或者……总之,只要文件名传过来了,就可以了,没有必
要一定要是MDI
 
beta的方法简单明了,效果也不错

感谢dutyman的参与。
 
我是新手,只有一个实例我也实现,但不知如何得到已运行的这个例,还有,这个自定义消息
如何写。我用以下方法实现只有一个实例运行:
。。。
var
hMutex: THandle;
。。。
begin
hMutex := createMutex(nil, True, pchar('onlyoneinstance'));
try
if GetLastError = ERROR_ALREADY_EXISTS then
begin
showmessage('PanoExplorer are already running now!');
Halt;
end
else
begin
//normal run
end;
finally
ReleaseMutex(hMutex);
end;
 
后退
顶部