Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.03;
Скачать: CL | DM;

Вниз

Как объявоть переменную(указатель) для всех процессов   Найти похожие ветки 

 
Maksimius   (2003-10-11 18:57) [0]

Как объявоть переменную(указатель) для всех процессов запущенных в системе?


 
Nikolay M. ©   (2003-10-11 19:05) [1]

Как ты себе это представляешь? :)


 
Digitman ©   (2003-10-12 13:04) [2]

никак. понятия "переменная"и "указатель" строго индивидуальны для каждого конкретного приложения (процесса)

если же речь таки идет просто о неких общедоступных глобальных данных то задача может быть решена как минимум двумя способами :

1. окну верхнего уровня, создаваемого неким процессом некоего приложения, задается св-во SetWindowWord/Long(GWL_USERDATA). Тогда все прочие процессы прочих приложений, имеющие доступ к дисктопу данного окна, находят это окно по имени/классу и считывают/перезаписывают это св-во

2. одним из процессов некоего приложения создается именованый FileMap-объект (см. CreateFileMapping). Прочие процессы прочих приложений получают доступ к глоб.данным с пом. (OpenFileMapping / MapViewOfFile)


 
default ©   (2003-10-12 13:10) [3]

никак


 
SammIk ©   (2003-10-13 21:17) [4]

Внедрение в процесс, это описано у рихтора и в нете


 
Songoku ©   (2003-10-13 22:17) [5]

Используй обьекты ядра!


 
y-soft ©   (2003-10-14 06:50) [6]

Вопрос неправильно сформулирован, в такой формулировке ответ однозначный - никак. Если же говорить о передаче данных между процессами (в том числе и интерпретируемых процессами как указатели), то решений много. Кроме 2-х, указанных уважаемым Digitman ©, часто используется доступ через общие Dll, WM_COPYDATA etc...


 
Mike Kouzmine ©   (2003-10-14 10:13) [7]

Songoku © (13.10.03 22:17) [5] То есть "ядерные объекты".


 
Иван Шихалев ©   (2003-10-14 12:07) [8]


> часто используется доступ через общие Dll


Не получится. Общие DLL не дают общих данных.


 
Юрий Федоров ©   (2003-10-14 13:28) [9]

>>Иван Шихалев © (14.10.03 12:07) [8]
Почему же ?
Delphi1, 16-бит, и вперед :-))


 
y-soft ©   (2003-10-14 14:39) [10]

>Иван Шихалев © (14.10.03 12:07) [8]

Возможно Вы не о том подумали, но вот пример из руководства Тодд Миллер и Девид Пауэл "Использование Delphi 3" "Диалектика", 1997 (привожу дословно). Это простая оболочка над FileMapping:


library ShareHeap

uses
Forms, SysUtils, Windows;

const
Key : string = "_GMem";
MaxSize = $FFFF;
var
hObjHand : THandle;
pGMem : pointer;

procedure UnMapMemory;
begin
if assigned(pGMem) then
begin
UnMapViewOfFile(pGMem);
pGMem := nil;
end;

if hObjHand > 0 then
CloseHandle(hObjHand);

hObjHand := 0;
end;

procedure MapMemory(dwAllocSize : DWORD);
begin
hObjHand := CreateFileMapping(MAXDWORD,nil,PAGE_READWRITE,0,dwAllocSize,PChar(Key));
if hObjHand = 0 then
Raise Exception.Create("Could not create file-mapping object");

pGMem := MapViewOfFile(hObjHand,FILE_MAP_WRITE,0,0,1);
if not assigned(pGMem) then
begin
UnMapMemory;
raise Exception.Create("Could not map file");
end;
end;

procedure DllMain(dwReason : DWORD);
begin
case dwReason of
dll_Process_Attach:
begin
pgMem := nil;
hObjHand := 0;
MapMemory(MaxSize);
end;
dll_Process_Detach:
UnMapMemory;
end;
end;

function GetGBlock : pointer; stdcall;
begin
Result := pGMem;
end;

exports
GetGBlock;

begin
DllProc := @DllMain;
DllMain(dll_Process_Attach);
end.


 
Иван Шихалев ©   (2003-10-14 14:43) [11]


> Возможно Вы не о том подумали, но вот пример из руководства
> Тодд Миллер и Девид Пауэл "Использование Delphi 3" "Диалектика",
> 1997 (привожу дословно). Это простая оболочка над FileMapping:


Да уж, я совсем не о том подумал.



Страницы: 1 вся ветка

Текущий архив: 2003.11.03;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.015 c
3-8269
vidiv
2003-10-14 06:00
2003.11.03
Решение задач по FoxPro


6-8567
Шишкин Илья
2003-09-06 10:38
2003.11.03
Как закачать файл?


3-8303
uu
2003-10-13 13:10
2003.11.03
обьединение таблиц


4-8706
SkyN
2003-09-01 13:01
2003.11.03
hook на нажатие клавишь, ошибка


7-8700
Ded Moroz
2003-08-26 01:02
2003.11.03
Async Pro