Атом как таковой это число (16 bit Integer). Это число соответствует строке. Набор атомов собирается в таблицу (atom table). Система обеспечивает несколько таблиц атомов для разных задач. По типу доступа их два типа:
Среди глобальны таблиц есть системные, которые недоступны непосредственно из приложений, но они используются косвенно через функции Win32 API. Например, вызывая функцию RegisterClass мы добавляет системный атом. Подробнее "Шаг 39 - RegisterClass()". Давайте напишем программу, которая будет скидывать содержание атомов в текстовый файл. Но учите то, что атомы могут быть в формате как обычной строки, так и строки в виде числа, например:
#123
Я буду выбирать только строки. Итак, программа.
#include "stdafx.h" #include "windows.h" #include "iostream.h" #include "fstream.h" void main() { ofstream ofs("test.txt"); int newatom=GlobalAddAtom("Hello Atom"); for (int x=0;x<100000;x++) { char buffer[255]; UINT a=GlobalGetAtomName(x,(char*)&buffer,sizeof(buffer)); if (a!=0) { if (buffer[0]!='#') ofs << buffer << endl; } } ofs.close(); }
Очень хорошо. Смотрим что там у нас в файле. А там много чего. Вот, например наш атом там.
...... inThreadWndName erver Window Hello Atom CAddressEditBox_This annelWnd CAddressBand_This ......
А вот вообще чудо - Delphi!.
...... Open Message Window bcheckMonitor DelphiFFFB2A81 ControlOfs00400000FFFB21C9 MAINICON WndProcPtr00400000FFFB21C9 ......
И чего оно там делает интересно.