利用共享内存来让程式只执行一次 |
尚未結案
|
bigdogchina
版主 發表:238 回覆:523 積分:312 註冊:2003-04-28 發送簡訊給我 |
大大们好,小弟我的问题真多,又要麻烦您们了
让程式只执行一次,站内有很多的内容:
class="code">
unit Unit2; interface uses Windows, SysUtils, TlHelp32; function MapGlobalData(const MapName: string; Size: Integer; var Ptr: Pointer): THandle;
procedure ReleaseGlobalData(var Handle: THandle; var Ptr: Pointer); function IsGlobalDataExistent(const MapName: string): Boolean; implementation function MapGlobalData(const MapName: string; Size: Integer; var Ptr: Pointer): THandle;
begin
Result := CreateFileMapping($FFFFFFFF, nil, PAGE_READWRITE, 0, Size, PChar(MapName));
if Result = 0 then
if GetLastError = ERROR_ALREADY_EXISTS then
begin
Result := OpenFileMapping(FILE_MAP_ALL_ACCESS, False, PChar(MapName));
if Result = 0 then Exit;
end else Exit;
Ptr := MapViewOfFile(Result, FILE_MAP_ALL_ACCESS, 0, 0, 0);
if Ptr = nil then
begin
CloseHandle(Result);
Result := 0;
end;
end; procedure ReleaseGlobalData(var Handle: THandle; var Ptr: Pointer);
begin
if Assigned(Ptr) then
begin
UnmapViewOfFile(Ptr);
Ptr := nil;
end; if Handle <> 0 then
begin
CloseHandle(Handle);
Handle := 0;
end;
end; function IsGlobalDataExistent(const MapName: string): Boolean;
var
hMap: THandle;
begin
hMap := OpenFileMapping(FILE_MAP_ALL_ACCESS, False, PChar(MapName));
Result := hMap <> 0;
if Result then CloseHandle(hMap);
end;
然后在BCB中把这个单元文件添加到工程中去(Project--->Add to Project),然后把该单元编译一下.在BCB的工程中修改为:
//--------------------------------------------------------------------------- #include
------
人生在勤,不索何获? |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |