Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Новый участник


Сообщения: 2
Благодарности: 1

Профиль | Отправить PM | Цитировать


Всё, разобрался. Не надо было первичный поток приостанавливать. Может это и неправильно, но это работает.
Код: Выделить весь код
void __fastcall TMainForm::tvWindowsChange(TObject *Sender, TTreeNode *Node)
{    
        if (Node->Selected == false) return;
    param.hwnd = (HWND) Node->Data;
    StartUpdate();    
}
DWORD WINAPI ThreadProcGeneral (LPVOID lparam) {    
    TThreadParam *param = (TThreadParam *) lparam;
    DWORD error;        
    HANDLE currentThreadHandle = OpenThread (THREAD_ALL_ACCESS,
        FALSE, GetCurrentThreadId());
       TComponent *owner = param->owner;
                TLabeledEdit *lEdit =
                    (TLabeledEdit *) owner->FindComponent("leHandle");
    while (true) {
        
        HWND hwnd = param->hwnd;
        if (hwnd == NULL) {
            continue;
        }                 
        
        lEdit->Text = "0x" + IntToHex((int) hwnd, 8);    // вот тут уже не зависает                         
        SuspendThread (currentThreadHandle);
    }
    return 0;
}
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:44, 18-12-2011 | #2