Автор
|
Тема: hwnd активного окна
|
server_mouse |
опубликован 08-08-2001 10:18 MSK
Hi ALL! Как получить сабж? Т.е. окно с которым в данный момент работает юзер. Хочется мне в его заголовок написать от себя...
|
server_mouse
|
опубликован 08-08-2001 10:29 MSK
Кстати такой вот код не работает: CString s; s="MyString"; SetWindowText(GetActiveWindow(),(LPCTSTR)s);Почему?
|
OlegO
|
опубликован 08-08-2001 11:02 MSK
Потому что: However, SetWindowText cannot change the text of a control in another application.
|
talex
|
опубликован 08-08-2001 11:13 MSK
Все ок, только надо использовать не GetActiveWindow, a GetForegroundWindow. Разница описана в MSDN(the question is in thread). |
server_mouse
|
опубликован 08-08-2001 11:26 MSK
Интересно, а почему тогда работает следующий код: { HWND hw; if(NULL!=(hw=::FindWindow("#32770","PrTst"))) SetWindowText(hw,(LPCTSTR)s); }PrTst -- мой маленький тестовый диалог. ;-) IMHO винда особым образом передаёт параметры SetWindowText, через границу процессов. В тоже время SetDlgItemText() уже не работает, хотя мы ведь можем получить хэндл GetDlgItem() и воспользоваться всё той же SetWindowText()... Но что-то я отвлёкся. Какие ещё мысли будут? ЗЫ Видел я CD-player который в заголовок текущего окна выводил название текущей композиции. ;-) |
talex
|
опубликован 08-08-2001 11:31 MSK
OlegO прав но только если он использует void CWnd::SetWindowText( LPCTSTR lpszString ) в своем классе, a надо API ф-цию: void SetWindowText( LPCTSTR lpszString );, но при условии если у нас есть HWND окна то мы можем. По моему, должно получиться. да, забил сказать что я вызывал одну ф-цию из DLL/EXE, i а она меняла имя определенного/любого, выбранного окна, но HWND окна я брал по другому(используя ф-ции EnumWindows, EnumWindowsProc).if(hwnd) { ::SetWindowText(hwnd, "Debil!!!"); AfxMessageBox("XAXAXA"); textLength = ::GetWindowTextLength(hwnd); } |
server_mouse
|
опубликован 08-08-2001 11:35 MSK
Сенкс всем, в особености talex. Всё заработало с GetForegroundWindow. |
talex
|
опубликован 08-08-2001 11:51 MSK
незачно главное что получилось:), главное чтобы ты понял разницу между ф-циями. а ты понял? если нет пиши, но в MSDN неплохо написано. |