untuk sharing data antara dua aplikasi pada windows
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
ADVERTISEMENT
click here
Web Bug from http://us.adserver.yahoo.com/l?M=295196.4901138.6071305.3001176/D=groups/S=:HM/A=2128215/rand=917584539


Yahoo! Groups Links

Reply via email to