如何把运行参数传递给只可运行一次的程序?类似QQ之类的 |
缺席
|
rainxie
一般會員 發表:20 回覆:27 積分:14 註冊:2008-03-13 發送簡訊給我 |
我想让程序只运行一次,并且想在第二次激活原程序时,能把运行参数传递给它,并触发其某个事件,不知道该如何实现?
比如我第一次调用时是: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. |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |