Recent

Author Topic: How To Form OnNotifyEvent TMessage Parse For Change Directory and Files  (Read 7137 times)

samurat2000

  • Newbie
  • Posts: 2
procedure TForm1.OnNotifyEvent(var AMessage: TMessage);
begin
   ....
   ....
end;

In above code, how to TMessage parse to detail change directory and files.

ASerge

  • Hero Member
  • *****
  • Posts: 2240
You mean cross-platform behavior like Windows.FindFirstChangeNotification?

samurat2000

  • Newbie
  • Posts: 2
http://stackoverflow.com/questions/31168116/how-to-get-notified-when-disk-free-space-changes

In this link code below.

Code: Pascal  [Select][+][-]
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7.   Dialogs, ShlObj, ActiveX;
  8.  
  9. const
  10.  
  11.   SHCNRF_INTERRUPTLEVEL     = $0001;
  12.   SHCNRF_SHELLLEVEL         = $0002;
  13.   SHCNRF_RECURSIVEINTERRUPT = $1000;
  14.   SHCNRF_NEWDELIVERY        = $8000;
  15.  
  16. type
  17.   TSHChangeNotifyEntry = record
  18.     pidl: PItemIdList;
  19.     fRecursive: BOOL;
  20.   end;
  21.  
  22.   TForm1 = class(TForm)
  23.     procedure FormCreate(Sender: TObject);
  24.     procedure FormDestroy(Sender: TObject);
  25.   private
  26.     procedure OnNotifyEvent(var AMessage:TMessage); message WM_USER;
  27.   end;
  28.  
  29. var
  30.   Form1: TForm1;
  31.   Hand: THandle;
  32.  
  33. function SHChangeNotifyRegister(OwnerHwnd:HWND; fSources:Integer; fEvents:DWord; wMsg:UINT;
  34.          cEntries:Integer; var pshcne:TSHChangeNotifyEntry):ULONG; stdcall; external 'shell32.dll';
  35.  
  36. function SHChangeNotifyDeregister(ulID:ULONG):BOOL; stdcall; external 'shell32.dll';
  37.  
  38. implementation
  39.  
  40. {$R *.dfm}
  41.  
  42. procedure TForm1.FormCreate(Sender: TObject);
  43. var Desktop:IShellFolder;
  44.     pidl:PItemIdList;
  45.     Path:String;
  46.     Eaten,attr,Events,Sources:DWord;
  47.     cnPIDL:TSHChangeNotifyEntry;
  48. begin
  49.  if Succeeded(SHGetDesktopFolder(Desktop)) then begin
  50.   Path:='D:\Test';
  51.   if Succeeded(Desktop.ParseDisplayName(0, nil, PWideChar(Path), Eaten, pidl, attr)) then begin
  52.    Caption:=Path;
  53.    cnPIDL.pidl:=pidl;
  54.    cnPIDL.fRecursive:=true;
  55.    Sources:=SHCNRF_INTERRUPTLEVEL or SHCNRF_SHELLLEVEL or SHCNRF_NEWDELIVERY or SHCNRF_RECURSIVEINTERRUPT;
  56.    Events:=SHCNE_FREESPACE;
  57.    Hand:=SHChangeNotifyRegister(Handle, Sources, Events, WM_USER, 1, cnPIDL);;
  58.    CoTaskMemFree(pidl);
  59.   end;
  60.  end;
  61. end;
  62.  
  63. procedure TForm1.FormDestroy(Sender: TObject);
  64. begin
  65.  SHChangeNotifyDeregister(Hand);
  66. end;
  67.  
  68. procedure TForm1.OnNotifyEvent(var AMessage: TMessage);
  69. begin
  70.  if AMessage.Msg = WM_USER then Caption:=Caption+' x';
  71. end;
  72.  
  73. end.
  74.  

This procedure;

procedure TForm1.OnNotifyEvent(var AMessage: TMessage);
begin
 if AMessage.Msg = WM_USER then Caption:=Caption+' x';
end;

How to AMessage parse for change detail (folder change detail, file change detil ? which file (full path) and which change?

Code: SQL  [Select][+][-]
  1. -- phpMyAdmin SQL Dump
  2. -- version 5.1.4
  3. -- https://www.phpmyadmin.net/
  4. --
  5. -- Host: klienci.home.pl
  6. -- Czas generowania: 09 Lut 2020, 16:21
  7. -- Wersja serwera: 10.6.15-db-log
  8. -- Wersja PHP: 8.0.30
  9.  
  10. SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
  11. START TRANSACTION;
  12. SET time_zone = "+00:00";
  13.  
  14.  
  15. /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
  16. /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
  17. /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
  18. /*!40101 SET NAMES utf8mb4 */;
  19.  
  20. --
  21. -- Baza danych: `zdrowo_katalog`
  22. --
  23.  
  24. -- --------------------------------------------------------
  25.  
  26. --
  27. -- Struktura tabeli dla tabeli `klienci`
  28. --
  29.  
  30. CREATE TABLE `klienci` (
  31.   `id` INT(11) NOT NULL,
  32.   `nazwa` VARCHAR(255) NOT NULL DEFAULT '',
  33.   `adres` VARCHAR(255) NOT NULL DEFAULT '0',
  34.   `telefon` INT(16) NOT NULL DEFAULT 0,
  35.   `email` VARCHAR(255) NOT NULL,
  36.   `NIP` BIGINT(32) DEFAULT NULL,
  37.   `PESEL` BIGINT(32) DEFAULT NULL
  38. ) ENGINE=MyISAM DEFAULT CHARSET=latin2 COLLATE=latin2_general_ci;
  39.  
  40. --
  41. -- Zrzut danych tabeli `klienci`
  42. --
  43.  
  44. INSERT INTO `klienci` (`id`, `nazwa`, `adres`, `telefon`, `email`, `NIP`, `PESEL`) VALUES
  45. (1, 'Tomasz Stroik', 'Orląt Lwowskich 2a, 53-605 Wrocław', 713724731, 'tomasz.stroik@prominet.wroc.pl', 8991125007, 11071699130),
  46. (2, 'Małgorzata Piekielniak ', 'Gubińska 6/15, 54-434 Wrocław', 713741521, '', 0, 60020204769),
  47. (3, 'Zbigniew Matusiak', 'ul. Zemska 9/25, 54438 Wrocław', 604396390, 'zbig56@poczta.onet.pl', 0, 60020202231),
  48. (4, 'Jakub Janas', 'ul Baczyńskiego 7, 58- 500 Jelenia Góra', 713221936, 'jakub_vilbana@poczta.onet.pl', 0, 83042704596),
  49. (5, 'Przemysław Trzewiczek ', 'ul Babiego lata 13A/3A, 53-026 Wrocław', 601159066, 'jozef1210@gmail.com', 0, 79101200197),
  50. (6, 'Maciej Stefaniak', 'Ujejskiego 29/1, 51-141 Wrocław', 501408970, 'profosol@aol.com', 0, 77110307295),
  51. (7, 'Radosław Krupka  ', 'Nowy Targ 20/7, 50-143 Wrocław', 602300984, 'r.krupka@wp.pl', 0, 39072698309),
  52. (8, 'Magda Walec', 'Inżynierska 66/27 Wrocław', 713632063, 'iod@lpsa.pl', 0, 74051413672),
  53. (9, 'Władysław Kumas', 'Grabiszyńska 315/59 Wrocław', 713433123, 'szkola@airproducts.com', 0, 95070558032),
  54. (10, 'Stefan Karp', 'Grabiszyńska 10/11 Wrocław', 713725918, 'info@carpland.pl', 0, 8942546996),
  55. (11, 'Igor Łęcki', 'Bydgoska 12/4 Wrocław', 713433123, 'sklep@vikingcarpfishing.pl', 0, 73010206340),
  56. (12, 'Bolesław Bach', 'Bolesławiecka 18/20 m.9 Wrocław', 690013769, 'SERWISTV.WROCLAW@WP.PL', 0, 75062633853),
  57. (13, 'Zenon Kowalski', 'Bolesławiecka 10/29 Wrocław', 608333301, 'serwis-tv@wp.pl', 3816470846, 88030946064),
  58. (14, 'Jan Graf', 'Grabiszyńska 50, 53-504 Wrocław', 713430539, 'grawelektronik@o2.pl', 1235255217, 66071175784),
  59. (15, 'Robert Podsiadlo', 'Młyńska 2, 55-020 Węgry', 713114620, 'serwis.tvkomp@wp.pl', 8218224488, 66093077734),
  60. (16, 'Robert Podsiadło', 'Drukarska 28/1, 53-312 Wrocław', 601572738, 'rpsklep.serwislcd@gmail.com', 9141030798, 76031241295),
  61. (17, 'Tęcza Edward', 'Buska 6/22, 53-326 Wrocław', 513489175, '', 5110899702, 14052004844),
  62. (18, 'Dominika Majchrowska', 'Gajowicka 166/5a, 53-150 Wrocław', 574334579, 'szczesciewszczesciu@gmail.com', 1138999060, 50052706881),
  63. (19, 'Damian Majchrowski', 'Gajowicka 166/5a, 53-150 Wrocław', 570656897, '', 7570478021, 91102705799),
  64. (20, 'Marcin Spurtacz', 'Kwiatowa 20, 55-140 Żmigród', 663553975, 'med.korazon@gmail.com', 1223643735, 17021191936),
  65. (21, 'Tomek Komor', 'Różana 11a/10, 11-400 Wrocław', 888703196, 'k-m-r1@wp.pl', 3928443642, 18271119723),
  66. (22, 'Marek Janowski', 'Kowale ul Wieluńska 59', 713277981, 'marekj@e-systemy.com', 8389977444, 59102059171),
  67. (23, 'Monika Wiwulska', 'Kuźnicza 48/3 Wrocław', 717926673, 'swiatgosi2@gmail.com', 0, 96052301022),
  68. (24, 'Stafania Kowal', 'Krzywoustego 325/217 Wrocław', 713457643, 'iod@cte-i.pl', 0, 31070478879),
  69. (25, 'Tomasz Stroik', 'Wita Stwosza 3, 50-148 Wrocław', 605422363, 'tomasz.stroik@prominet.wroc.pl', 0, 81040227864),
  70. (26, 'Staefan Kim', 'Lelewela 1/9 Wrocław', 503995553, '', 0, 54052559999),
  71. (27, 'Helena Zybbi', 'Mielecka 12/5 Wrocław', 713382208, '', 0, 45112758661),
  72. (28, 'Roman Magielski', 'Nowy Targ 18/7 Wrocław', 713417646, '', 0, 48062067681),
  73. (29, 'Heniek Wąs', 'Obornicka 4/21 Wrocław', 503923485, 'katarzyna.talkowska-szewczyk@uwr.edu.pl', 0, 61080255935),
  74. (30, 'Izabela Wodecka', 'Powstańców Śl. 192/33 Wrocław', 713372482, '', 0, 74012640370),
  75. (31, 'Róża Wiśniewska', 'Rodzinna 10/8 Wrocław', 717158508, 'iod@wif.wroclaw.pl', 0, 28091514387),
  76. (32, 'Dariusz Tulewski', 'Rogowska 124/12 Wrocław', 71570804, '', 0, 18241782955),
  77. (33, 'Adam Maj', 'Rutkiewicz 1/8 Wrocław', 503843510, '', 0, 72090128274),
  78. (34, 'Kuba Benecki', 'Szczęśliwa 23/1 Wrocław', 508085265, '', 0, 74063009829),
  79. (35, 'Anna Besso', 'Szybowcowa 50/22 Wrocław', 501430875, 'biuro@domowanaprawatv.pl', 0, 46041751587),
  80. (36, 'Stanisław Zosiński', 'Sliczna 32/18 Wrocław', 713611771, '', 0, 66111204076),
  81. (37, 'Benedykt Widelski', 'Wejherowska 23/28 Wrocław', 609432005, '', 0, 80082788665),
  82. (38, 'Mirosław Milewski', 'Wietrzna 85, 53-024 Wrocław', 713398229, '', 0, 86031213174),
  83. (39, 'Jadwiga Stys', 'Zielińskiego 34/33 Wrocław', 713384815, '', 0, 76091271467),
  84. (40, 'Małgorzata Baranowska', 'Żelazna 78/45 Wrocław', 713381045, '', 0, 31013186023),
  85. (41, 'Ewa Helena Głos', 'Krucza 12/14 Wrocław', 793137755, '', 0, 54030205548),
  86. (42, 'Szymon Bobatów', 'ul. Wrocławska 5,  55-010 Żerniki Wrocławskie', 501484447, 'sajmonito@gmail.com', 8942546996, 84111378089),
  87. (43, 'Simon Bosz', 'ul. Wrocławska 119 a, 55-010 Radwanice', 501687087, 'hurt@mzcb.pl', 8951435061, 36102603470),
  88. (44, 'Paweł Biełous', 'ul. Świdnicka 5/12, 50-064 Wrocław', 603602690, 'bielous@o2.pl', 8971709188, 70021401096),
  89. (45, 'Artur Choynacki-Piotrowski', 'ul. Słonimskiego 14/7d 50-304 Wrocaw', 790389315, 'artur.choynackipiotrowski@viessmann.com', 0, 90051076033),
  90. (46, 'Piotr Wierzbicki', 'Siemianowicka 5/44 Wrocław', 792670706, 'wierzbp@airproducts.com', 0, 74062118553),
  91. (47, 'Wierzbicka', 'Siemianowicka 5/44 Wrocław', 603223460, '', 0, 60072329685),
  92. (48, 'Katarzyna Talkowska-Szewczyk', 'Jana Matejki 1 B/ 7, 50-333 WROCŁAW', 696013546, 'katarzyna.talkowska@vp.pl', 8982162871, 53010210554),
  93. (49, 'Susana Milla San Juan', 'Dembowskiego 40, Wrocław', 603602690, 'wrohome@wp.pl', 0, 29040688177),
  94. (50, 'Maja Lipnicka', 'Rynek 52 m 1 Wrocław', 601182836, 'majalipnicka@yahoo.com', 0, 79032103106),
  95. (51, 'Jacek Kowalski', 'ul. Karmelicka 100, 34-100 Wadowice', 501430875, 'octopus@si.pl', 5512563246, 22301386032),
  96. (52, 'Tomasz Mul', 'Inżynierska 12/3, Wrocław', 533611199, '', 0, 88010153233),
  97. (53, 'Radosław Karolczak', 'Piastów 12, Wrocław', 724510814, '', 0, 93013001131),
  98. (54, 'Marek Buba ', 'ul. Komuny Paryskiej 24-26/12, 50-451 Wrocław', 502175735, '', 0, 33082596170),
  99. (55, 'Dorota Nizińska ', 'ul Szybowcowa 16/39, 54-130 Wrocław', 505303840, 'dorota.nizinska@interia.pl', 0, 76090138343),
  100. (56, 'Magdalena de Burlet ', 'Rynek 52 m 14  Wrocław', 713550001, 'magdalena.de.burlet@gmail.com', 0, 20042518624),
  101. (57, 'Chuchla Marek ', 'Rynek 52 m 12 Wrocław', 713556955, 'urologia@mcz.pl', 0, 83010180715),
  102. (58, 'MAŁGORZATA MARIA PIEKIELNIAK', 'Rynek 52/6, 50-333 Wrocław', 600238155, 'iod@cte-i.pl', 0, 60020204769),
  103. (59, 'GRZEGORZ ADAM BORYSŁAWSKI', 'Rynek 52/8, Wrocław', 512621744, 'iod@lpsa.pl', 0, 73100808919),
  104. (60, 'JONATHAN STEFANOU', 'Rynek 52/1, Wrocław', 0, '', 0, 84030226474),
  105. (61, 'KRYSTYNA STEFANIAK', 'RYNEK 52 /2, Wrocław', 0, '', 0, 53021811045),
  106. (62, 'JAKUB KONRAD JANAS', 'Rynek 52/3, Wrocław', 0, '', 0, 83042704596),
  107. (63, 'WIOLETTA BUCZKOWSKA PAKOS', 'Rynek 52/7, Wrocław', 0, '', 0, 76042409882),
  108. (64, 'Adam Janowski', 'Inżynierska 12/3 Wrocław', 533611199, '', 0, 95030238482);
  109.  
  110. --
  111. -- Indeksy dla zrzutów tabel
  112. --
  113.  
  114. --
  115. -- Indeksy dla tabeli `klienci`
  116. --
  117. ALTER TABLE `klienci`
  118.   ADD PRIMARY KEY (`id`),
  119.   ADD KEY `nazwa` (`nazwa`);
  120.  
  121. --
  122. -- AUTO_INCREMENT dla zrzuconych tabel
  123. --
  124.  
  125. --
  126. -- AUTO_INCREMENT dla tabeli `klienci`
  127. --
  128. ALTER TABLE `klienci`
  129.   MODIFY `id` INT(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=103;
  130. COMMIT;
  131.  
  132. /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
  133. /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
  134. /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
  135.  
« Last Edit: April 05, 2024, 02:22:21 pm by samurat2000 »

ASerge

  • Hero Member
  • *****
  • Posts: 2240
See Processing non-user messages in your window in http://wiki.lazarus.freepascal.org/Win32/64_Interface

 

TinyPortal © 2005-2018