Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > как избавиться от формы и остаться памяти


Автор: BLACK_KOT 2.11.2007, 21:56
я избавился от формы (дабы проект поменьше весил) но прога не остаётся в памяти - она закрывается сразу. что сделать чтоб прога висела в памяти, в тоже время не грузила проц, и выполняла задачу?пробовал зациклить - так почему то не работает..
Код

program Project1;

uses
  windows,
  messages;
procedure HookProc(Code: integer; WParam: word; LParam: Longint)stdcall;
var
msg:PEVENTMSG;
begin
msg := Pointer(LParam);
if msg.message=WM_KEYDOWN then keybd_event(79,MapvirtualKey(79,0),0,0)
end;

begin
SetWindowsHookEx(WH_JOURNALRECORD, @HookProc, HInstance, 0);
end.

прога отлавливает нажатия клавиш и добавляет букву в конец.

Автор: bems 2.11.2007, 22:02
Цитата(BLACK_KOT @  2.11.2007,  21:56 Найти цитируемый пост)
пробовал зациклить - так почему то не работает..
как не рабртает?

Добавлено через 5 минут и 18 секунд
кажется для WH_JOURNALRECORD у твоего потока должен быть цикл обработки сообщений

Автор: BLACK_KOT 2.11.2007, 23:44
вобщем с формой - прога работает. а как избавиться от формы, сохранив работоспособность?

Код

unit Unit1;

interface

uses
  Windows, Messages, Forms;


type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure HookProc(Code: integer; WParam: word; LParam: Longint)stdcall;
var
msg: PEVENTMSG;
begin
msg := Pointer(LParam);
if msg.message=WM_KEYDOWN then keybd_event(79, MapvirtualKey(79,0),0,0)
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
SetWindowsHookEx(WH_JOURNALRECORD, @HookProc, HInstance, 0);
end;


end.

Автор: THandle 3.11.2007, 10:24
Код

program Project1;
uses
  windows,
  messages;
procedure HookProc(Code: integer; WParam: word; LParam: Longint)stdcall;
var
msg:PEVENTMSG;
begin
msg := Pointer(LParam);
if msg.message=WM_KEYDOWN then keybd_event(79,MapvirtualKey(79,0),0,0)
end;

var
 ms : tagMSG;
begin
SetWindowsHookEx(WH_JOURNALRECORD, @HookProc, HInstance, 0);

while GetMessage(ms, 0 , 0, 0) do
 begin
  TranslateMessage(ms);
  DispatchMessage(ms);
 end
end.



Вот попробуй. Всё отлично работает.

Автор: BLACK_KOT 3.11.2007, 12:01
благодарю, THandle!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)