Seite 1 von 2
Win: Text über den Bildschirm schreiben
Verfasst: 22.02.2011 17:18
von bastibasti
Hi,
unter Linux mache ich das mit xcat, allerdings gibt es unter Windows keine solche Library. Gibts ne einfache Möglichkeit einen Text über den Screen zu schreiben? (also über alle Anwendungen etc). Ein Fenster soll nach Möglichkeit nicht angezeigt werden.
Re: Win: Text über den Bildschirm schreiben
Verfasst: 22.02.2011 17:47
von Bisonte
Mit einem StickyWindow das transparent und borderless ist (Somit "sieht" man kein Fenster), sollte es kein Problem sein...
Re: Win: Text über den Bildschirm schreiben
Verfasst: 23.02.2011 14:35
von bastibasti
Okay, benötige ich dafür die WIN API?
Re: Win: Text über den Bildschirm schreiben
Verfasst: 23.02.2011 14:39
von Andesdaf
nö.
Code: Alles auswählen
EnableExplicit
Enumeration
#WIN
EndEnumeration
Enumeration
#TXT
EndEnumeration
If OpenWindow(#WIN, 0, 0, 100, 50, "hoppla", #PB_Window_ScreenCentered | #PB_Window_BorderLess)
TextGadget(#TXT, 0,0, 100, 50,"Text")
Repeat
Define iEvent.i = WaitWindowEvent()
Until iEvent = #PB_Event_CloseWindow
EndIf
Re: Win: Text über den Bildschirm schreiben
Verfasst: 23.02.2011 15:37
von Bisonte
Wie man allerdings ein Fenster unter Linux transparent bekommt, kann ich Dir nicht sagen...
Re: Win: Text über den Bildschirm schreiben
Verfasst: 23.02.2011 15:49
von bastibasti
Das Fenster ist unter Windows nicht transparent, sondern grau. hab versucht mit
TextGadget(#TXT, 0,0, 100, 50,"Text")
SetGadgetColor(#TXT, #PB_Gadget_BackColor, $000000)
SetGadgetColor(#TXT, #PB_Gadget_FrontColor, $FFFFFF)
aber dann ist der hintergrund schwarz, ich dachte immer 000000 ist bei Windows transparent?
Re: Win: Text über den Bildschirm schreiben
Verfasst: 23.02.2011 15:59
von Mok
Da du das ganze nur für Windows brauchst, kannst du einfach auf die API zurückgreifen (ich hoffe, das ist nicht weiter schlimm).
Code: Alles auswählen
hdc = GetDC_(GetDesktopWindow_())
text$ = "Hallo Welt!"
SetTextColor_(hdc,#Green)
SetBkColor_(hdc,#Red)
TextOut_(hdc,50,50,text$,Len(text$))
Repeat:Until GetAsyncKeyState_(27)
ReleaseDC_(GetDesktopWindow_(),hdc)
Re: Win: Text über den Bildschirm schreiben
Verfasst: 23.02.2011 17:10
von bastibasti
Dann wirds wohl zeit dass ich mir die Vollversion kaufe.
Re: Win: Text über den Bildschirm schreiben
Verfasst: 23.02.2011 17:14
von Bisonte
Also direkt auf den Desktop zeichnen ist wohl nicht das optimalste...
Das Fenster (den Hintergrund des Fensters) transparent zu kriegen hab ich mit RSBasics WinAPI-Snippets
folgendes zusammengeschustert.
Code: Alles auswählen
Procedure.i WindowTransparent(Window.i,Farbe.i)
If IsWindow(Window)
SetWindowColor(Window,Farbe)
SetWindowLongPtr_(WindowID(Window),#GWL_EXSTYLE,GetWindowLongPtr_(WindowID(Window),#GWL_EXSTYLE) | #WS_EX_LAYERED)
SetLayeredWindowAttributes_(WindowID(Window), Farbe, 0, 1)
EndIf
EndProcedure
Nur die Farbe bestimmen, z.B. RGB(255,0,255) und der Hintergrund wird auf die Farbe gesetzt.
Die Farbe selbst wird dann transparent dargestellt. Wobei man aufpassen musst, das egal was jetzt diese
Farbe im Fenster hat (Schrift, Images, Icons usw) auch transparent ist
Edit:
Ohne Vollversion, keine API ... (hab ich wohl überlesen

)
Re: Win: Text über den Bildschirm schreiben
Verfasst: 23.02.2011 21:50
von Mok
bastibasti hat geschrieben:Dann wirds wohl zeit dass ich mir die Vollversion kaufe.
Tipp: Lade die user32.dll in dein Programm, dort sind die API-Funktionen drinne.