Point() in anderen Fenstern?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Sauer-RAM
Beiträge: 326
Registriert: 13.04.2009 16:22
Computerausstattung: Lenovo ThinkPad X230t Convertible
Wohnort: Haslach i. K.

Point() in anderen Fenstern?

Beitrag von Sauer-RAM »

Hi,
ich habe vor einen Geschwindigkeitsmesser zu Programmieren: Eine Webcam die das Bild in einem Fenster anzeigt wird auf die Straße vor unserem Haus gerichtet. Mit Point() ermittle ich die Farben zweier Punkte auf der Straße, die die vorbeifahrenden Austos auf jeden Fall passieren müssen. Ab einer bestimmten Änderung der Farbe, beginnt ein Timer und wartet darauf, das das Auto den zweiten Punkt passiert. Anhand der Zeit zwischen den Berührungen ermittelt mein Programm dann die Geschwindigkeit, die Länge und anhand der Farbe die Farbe des Autos.
Ich wollte mal wissen ob das geht.
Also Point() in einem fremden Fenster.
Danke schonmal
"Bildung kommt vom Bildschirm und nicht vom Buch, sonst hieße es ja Buchung."
Dieter Hildebrandt
"Bildung ist Das, was übrig bleibt, wenn man alles was man in der Schule gelernt hat, vergisst. "
Albert Einstein
Christian+
Beiträge: 213
Registriert: 13.07.2008 10:05
Computerausstattung: Windows 8.1 Pro
AMD Phenom II X4 955 @ 3.2 GHz
4GB RAM
NVIDIA GeForce GTX 660

Re: Point() in anderen Fenstern?

Beitrag von Christian+ »

Ich weiß nicht ob Point in anderen Fenstern geht ist auf jeden Fall denke ich etwas komplizierter.
Du musst ja ziemlich schnell viele Bilder hintereinander prüfen schon mal daran gedacht das Bild direkt von der Webcam zu holen nicht über ein anderes Fenster und dann in PureBasic auszuwerten ist denke ich am einfachsten. Codes um ans Bild einer Webcam zukommen müsste es im Forum geben.
mfg Christian+
Windows 8.1 Pro 64Bit | AMD Phenom II X4 955 @ 3.2 GHz | 4GB RAM | NVIDIA GeForce GTX 660
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Re: Point() in anderen Fenstern?

Beitrag von Fluid Byte »

Point() funktioniert nicht außerhalb der PB Umgebung aber wenn du dir per API die DC holst kannst du den Befehl weiter nutzen:

Code: Alles auswählen

RunProgram("mspaint")
Delay(500)
hwndPaint = FindWindow_("MSPaintApp",0)

OpenWindow(0,0,0,640,480,"void",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)

hdc = StartDrawing(WindowOutput(0))
hdcPaint = GetDC_(hwndPaint)
BitBlt_(hdc,0,0,640,480,hdcPaint,0,0,#SRCCOPY)
For i=1 To 10
  Debug Point(Random(640),Random(480))
Next
ReleaseDC_(hwndPaint,hdcPaint)
StopDrawing()

While WaitWindowEvent() ! #PB_Event_CloseWindow : Wend
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
Sauer-RAM
Beiträge: 326
Registriert: 13.04.2009 16:22
Computerausstattung: Lenovo ThinkPad X230t Convertible
Wohnort: Haslach i. K.

Re: Point() in anderen Fenstern?

Beitrag von Sauer-RAM »

Danke erstmal für die Antwort. Aber was heisst DC Gleichstrom :mrgreen: ? Und weisst du ob das auch auf 98 geht?
"Bildung kommt vom Bildschirm und nicht vom Buch, sonst hieße es ja Buchung."
Dieter Hildebrandt
"Bildung ist Das, was übrig bleibt, wenn man alles was man in der Schule gelernt hat, vergisst. "
Albert Einstein
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Point() in anderen Fenstern?

Beitrag von Kaeru Gaman »

das ist der DeviceContext, der "Ausgabekanal", ein Objecthandle für die Ausgabe,
so was ähnliches oder das gleiche, wie von XXXOutput() bei StartDrawing(XXXOutput()) zurückgegeben wird.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Re: Point() in anderen Fenstern?

Beitrag von Fluid Byte »

Sauer-RAM hat geschrieben: Und weisst du ob das auch auf 98 geht?
Die API-Funktionen sind alle Win98 kompatibel.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
Sauer-RAM
Beiträge: 326
Registriert: 13.04.2009 16:22
Computerausstattung: Lenovo ThinkPad X230t Convertible
Wohnort: Haslach i. K.

Re: Point() in anderen Fenstern?

Beitrag von Sauer-RAM »

Fluid Byte hat geschrieben: Die API-Funktionen sind alle Win98 kompatibel.
Bei meinem nicht. es geht kein beep(), alle Befehle mit der Auslagerungsdatei oder dem Arbeitsspeicher und Console im Vollbildmodus öffnen. Viel mehr hab ich nicht probiert.
"Bildung kommt vom Bildschirm und nicht vom Buch, sonst hieße es ja Buchung."
Dieter Hildebrandt
"Bildung ist Das, was übrig bleibt, wenn man alles was man in der Schule gelernt hat, vergisst. "
Albert Einstein
Benutzeravatar
Kurzer
Beiträge: 1617
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Re: Point() in anderen Fenstern?

Beitrag von Kurzer »

Beep_ kommt doch in dem Beispiel gar nicht vor. :?
Ist doch ziemlich offensichtlich, daß Fluid Byte die API Funktionen seines Beispiels meint. Immerhin hattest du gefragt, ob das Beispiel auch auf Win98 läuft.

Bild
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Re: Point() in anderen Fenstern?

Beitrag von Fluid Byte »

Fail.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
Kurzer
Beiträge: 1617
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Re: Point() in anderen Fenstern?

Beitrag von Kurzer »

Oh echt? Hmm, machte auf mich absolut den Eindruck, daß Du die API-Aufrufe Deines Beispiels meintest.
Da sieht man wieder, die menschliche Kommunikation ist nicht frei von Mißverständnissen. :wink:
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
Antworten