Win: Text über den Bildschirm schreiben
-
- Beiträge: 13
- Registriert: 20.02.2011 16:51
Win: Text über den Bildschirm schreiben
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.
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
Mit einem StickyWindow das transparent und borderless ist (Somit "sieht" man kein Fenster), sollte es kein Problem sein...
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom
-
- Beiträge: 13
- Registriert: 20.02.2011 16:51
Re: Win: Text über den Bildschirm schreiben
Okay, benötige ich dafür die WIN API?
Re: Win: Text über den Bildschirm schreiben
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
Wie man allerdings ein Fenster unter Linux transparent bekommt, kann ich Dir nicht sagen...
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom
-
- Beiträge: 13
- Registriert: 20.02.2011 16:51
Re: Win: Text über den Bildschirm schreiben
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?
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?
- Mok
- BotHunter
- Beiträge: 1484
- Registriert: 26.12.2005 14:14
- Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit - Wohnort:
Re: Win: Text über den Bildschirm schreiben
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)
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
-
- Beiträge: 13
- Registriert: 20.02.2011 16:51
Re: Win: Text über den Bildschirm schreiben
Dann wirds wohl zeit dass ich mir die Vollversion kaufe.
Re: Win: Text über den Bildschirm schreiben
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.
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
)
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
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

PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom
- Mok
- BotHunter
- Beiträge: 1484
- Registriert: 26.12.2005 14:14
- Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit - Wohnort:
Re: Win: Text über den Bildschirm schreiben
Tipp: Lade die user32.dll in dein Programm, dort sind die API-Funktionen drinne.bastibasti hat geschrieben:Dann wirds wohl zeit dass ich mir die Vollversion kaufe.
Zuletzt geändert von Mok am 23.02.2011 23:30, insgesamt 1-mal geändert.
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl