P
pink_wt
Unregistered / Unconfirmed
GUEST, unregistred user!
我是想让我的程序只运行一次,当程序第二次运行时把参数传递给第一个,为什么这段程序
不能正常运行,请大家帮忙看看。
主程序:
program renamefiles;
uses
Forms,
windows,
messages,
SysUtils,
main in 'main.pas' {MainForm},
{$R *.res}
var
hwd:hwnd;
Hd:integer;
ds:COPYDATASTRUCT;
begin
Application.Initialize;
Application.Title := 'xxx';
hwd:=createmutex(nil,false,'xxx');
if GetLastError<>Error_Already_Exists then
begin
Application.CreateForm(TMainForm, MainForm);
Application.Run;
releasemutex(hwd);
end
else
begin
Hd:=FindWindow('TMainForm',nil);
SetForegroundWindow(Hd);
if paramcount>0 then
begin
ds.cbData:=Length(paramstr(1))+1;
GetMem(ds.lpData,ds.cbData);
strCopy(ds.lpData,PChar(paramstr(1)));
application.MessageBox(pchar(paramstr(1)),'information',0);
SendMessage(hd,WM_COPYDATA,Application.handle,Cardinal(@ds));
FreeMem(ds.lpData);
end;
end;
end.
unit main;
。。。
private
procedure ReveiveData1(var Msg:TWmCopyData); message WM_COPYDATA;
var
MainForm: TMainForm;
procedure TMainForm.ReveiveData1(var Msg:TWmCopyData);
begin
showmessage(string(Msg.CopyDataStruct^.lpData));
//自定义函数
AddFromMenu(string(Msg.CopyDataStruct^.lpData));
end;
不能正常运行,请大家帮忙看看。
主程序:
program renamefiles;
uses
Forms,
windows,
messages,
SysUtils,
main in 'main.pas' {MainForm},
{$R *.res}
var
hwd:hwnd;
Hd:integer;
ds:COPYDATASTRUCT;
begin
Application.Initialize;
Application.Title := 'xxx';
hwd:=createmutex(nil,false,'xxx');
if GetLastError<>Error_Already_Exists then
begin
Application.CreateForm(TMainForm, MainForm);
Application.Run;
releasemutex(hwd);
end
else
begin
Hd:=FindWindow('TMainForm',nil);
SetForegroundWindow(Hd);
if paramcount>0 then
begin
ds.cbData:=Length(paramstr(1))+1;
GetMem(ds.lpData,ds.cbData);
strCopy(ds.lpData,PChar(paramstr(1)));
application.MessageBox(pchar(paramstr(1)),'information',0);
SendMessage(hd,WM_COPYDATA,Application.handle,Cardinal(@ds));
FreeMem(ds.lpData);
end;
end;
end.
unit main;
。。。
private
procedure ReveiveData1(var Msg:TWmCopyData); message WM_COPYDATA;
var
MainForm: TMainForm;
procedure TMainForm.ReveiveData1(var Msg:TWmCopyData);
begin
showmessage(string(Msg.CopyDataStruct^.lpData));
//自定义函数
AddFromMenu(string(Msg.CopyDataStruct^.lpData));
end;