[c++] Pobieranie tytułu okna

sinis

Użytkownik
Dołączył
Wrzesień 3, 2006
Posty
958
Chcę sobie napisać taki program co wyłącza wszytskie okna, które mają w nazwie (belce tytułowej) przeklęty napis "Tibia". Nie wiem tylko jak pobrać tytuł aktywnego okna do zmiennej char. Proszę o pomoc...
 

fl3a

Użytkownik
Dołączył
Marzec 12, 2005
Posty
538
Kod:
int GetWindowText(

    HWND hWnd,    // handle of window or control with text

    LPTSTR lpString,    // address of buffer for text

    int nMaxCount     // maximum number of characters to copy

   );
 

Mo4x

Były Moderator
Dołączył
Grudzień 26, 2005
Posty
704
Nie pisze dobrze w C++, ale tyle mogę podpowiedzieć:
GetForegroundWindow Function
GetWindowText Function

//Edit. fl3a mnie wyprzedzil o 7 minut (?!). Za dlugo sie zastanawiam zanim wysle post
<
 

sinis

Użytkownik
Dołączył
Wrzesień 3, 2006
Posty
958
thx za odpowiedzi

/Edit:
Uno picolo problemmo
29 D:Dev-Cppprogosymain.cpp initializer expression list treated as compound expression
takie badziewie mi wypisuje przy GetWindowText();

[ Dodano: 24-10-2006, 14:43 ]
Tak to napisałem:
Kod:
#include <windows.h>



/*  Declare Windows procedure  */

LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);



/*  Make the class name into a global variable  */

char szClassName[ ] = "WindowsApp";



int WINAPI WinMain (HINSTANCE hThisInstance,

                    HINSTANCE hPrevInstance,

                    LPSTR lpszArgument,

                    int nFunsterStil)



{

    HANDLE opoznienie;

    opoznienie = CreateEvent(0,TRUE,FALSE,"et");

    HWND uchwyt;

    char bufor[255];

    for(;;)

    {

           uchwyt = GetForegroundWindow();

           GetWindowText(uchwyt, bufor, 255);

           for(int chr=0;chr<255;chr++);

           {

                   if((bufor[chr]=='t') && (bufor[chr+1]=='i') && (bufor[chr+2]=='b') && (bufor[chr+3]=='i') && (bufor[chr+4]=='a'))

                   {

                                      SendMessage(uchwyt, WM_DESTROY, 0, 0);

                   }

           }

           WaitForSingleObject(opoznienie, 5000);

    }

    

    

    // OBSŁUGA OKNA :D

    HWND hwnd;               /* This is the handle for our window */

    MSG messages;            /* Here messages to the application are saved */

    WNDCLASSEX wincl;        /* Data structure for the windowclass */



    /* The Window structure */

    wincl.hInstance = hThisInstance;

    wincl.lpszClassName = szClassName;

    wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */

    wincl.style = CS_DBLCLKS;                 /* Catch double-clicks */

    wincl.cbSize = sizeof (WNDCLASSEX);



    /* Use default icon and mouse-pointer */

    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);

    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);

    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);

    wincl.lpszMenuName = NULL;                 /* No menu */

    wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */

    wincl.cbWndExtra = 0;                      /* structure or the window instance */

    /* Use Windows's default color as the background of the window */

    wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;



    /* Register the window class, and if it fails quit the program */

    if (!RegisterClassEx (&wincl))

        return 0;



    /* The class is registered, let's create the program*/

    hwnd = CreateWindowEx (

           0,                   /* Extended possibilites for variation */

           szClassName,         /* Classname */

           "Windows App",       /* Title Text */

           WS_OVERLAPPEDWINDOW, /* default window */

           CW_USEDEFAULT,       /* Windows decides the position */

           CW_USEDEFAULT,       /* where the window ends up on the screen */

           544,                 /* The programs width */

           375,                 /* and height in pixels */

           HWND_DESKTOP,        /* The window is a child-window to desktop */

           NULL,                /* No menu */

           hThisInstance,       /* Program Instance handler */

           NULL                 /* No Window Creation data */

           );



    /* Make the window visible on the screen */

    ShowWindow (hwnd, nFunsterStil);



    /* Run the message loop. It will run until GetMessage() returns 0 */

    while (GetMessage (&messages, NULL, 0, 0))

    {

        /* Translate virtual-key messages into character messages */

        TranslateMessage(&messages);

        /* Send message to WindowProcedure */

        DispatchMessage(&messages);

    }



    /* The program return-value is 0 - The value that PostQuitMessage() gave */

    return messages.wParam;

}





/*  This function is called by the Windows function DispatchMessage()  */



LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)

{

    switch (message)                  /* handle the messages */

    {

        case WM_DESTROY:

            PostQuitMessage (0);       /* send a WM_QUIT to the message queue */

            break;

        default:                      /* for messages that we don't deal with */

            return DefWindowProc (hwnd, message, wParam, lParam);

    }



    return 0;

}

i mam takie błędy (pod Dev-Cpp)
Kod:
25 D:Dev-Cppprogosyap666main.cpp name lookup of `chr' changed for new ISO `for' scoping 



23 D:Dev-Cppprogosyap666main.cpp   using obsolete binding at `chr'
zamiast pętli for wstawiłem while ale mam okno tibia choćby CMD ustawiłem tytuł tibia i nic :/
 
Do góry Bottom