Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Получение заголовка активного окна


Автор: Interpersuk 1.11.2011, 23:10
Доброго время суток.

Прошу извинить за нубский вопрос. Начал изучать 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;
  }
}


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

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


Автор: Andrey44 2.11.2011, 11:28
Код

static TCHAR Text[250];

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


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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)