Вниз
Скачать: CL | DM;

EnumThreadWindows   Найти похожие ветки 

← →
Pasha L ©   (2005-11-02 19:49) [0]

Простите за наглость. Кто-нибудь. Объясните на примере, как пользоваться EnumThreadWindows


← →
Fay ©   (2005-11-02 20:17) [1]

BOOL CALLBACK EnumProc(
   HWND hwnd,
   LPARAM lParam)
{
   // Send a WM_CLOSE to destroy the window, because DestroyWindow
   // does not work across threads.

   SendMessage(hwnd, WM_CLOSE, 0, 0);
   return TRUE;
}

BOOL ConsoleCtrlHandler(
   DWORD dwCtrlType)
{
   if (dwCtrlType == CTRL_LOGOFF_EVENT && dwGuiThreadId != 0)
   {
       SetThreadDesktop(GetThreadDesktop(dwGuiThreadId));
       EnumThreadWindows(dwGuiThreadId, EnumProc, 0);
   }
   return FALSE;
}


← →
Pasha L ©   (2005-11-02 23:05) [2]

И что это вы мне написали


← →
Zeqfreed ©   (2005-11-02 23:57) [3]

Pasha L ©   (02.11.05 23:05) [2]

> И что это вы мне написали

Вам написали пример использования, насколько я понимаю..

function EnumProc(wnd : HWND; lParam : Cardinal) : Boolean;
begin
Form1.Memo1.Lines.Add(IntToStr(wnd));
Result := true;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Clear;
EnumThreadWindows(GetWindowThreadProcessId(HWND_DESKTOP), @EnumProc, 0);
end;


Вот мой вариант :)


← →
Pasha L ©   (2005-11-03 00:18) [4]

Спасибо большое


← →
GuAV ©   (2005-11-03 00:19) [5]

Zeqfreed ©   (02.11.05 23:57) [3]

> Вот мой вариант :)

Он, кстати, с ошибками.


← →
Pasha L ©   (2005-11-03 00:42) [6]

в чем они заключаются?


← →
GuAV ©   (2005-11-03 10:35) [7]

Во первых,

> BOOL CALLBACK EnumProc(


Т.е. нужно объявить эту функцию с директивой stdcall

Во вторых,

> : Boolean;

Это неверно, т.к. в оригинальном объявлении использован тип BOOL, имеющий размер 4 байта, а у Boolean - 1 байт. Ошибка скорее может проявится при возвращении значения False и то не всегда, но тем не мениее это ошибка.

При точном переводе объявление выглядит так:
function EnumProc(hwnd: HWND; lParam: LPARAM): BOOL; stdcall;

Однако я бы объявлял так:
function EnumProc(wnd: HWND; Param: LPARAM): DWORD; stdcall;
и возвращал бы 1 заместо true, 0 заместо false.
Это связано с тем, что в некоторых callback функциях идёт проверка на равенство сишному TRUE, которое равно 1, а не на любое ненулевое значение.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.035 c
2-1129298643
Zaletchik
2005-10-14 18:04
2005.11.20
Помогите с бинарными файлами.


1-1130331472
Mambo
2005-10-26 16:57
2005.11.20
Кодировка текста


9-1120747596
Kobik
2005-07-07 18:46
2005.11.20
проблема с DirectSound


3-1128673276
Kacnep
2005-10-07 12:21
2005.11.20
Последовательное открытие в АДОTABLE нескольких таблиц.


4-1127113502
Diane
2005-09-19 11:05
2005.11.20
Работа с Dialog Box из файла ресурсов




   Наверх