Skocz do zawartości

Przesyłanie zmiennych


Recommended Posts

Napisano

1.Najpierw musisz zdobyc uchwyt okna(aplikacji...) do ktorej bedziesz wysylal swoja zmienna. Tworzysz sobie zmienna typu HWND i za pomoca funkcji FindWindow("klasaokna", NULL), ktora zwraca uchwyt do okna, ktorego nazwa klasy to pierwszy parametr, a nazwa okna to drugi parametr. Potem lecimy dalej...

2.Maja juz uchwyt okienka mozesz do niego wysylac rozne komunikaty. Tworzysz sobie teraz jakas zmienna, ktora chcesz przeslac. Teraz czas na wyslanie :) SendMessage(uchwyt, WM_COMMAND, (WPARAM)666, (LPARAM)&naszazmienna); . Chyba nie trzeba tlumaczyc :P Jako wparam wysylasz "znak rozpoznawczy", a jako lparam adres zmienej.

3.W programie, do ktorego wysylasz zmienna, musisz obsluzyc w komunikacie WM_COMMAND (lub w innym, zalezy, jaki wybrales w sendmessage). Sprawdzasz, czy wParam == 666, i jesli tak, to bawisz sie swoja zmienna :). Aha! Pamietaj, ze masz jej adres, wiec musisz sobie stworzyc wskaznik na jakis typ i przypisac mu adresik, np: int *cos; cos = (int*)lParam .

P.S. Jestem poczatkujacy i pisalem z pamieci, wiec moze nie wszystko dzialac. Wiec jakby co, nie miej do mnie zalu ;).

Napisano

Po odebraniu w ten sposób:

LRESULT CALLBACK HKProc(HWND HKhWnd,UINT iMsg,WPARAM wParam,LPARAM* lParam)
{
        switch(iMsg)
        {
                case WM_USER+1:
                {
                        char popis;
                        popis = (char)*lParam;

Zmienna popis jest równa 0.

No i jeszcze wysyłanie:

SendMessage(uchwyt,WM_USER+1,0,(LPARAM)&MessageText);
Napisano

Fiuu przepraszam Cie bardzo! Po kilkunasto minutowej meczarni doszedlem do wniosku jak przeslac tekst :D! Moze ci sie przyda. Oto kod(po wiecej szczegolow poczytaj o funckjach Atom*):

To w aplikacji, do ktorej slesz:

case WM_COMMAND:
if(wParam == 666)
{
    LPTSTR tekst;
    GlobalGetAtomName((ATOM)lParam, tekst, 20);
    strcat(tekst, "\0");
    MessageBox(hwnd, tekst, "Error666", MB_OK);
}
break;

A to w aplikacji wysylajacej:

    HWND hwnd;
    ATOM atomek;
    LPTSTR tekst;
    
    hwnd = FindWindow("hhh", NULL);
    tekst = "Czesc!";
    atomek = GlobalAddAtom(tekst);
    
    SendMessage(hwnd, WM_COMMAND, (WPARAM)666, (LPARAM)atomek);

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wkleiłeś zawartość bez formatowania.   Usuń formatowanie

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Utwórz nowe...