Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Application.onCreateForm ?
#5
Şöyle bir durumu ifade etmekte fayda var.

WM_CREATE mesajı, Application seviyesinde kendi kendine üretilen bir mesaj değil de direkt Windows mesaj sırasına atılan türden bir mesaj olacaktır.

Dolayısıyla proje içerisinden yakalayamazsanız üzülmeyin, çözümü var.

Aşağıdaki örneği denemek isteyebilirsiniz.

Bir boş proje açın bir button ve bir MEMO koyun.

Button OnClick eventi içine formun bir kopyasını create eden aşağıdaki örnekteki gibi basit bir kod ekleyin.


procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  with TForm1.Create(self) do
  try
    ShowModal();
  finally
    free;
  end;
end;



var
  FHHook: HHOOK;


function CBT_HookFunc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
const
  ClassNameBufferSize = 1024;
var
  LClassName : Array[0..254] of Char;
  hWindow    : HWND;
begin
  Result := CallNextHookEx(FHHook, nCode, wParam, lParam);

  if NOT Assigned(Application.MainForm)
    then // MainForm olgunlaşmamışsa (o da OnCreate aşamasında olabilir) üzerindekilere de yazamayız...
      Exit;

  if nCode < 0 then exit;

  if nCode = HCBT_CREATEWND then
  begin
    hWindow := HWND(wParam);
    GetClassName(hWindow, LClassName, 256);

    if  ( hWindow > 0 )
    and ( pos('TForm', LClassName) > 0 ) // TForm ile başlayan bir sınıf create edilmişse...
    then
    begin
      Form1.Memo1.Lines.Add( Format( 'Form oluştu: %xh (%d)', [hWindow, hWindow]) );
    end;
  end;
end;


Procedure InitHook();
var
  dwThreadID : DWORD;
begin
  dwThreadID  := GetCurrentThreadId;
  FHHook      := SetWindowsHookEx(WH_CBT, @CBT_HookFunc, hInstance, dwThreadID);
  if FHHook = 0
    then
      RaiseLastOSError;
end;

Procedure KillHook();
begin
  if (FHHook <> 0) then
    UnhookWindowsHookEx(FHHook);
end;

initialization
  InitHook();

finalization
  KillHook();


Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla


Bu Konudaki Yorumlar
Application.onCreateForm ? - Yazar: bydelphi - 18-07-2024, Saat: 11:13
Application.onCreateForm ? - Yazar: mrmarman - 19-07-2024, Saat: 13:46
Cvp: Application.onCreateForm ? - Yazar: Tuğrul HELVACI - 19-07-2024, Saat: 14:01
Application.onCreateForm ? - Yazar: bydelphi - 19-07-2024, Saat: 17:06

Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Web Server Application yerine Remobjects neden tercih edilir pro_imaj 1 2.125 17-06-2020, Saat: 09:16
Son Yorum: Fesih ARSLAN
Video application uses a value of the wrong type for the current operation Serdal AKSOY 5 5.059 23-04-2020, Saat: 16:27
Son Yorum: hi_selamlar
  Web Server Application IIS Yayınlama Hk. pro_imaj 5 4.762 24-12-2019, Saat: 17:39
Son Yorum: Halil Han BADEM
  Application Terminate Olayını Nasıl Yakalarım? 3ddark 17 15.446 18-10-2018, Saat: 21:25
Son Yorum: yhackup
  İki Application Clasından iki Farklı Form Create Etme witalihakko 2 2.975 01-06-2018, Saat: 12:17
Son Yorum: Tuğrul HELVACI



Konuyu Okuyanlar: 1 Ziyaretçi