Nadawanie koloru TPanel innej aplikacji

Odpowiedz Nowy wątek
2011-08-20 20:38
User322
0

Cześć,

Chciałbym zmienić kolor kompnentu TPanel innej aplikacji z poziomu swojego programu.

**

SendMessage(uchwyt_TPanel_innego_okna.handle, WM_POLECENIE, 0, clRed);

**

Szukałem odpowiedniej funkcji, lecz nie udało mi się dokopać do czegoś co by działało.
Macie może jakieś pomysły ?

Pozostało 580 znaków

2011-08-20 22:07
0

A po co by miał windows wysyłać komunikat 'zmiana koloru' ?!

Chyba tak nie pójdzie, spróbuj z podmianą w pamięci (lub w EXE).


Nie pisz do mnie PM o czymś co nie dotyczy bezpośrednio mnie. | Nie rozmawiaj ze mną jeśli brak Ci kultury (wystarczy że mi brakuje) | Nie jestem zły, jestem po prostu zły.

Pozostało 580 znaków

2011-08-20 22:25
User322
0

Nie mogę ingerować w exe, ponieważ zmiana koloru ma nastąpić w zależności od statusu aplikacji testującej.
Jeśli chodzi o pamięć to nie opłaca się aż tak zagłębiać.

Aplikacja zewnętrzna:
Statusy jakie może przybrać panel (TPanel):

  1. Adjust [żółty];
  2. Pass [zielony];
  3. Fail [czerwony]

W momencie kiedy pojawia się status Pass [zielony] chcę nadać mu kolor żółty, ponieważ w tym momencie test zaczyna moja aplikacja. W przypadku, gdy w mojej aplikacji wynik testu też będzie Pass - nadam status zewnętrznej aplikacji z powrotem Pass [zielony] - status zewnętrznej aplikacji jest uzależniony od mojej.

Pobieram tekst z TPanel za pomoca WM_GETTEXT, która jest w timerze, ale potrzebuję jeszcze wysłać kolor - o ile to możliwe.

Pozostało 580 znaków

2011-08-20 22:36
0

Komunikatem na pewno się nie da. Nie lepiej zeby twoja aplikacja pokazywała w swoim oknie wynik? .


Nie pisz do mnie PM o czymś co nie dotyczy bezpośrednio mnie. | Nie rozmawiaj ze mną jeśli brak Ci kultury (wystarczy że mi brakuje) | Nie jestem zły, jestem po prostu zły.

Pozostało 580 znaków

2011-08-20 22:50
User322
0

Tak, pokazuje wynik tylko....

W pracy są różni ludzie, większość jak zobaczy Pass [zielony] odłącza kable komunikacyjne i zapomina, że jeszcze jedna aplikacja będzie testowała, tym samym przerywając działanie mojej aplikacji, która nie będzie już miała połączenia z urządzeniem. Dlatego myślę, że dobrym rozwiązaniem było by "zabranie im tego zielonego" i wstawienie dalej "żółtego", żeby po prostu dalej wiedzieli, że coś jest testowane. Takie zabezpieczenie :)

Ale hm. Skoro się nie da, to trudno, wymyślę coś innego.

Pozostało 580 znaków

2011-08-20 22:53
Rev
0

No wiesz, to nie tak, że się nie da. Być może nie da się zrobić tego prostym komunikatem, ale np. modyfikując pamięć albo wywołując jakąś funkcję z runtime tamtej aplikacji może się udać. Ale to jest grubszy temat.


Pozostało 580 znaków

2011-08-20 22:55
0

A nie możesz w inny sposób, np. po przez wypełnienie tego panela jakimś kolorem, lub narysowania na nim jakieś obrazka ostrzegającego itp ? Czy raczej nie możesz zasłonić tego co jest na tym panelu ? I czy w ogóle zawiera coś ten Panel ? Bo jak nie to po prostu wypełnij go tym żółty kolorem.Mam na myśli tutaj klasę TCanvas.

edytowany 2x, ostatnio: Golden_Mind, 2011-08-20 23:00

Pozostało 580 znaków

2011-08-20 23:06
User322
0

Ten panel zawiera tylko Caption:
"Adjust" kolor panelu żółty - podczas testu
"Pass" kolor panelu zielony - koniec test, wynik pozytywny
"NG" kolor panelu czerwony - koniec test, wynik negatywny

Mogę go zasłonić, napis też można canvas-nąć na nim, tylko czy przy następnym teście kolejnego urządzenia ten panel zostanie odświeżony, czy dalej zakryty canvasem ?
W sumie to nie jest głupi pomysł... i chyba z tym pokombinuje.

Pozostało 580 znaków

2011-08-20 23:11
0

Zawsze możesz wrzucić to w pętlę.

edytowany 2x, ostatnio: Golden_Mind, 2011-08-20 23:21

Pozostało 580 znaków

2011-08-21 18:22
0

Może okienko, które będzie zawsze na wierzchu o wyglądzie tego panelu?

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0