線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1185
推到 Plurk!
推到 Facebook!

如何把运行参数传递给只可运行一次的程序?类似QQ之类的

缺席
rainxie
一般會員


發表:20
回覆:27
積分:14
註冊:2008-03-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-03-19 17:31:17 IP:116.226.xxx.xxx 訂閱
我想让程序只运行一次,并且想在第二次激活原程序时,能把运行参数传递给它,并触发其某个事件,不知道该如何实现?
比如我第一次调用时是:c:\a.exe abcd
我第二次调用时是:c:\a.exe efgh
那么第二次调用的参数怎么传递给a.exe,并触发其某个事件?
我用的控制程序只运行一次的代码如下,请教下,怎样改能实现上述功能?谢谢!!!


unit wdRunOnce;
{*******************************************
* brief: 让程序只运行一次
* autor: linzhenqun
* date: 2005-12-28
* email: linzhengqun@163.com
* blog: http://blog.csdn.net/linzhengqun
********************************************}
interface
(* 程序是否已经运行,如果运行则激活它 *)
function AppHasRun(AppHandle: THandle): Boolean;

implementation
uses
Windows, Messages;
const
MapFileName = '{CAF49BBB-AF40-4FDE-8757-51D5AEB5BBBF}';
type
//共享内存
PShareMem = ^TShareMem;
TShareMem = record
AppHandle: THandle; //保存程序的句柄
end;
var
hMapFile: THandle;
PSMem: PShareMem;
procedure CreateMapFile;
begin
hMapFile := OpenFileMapping(FILE_MAP_ALL_ACCESS, False, PChar(MapFileName));
if hMapFile = 0 then
begin
hMapFile := CreateFileMapping($FFFFFFFF, nil, PAGE_READWRITE, 0,
SizeOf(TShareMem), MapFileName);
PSMem := MapViewOfFile(hMapFile, FILE_MAP_WRITE or FILE_MAP_READ, 0, 0, 0);
if PSMem = nil then
begin
CloseHandle(hMapFile);
Exit;
end;
PSMem^.AppHandle := 0;
end
else begin
PSMem := MapViewOfFile(hMapFile, FILE_MAP_WRITE or FILE_MAP_READ, 0, 0, 0);
if PSMem = nil then
begin
CloseHandle(hMapFile);
end
end;
end;
procedure FreeMapFile;
begin
UnMapViewOfFile(PSMem);
CloseHandle(hMapFile);
end;
function AppHasRun(AppHandle: THandle): Boolean;
var
TopWindow: HWnd;
begin
Result := False;
if PSMem <> nil then
begin
if PSMem^.AppHandle <> 0 then
begin
SendMessage(PSMem^.AppHandle, WM_SYSCOMMAND, SC_RESTORE, 0);
TopWindow := GetLastActivePopup(PSMem^.AppHandle);
if (TopWindow <> 0) and (TopWindow <> PSMem^.AppHandle) and
IsWindowVisible(TopWindow) and IsWindowEnabled(TopWindow) then
SetForegroundWindow(TopWindow);
Result := True;
end
else
PSMem^.AppHandle := AppHandle;
end;
end;
initialization
CreateMapFile;
finalization
FreeMapFile;
end.
系統時間:2017-12-13 1:38:52
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!