ggelet!
Igaz nem linux alatt kell OSD, hanem Windows alatt, de remelem azert nem feszitenek keresztre :}} Szoval arrol lenne szo, hogy irtam egy kis tavvezerlo programot szamitogephez (Serial portra kotott infra szenzortol jovo jelet ertelmezi, es hajtja vegre a megfelelo parancsot). Ennek egyik resze a hang allithatosaga. Mikor le/fel huzogatom a hangot, szeretnem a kepernyon is megjeleniteni, hogy eppen milyen szinten all. Ezt OSD szeru modon szeretnem, azaz minden alkalmazas folott jelenjen meg olyan formaban, hogy "Volume xx%". Eloszor probaltam ugy, hogy megjelenitek egy form-ot keret nelkul transzparens hatterrel, es erre tettem a szoveget. Ennel bezavar ha mas olways on top alkalmazas is van, meg a taskbar ikonnal is kellett muveszkedni. Lenyeg hogy nem az igazi ez a megoldas. Aztan arra gondoltam, hogy jo lenne valami Windows fuggvenyt hasznalni, amivel tudok direktbe a kepernyore irni. Csak nem igazan ertek ilyen szintu grafikahoz (Igazabol a fejlesztoi kornyezetben torteno drag and drop utan megall a tudomanyom :})
Probaltam olyat, hogy csinalok Canvas-t, transparens hatterrel, es arra teszem a szoveget, de torolni csak az InvalidateRect(0, nil, False) parancsal sikeredett, ami az egesz kepernyot frissiti, igy hang allitasakor (ugy 30 ms-onkent jon uj parancsal) pillog egyet a kepernyo.
Tehat ami kellene: Kiirni a kepernyore minden ablak fole csak egy szoveget, hogy "Volume 56%", aztan ha tovabb nyomom a gombot, akkor ezt atirni "Volume 57%"-ra.
Ha tudna valaki ebben segiteni azt nagyon szepen megkoszonnem. Esetleg egy Silva Black-et is kaphat :}}
PS: Delphi-ben irtam a progit, bar Windows fuggveny hasznalatkor tulajdonkeppen lenyegtelen.
Elore is koszonom szepen a segitseget
- 3713 megtekintés
Hozzászólások
-> prog.hu :) Szerintem...
- A hozzászóláshoz be kell jelentkezni
Koszonom a tippet. Regisztraltam es felvetettem ott is gondom. Remelem valahonnan kapok egy jo megoldast.
- A hozzászóláshoz be kell jelentkezni
én használok win alatt egy sound control nevű progit, ami pl. hangerőt állítgat hotkey-re, és tud OSD-t valahogy így: http://www.reallyeffective.co.uk/images/sc_screens4.gif
Szóval ha a progid megoldja azt, hogy egy keypress event-et okoz távirányító jelre, akkor akár ez is jó lehet.
x
- A hozzászóláshoz be kell jelentkezni
Tudok event-et generalni. A KMPlayer-t ugy kezelem, hogy szimulalom a billentyuzetet, nem allok neki uzeneteket kuldozogetni az ablaknak. De szeretnem programon belul megoldani az OSD-t. Veletlenul nincs meg a forrasa a proginak? :} Amugy egyenlore a kovetkezo megoldas mellett dontottem:
Szoveg kiirasa:
with TCanvas.Create do
try
Handle :=GetDc(0);
SetBkmode(Handle, Transparent);
Font.Name := 'Tahoma';
Font.Size := 40;
Font.Style := [fsBold];
Font.Color := clBlack;
TextOut((Screen.Width - TextWidth(Msg)) div 2 - 2, Screen.Height - TextHeight(Msg) - 22, Msg);
Font.Color := clLime;
TextOut((Screen.Width - TextWidth(Msg)) div 2, Screen.Height - TextHeight(Msg) - 20, Msg);
finally
Free;
end;
Szoveg torlese:
OSD := CreateWindowEx(WS_EX_TRANSPARENT + WS_EX_TOPMOST + WS_EX_APPWINDOW, 'static', '',WS_POPUP, (Screen.Width - 400) div 2, Screen.Height - 100, 400, 100,Application.Handle, 0, 0, nil);
ShowWindow(OSD, SW_SHOW);
ShowWindow(OSD, SW_HIDE);
Destroywindow(OSD);
Meg ki kell probaljam, hogy ugy mukodik-e elesben ahogy en szeretnem. Elvileg igy nem frissiti a teljes kepernyot torleskor, csak azt a negyzetet ahol megjelenik a szoveg.
Hetfon meg tudom mondani, hogy hogyan mukodik :}
- A hozzászóláshoz be kell jelentkezni
Snarl ... ez nem lenne jo neked?
- A hozzászóláshoz be kell jelentkezni
Ez egesz pofas kis dolognak tunik. Mar csak arra kellene rajonni hogyan tudom ezt osszemuteni az en Delphi-is progimmal
- A hozzászóláshoz be kell jelentkezni