подскажите как передать какие либо переменныев мою dll
Привет, в программинге не силён, но что то пытаюсь.
Delphi, Хуки, пока что-то простое.
При запуске своей программки загружаю в память ещё свою dll для перехвата клавиш.
Дальше дллка обрабатывает нажатия и в зависимости от условий, что-то делает. Работает.
Но трудность возникла в том, чтобы потом из основной программы передать какие-либо переменные в Dll и что бы она их запомнила и в дальнейшем работала с ними сама. (а именно передавала в неё Handle окна)
Код не могу кинуть, потому как его просто нет на это дело.
Гугл есть и инфа тоже, но что-то не получается(.
Последний раз редактировалось StekloReZ, 31.07.2011 в 09:27.
Захочешь получить помощь, а получишь головную боль лишнюю.
Либо нет времени, либо нет желания помочь.
Тему можно удалять, конкретного простого примерчика, как понял, никто не даст.
кучу мыслей по поводу умников писать никакого желания, ветка не та,
как будто это не заметно. А мне даже очевидные вещи в программировании так просто не даются.
В голове и так уже каша, что бы разобраться что к чему, задал вполне конкретный вопрос.
NLObP, там немножко не то, что нужно, это работа с потокам, это сообщение уже видел и читал.
Последний раз редактировалось StekloReZ, 01.08.2011 в 00:49.
Хм я вот тут извращаюсь, пытаюсь сделать скриптовый движок отдельной длл чтоб можно было подключать/выгружать тот или иной на лету.
С паксом вроде просто, а вот фс заипалса. Обертка для функций не используя варианты и другие lifetime-типы обещает стать дллке slowscript.dll
Захочешь получить помощь, а получишь головную боль лишнюю.
Либо нет времени, либо нет желания помочь.
Тему можно удалять, конкретного простого примерчика, как понял, никто не даст.
procedure Packet_Sniffer;stdcall;
var
//buffer:Pointer;
cbRead:DWORD;
packet_head:PNetworkPacket;
lpszPipeName:string;
buffer:array[1..10240]of byte;
i:integer;
s:string;
c_size:dword;
v1,v2:dword;
begin
lpszPipeName:='\\.\pipe\eye';
hNamedPipe:= CreateNamedPipe(
pchar(lpszPipeName),
PIPE_ACCESS_DUPLEX,
PIPE_TYPE_MESSAGE or PIPE_READMODE_MESSAGE or PIPE_WAIT,
PIPE_UNLIMITED_INSTANCES,
10240, 10240, 100, nil);
if not ConnectNamedPipe(hNamedPipe, nil) then MessageBOx(0,pchar(' no connect pipe #'+IntToStr(GetLastError())),'',$10);
while true do
begin
if(ReadFile(hNamedPipe, buffer, 10240, cbRead, nil)) then
begin
тут читаем из buffer
end;// else Form1.Memo1.Lines.Add('no read');
end;
end;
запись в пайпы
Код:
szPipeName:='\\.\pipe\eye';
hNamedPipe:=CreateFile(pchar(szPipeName),GENERIC_READ or GENERIC_WRITE,0, nil, OPEN_EXISTING, 0, 0);
WriteFile(hNamedPipe,pBuffer^,size,cbWritten,nil);
__________________
каждый раз, когда ты пишешь int i вместо short i, сотни пользователей вынуждены докупать планку памяти
служба поддержки 4gay - ICQ 642274822
Последний раз редактировалось Morfik, 01.08.2011 в 16:45.