Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Программа и интерфейс
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 14.11.2012, 16:59
helgboy helgboy вне форума
Прохожий
 
Регистрация: 30.10.2012
Сообщения: 33
Репутация: 10
По умолчанию как создать поток в dll

делаю вот так:
Код:
library key;

uses
  FastShareMem,Windows,transmite,main,Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,Math;

type dlltimer = class(TThread)
  protected
  procedure Work;
  procedure Execute; override;

  end;

var
  vartime: dlltimer;
  SysHook : HHook = 0;
  Wnd : Hwnd = 0;

{$R *.res}

    procedure dlltimer.Execute;
    begin
    Synchronize(Work);
    end;

    procedure dlltimer.Work;
    begin
    //sleep(1000);
    showmessage('работает таймер');
    end;

   
    function SysMsgProc(code : integer; wParam : word;
        lParam : longint) : longint; stdcall;

begin
        
    CallNextHookEx(SysHook, Code, wParam, lParam);
    if code = HC_ACTION then
    begin
       Wnd := TMsg(Pointer(lParam)^).hwnd;
    
        if TMsg(Pointer(lParam)^).message =WM_KEYDOWN then  

    case (TMsg(Pointer(lParam)^).wParam) of
    37:   begin
           .....
          end;
    end;
    end;
end;

    procedure RunStopHook(State : Boolean) export; stdcall;
      begin
          if State=true then
          begin
          SysHook := SetWindowsHookEx(WH_GETMESSAGE,
            @SysMsgProc, HInstance, 0);
        dlltimer.create(false);
        end
        else// Иначе
        begin
          UnhookWindowsHookEx(SysHook);
          SysHook := 0;
        end;
      end;
      exports RunStopHook;

    begin

    end.
все компилится а сообщение в потоке dlltimer не выскакивает
Ответить с цитированием
  #2  
Старый 14.11.2012, 17:04
helgboy helgboy вне форума
Прохожий
 
Регистрация: 30.10.2012
Сообщения: 33
Репутация: 10
По умолчанию

а все разобрался надо было вызвать его еще вот так:
Код:
vartime.Work;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:35.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter