![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Доступ к чужим окнам [D4, Win95/98]
Cobalt © (2002-02-27 15:19:00)Получил хэндл
SysListViewрабочего стола, пытаюсь получить его элементы, но ничего не получается:
Посылаю сообщение окну, в рез-те: Explorer совершил недопустимую операцию и будет закрыт.
VuDZ (2002-03-02 15:05:00) [1]блин. ну и ммесиво же получилось, а я не заметил :(
Cobalt (2002-03-02 08:29:00) [2]Ошибка была из-за изолированности адресных процов - я в сообщении окну указывал на свою область памяти.
Спасибо.
VuDZ (2002-02-27 15:44:00) [3]вот, разбирайся:
#include "stdafx.h" #include #include #include #include #include #include int main(int argc, char* argv[]){ TCHAR* pLoc = _wsetlocale(LC_ALL, TEXT("Russian")); LPMALLOC pMalloc = NULL; SHGetMalloc(&pMalloc); IShellFolder* pshf = 0; if (SUCCEEDED(SHGetDesktopFolder(&pshf))) { IEnumIDList* penumIDList; if (SUCCEEDED(pshf->EnumObjects(NULL, SHCONTF_NONFOLDERS | SHCONTF_FOLDERS | SHCONTF_INCLUDEHIDDEN , &penumIDList))) { LPITEMIDLIST pidl = 0; while (S_FALSE != penumIDList->Next(1, &pidl, NULL)) { STRRET strret; strret.uType = STRRET_WSTR; if (SUCCEEDED(pshf->GetDisplayNameOf(pidl, SHGDN_NORMAL, &strret))) { TCHAR szDisplayName[MAX_PATH]; StrRetToBuf(&strret, pidl, szDisplayName, sizeof(szDisplayName)); char oemBuffer[MAX_PATH]; CharToOem(szDisplayName, oemBuffer); printf("%s\n", oemBuffer); } pMalloc->Free(pidl); } penumIDList->Release(); } pshf->Release(); } pMalloc->Release(); return 0;}
и в SDK есть пример EnumDesk, но с ним очень долго надо разбираться