Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получение заголовка активного окна 
:(
    Опции темы
Interpersuk
Дата 1.11.2011, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 1.11.2011

Репутация: нет
Всего: нет



Доброго время суток.

Прошу извинить за нубский вопрос. Начал изучать winAPI. Возник вопрос как мне в программе записывать название заголовка активного окна. Ниже привожу код. Проблема в том, что в показывается только тот заголовок нашего окна и все. 


Код

#include <windows.h>
static TCHAR Text[250];
static TCHAR mybyf[100];
 HWND hWnd;
// ф-ция оконной процедуры. - обрабатывает сообщения из виндовса)

LRESULT CALLBACK myWndProc(HWND hWindow, UINT msg, WPARAM wParam, LPARAM lParam)
{
    if ( msg== WM_ACTIVATEAPP)
    {
        hWnd = GetForegroundWindow();

GetWindowText(hWnd,Text,1000);    
    PAINTSTRUCT ps;
    const HDC hDC = BeginPaint(hWindow,&ps);
    RECT rect;
    GetClientRect(hWindow,&rect);
    DrawText(hDC,Text,-1,&rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
    EndPaint(hWindow,&ps);
    return 0;
    }
 

 
Код



  else if (msg==WM_DESTROY)
  {
    PostQuitMessage(0);
    return 0;
  }
  return DefWindowProc(hWindow,msg,wParam,lParam);
}

// main

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{


  const static TCHAR appName[] = TEXT("название окна ");

  // инфа об окне! "класс окна"
  WNDCLASSEX myWin;
  myWin.cbSize = sizeof(myWin);
  myWin.style = CS_HREDRAW | CS_VREDRAW;
  myWin.lpfnWndProc = myWndProc;
  myWin.cbClsExtra = 0;
  myWin.cbWndExtra = 0;
  myWin.hInstance = hInstance;
  myWin.hIcon = 0;
  myWin.hIconSm  = 0;
  myWin.hCursor = 0;
  myWin.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
  myWin.lpszMenuName = 0;
  myWin.lpszClassName = appName;
  //Register класса окна
  if (!RegisterClassEx(&myWin)) return 0;

  // создаем окно

  const HWND hWindow = CreateWindow(
    appName,
    appName,
    WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    0,
    0,
    hInstance,
    0);

  // отображаем окно 

  ShowWindow(hWindow,iCmdShow);
  UpdateWindow(hWindow);
  {
    MSG msg;
    while(GetMessage(&msg,0,0,0))
    { 
      TranslateMessage(&msg);
      DispatchMessage(&msg);
    }
    return (int)msg.wParam;
  }
}


PM MAIL   Вверх
Dem_max
Дата 2.11.2011, 08:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 16
Всего: 39



создай в приложении таймер SetTimer на допустим 1 сек, и в событии от таймера делай
Код

hWnd = GetForegroundWindow();
GetWindowText(hWnd, .......);




--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
Andrey44
Дата 2.11.2011, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 8
Всего: 26



Код

static TCHAR Text[250];

....................................


GetWindowText(hWnd,Text,1000);// why is 1000
GetWindowText(hWnd,Text,_countof(Text));



--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.1084 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.