Wolf Napisano Grudzień 4, 2019 Autor Zgłoś Udostępnij Napisano Grudzień 4, 2019 Jak przesłać zmienną char do innej aplikacji za pomocą sendmessage? Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Pride Napisano Grudzień 5, 2019 Zgłoś Udostępnij Napisano Grudzień 5, 2019 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 ;). Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Wolf Napisano Grudzień 5, 2019 Autor Zgłoś Udostępnij Napisano Grudzień 5, 2019 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); Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Pride Napisano Grudzień 5, 2019 Zgłoś Udostępnij Napisano Grudzień 5, 2019 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); Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Wolf Napisano Grudzień 5, 2019 Autor Zgłoś Udostępnij Napisano Grudzień 5, 2019 To wyrzuca w aplikacji wysyłającej "pamięć nie może być written". Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Pride Napisano Grudzień 5, 2019 Zgłoś Udostępnij Napisano Grudzień 5, 2019 Hmm to dziwne... U mnie wszystko dziala. Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Cipher Napisano Grudzień 7, 2019 Zgłoś Udostępnij Napisano Grudzień 7, 2019 Miałem coś takiego przy jednym programie że na Win 98 działał dobrze a na Win 2000 profesional wywalał mi właśnie taką komende. Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Wolf Napisano Grudzień 8, 2019 Autor Zgłoś Udostępnij Napisano Grudzień 8, 2019 A próbował ktoś wysyłać przez "WM_COPYDATA"? Jak to zrobić? Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.