Главная страница
    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.47 MB
Время: 0.008 c
4-8732
w666w
2003-08-27 18:55
2003.11.03
Как определить, есть ли в системных путях (где либо) нужнй файл?


14-8625
Омлет
2003-10-14 21:39
2003.11.03
Верхушка потрепаться


1-8376
saNat
2003-10-22 02:21
2003.11.03
Незнаю в какой форум бросить - прочитайте plz


3-8267
jack128
2003-10-14 13:47
2003.11.03
Отладка ХП


7-8678
Эл
2003-08-24 19:40
2003.11.03
Получение информации о системе





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский