kita bisa menggunakan file mapping. Kita tidak bisa
menggunakan memori secara langsung karena tiap
aplikasi punya address space masing-masing.contoh
procedure MapFileMemory(const afileHandle:THandle;
var aHandle:THandle;const dwAllocSize : DWORD;
var data : pointer;const isCreateMap:boolean);
begin
if isCreateMap then
aHandle := CreateFileMapping(afileHandle,
NIL,
PAGE_READWRITE,
0,
dwAllocSize,
'MySharedData')
else
aHandle:=OpenFileMapping(FILE_MAP_READ or
FILE_MAP_WRITE ,
true,
'MySharedData');
if (aHandle = 0) then
begin
raise Exception.Create('Gagal menciptakan/membuka
file mapping');
end;
data :=MapViewOfFile(aHandle,
FILE_MAP_WRITE,
0,
0,
dwAllocSize);
if (data = "" then
begin
CloseHandle(aHandle);
raise Exception.Create('Gagal mendapatkan view of
file');
end;
end;
procedure UnMapFileMemory(var
aHandle:THandle;BaseAddrs:Pointer);
begin
if (BaseAddrs <> NIL) then
begin
UnMapViewOfFile(BaseAddrs);
BaseAddrs := NIL;
end;
if (aHandle > 0) then
begin
CloseHandle(aHandle);
aHandle := 0;
end;
end;
contoh penggunaan:
misalkan kita hendak sharing data sebanyak 4 byte
pada prog1.exe kita buat file file mapping.
SizeAlloc:=4;
MapFileMemory($FFFFFFFF,aMapHandle,SizeAlloc,
data,true);
//isi data dengan sebuah nilai misal 10
mydata_prog1:=10;
Move(mydata_prog1,data^,SizeAlloc);
pada prog2.exe untuk mendapatkan isi data kita map
lagi
bedanya kita cukup mengeset paramater terakhir dengan
false, karena filemapping sudah ada
SizeAlloc:=4;
MapFileMemory($FFFFFFFF,aMapHandle,SizeAlloc,
data,false);
Move(data^,mydata_prog2,SizeAlloc);
pada step ini seharusnya mydata_prog2 akan berisi
nilai yg sama dengan mydata_prog1 kalo semuanya
berjalan dengan baik.
seperti biasa saya belum nyoba kode diatas secara
langsung. info ini sekedar hasil pengalaman saya
sebelumnya menggunakan filemapping untuk sharing data.
kalo ada yg salah post saja lagi
--- Zaisoft <[EMAIL PROTECTED]> wrote:
> Misalkan kami punya 2 aplikasi(exe) dari delphi.
> Pertanyaan :
> 1. Bagaimana Caranya membuat variabel yang bisa
> diambil dari aplikasi exe
> yang lain?
> 2. Apakah cukup variable tersebut hanya disimpan
> dalam memori atau file
> tidak harus database?
>
> Contoh :
> ada file prog1.exe dan prog2.exe
> prog1.exe membuat perintah untuk membuat variabel
> yang punya nilai,
> dari nilai tersebut prog2.exe dijalankan untuk
> mengambil variabel tersebut?
>
>
>
__________________________________
Do you Yahoo!?
Check out the new Yahoo! Front Page.
www.yahoo.com
Berlangganan: [EMAIL PROTECTED]
Stop Berlangganan: [EMAIL PROTECTED]
Keluhan Milis(Unbouncing,spam,dll): [EMAIL PROTECTED]
Yahoo! Groups Sponsor | |
|
|
Yahoo! Groups Links
- To visit your group on the web, go to:
http://groups.yahoo.com/group/Delphindo/
- To unsubscribe from this group, send an email to:
[EMAIL PROTECTED]
- Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.