|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
kay2016
Anmeldungsdatum: 22.11.2014 Beiträge: 17
|
Verfasst am: 08.12.2014, 22:04 Titel: avi video Datei abspielen lassen |
|
|
Wie kann ich aktuell avi Video Dateien mit Ton in einem neuem Fenster abspielen lassen ?
Hintergrund ist die Planung zu meinem Frage-Antwort-Spiel aus folgenden Thread:http://forum.qbasic.at/viewtopic.php?t=8549
Der Spieler soll die Möglichkeit haben via Tastendruck (im Spielefenster quasi Konsole) folgendes zu steuern, während das Video (in einem zweitem Fenster) läuft:
F1 = Pause
F2 = Beenden
Wenn man das Video in die Konsole integrieren könnte, wäre das natürlich Hammer aber ich weiss nicht ob das überhaupt möglich ist.
[/url] |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1211 Wohnort: Ruhrpott
|
Verfasst am: 09.12.2014, 04:00 Titel: |
|
|
Hallo kay2016
Meinst du etwas in dieser Art? Code: | #Include "windows.bi"
#include "win\tlhelp32.bi"
Declare Sub TastenSim(taste As String = "")
Type IINPUT
itype As Integer
Union
mi As MOUSEINPUT
ki As KEYBDINPUT
hi As HARDWAREINPUT
End Union
End Type
Dim As Integer pid
Dim As IINPUT ip
Dim As HWND hWndDiesesFenster, hWndVLC
Dim As LPDWORD prozess
Dim As HANDLE snapshothandle
Dim As PROCESSENTRY32 prozessantwort
Dim As String g
hWndDiesesFenster = GetForegroundWindow()
'fensterhandle des VLC-players ermitteln
snapshothandle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0) 'handle für systemschnappschuß erstellen
prozessantwort.dwSize = SizeOf(prozessantwort) 'größe der datenstruktur für antwort übergeben
Process32First(snapshothandle,@prozessantwort) 'ersten prozesshandle suchen (ist SYSTEM IDLE PROCESS)
Do While Process32Next(snapshothandle, @prozessantwort) 'alle prozesse durchsuchen
If LCase(prozessantwort.szExeFile) = "vlc.exe" Then 'prozess gehört zum VLC-player
pid = prozessantwort.th32ProcessID 'zugehörige prozess-ID
hWndVLC = GetWindow(FindWindow(0,0), GW_HWNDFIRST) 'erstes fensterhandle
Do
hWndVLC = GetWindow(hWndVLC,GW_HWNDNEXT) 'nächstes fensterhandle
GetWindowThreadProcessId(hWndVLC, @prozess) 'prozess-ID des fensters ermitteln
If pid = prozess Then 'fenster gehört zum gesuchten prozess
Exit Do, Do 'suche beenden
EndIf
Loop While hWndVLC
EndIf
Loop
CloseHandle(snapshothandle) 'ressourcen freigeben
If hWndVLC = 0 Then
Print "FEHLER: Zielfenster nicht verfuegbar"
Sleep
End
EndIf
Print "F1 = Pause/weiter"
Print "F2 = Beenden"
Do
g = InKey
Select Case g
Case Chr(255,59) 'F1
SetForegroundWindow(hWndVLC) 'VLC-player in den vordergrund holen
Sleep 100
TastenSim(" ") 'druck auf 'SPACE' simulieren ( = pause/weiter)
SetForegroundWindow(hWndDiesesFenster) 'konsolenfenster in den vordergrund
Sleep 100
Case Chr(255,60) 'F2
End
End Select
Loop
Sub TastenSim(taste As String = "")
Dim As IINPUT ip
Dim As String ut
Dim As UByte ta
ta = Asc(UCase(Right(taste,1))) 'taste als großbuchstabe
If Len(taste) > 1 Then
ut = LCase(Left(taste,InStr(taste, Any " +") - 1)) 'umschalttaste isolieren
Else
ut = "" 'keine umschalttaste
EndIf
ip.itype = INPUT_KEYBOARD
With ip.ki
.wScan = 0
.dwFlags = 0
If ut <> "" Then
Select Case ut 'umschalttaste drücken
Case "shift"
.wVk = VK_SHIFT
Case "alt"
.wVk = VK_MENU
Case "altgr"
.wVk = VK_RMENU
Case "ctrl"
.wVk = VK_CONTROL
End Select
SendInput(1,Cast(LPINPUT,@ip),SizeOf(ip))
EndIf
.wVk = ta
SendInput(1,Cast(LPINPUT,@ip),SizeOf(ip)) 'taste drücken
.dwFlags = KEYEVENTF_KEYUP
SendInput(1,Cast(LPINPUT,@ip),SizeOf(ip)) 'taste loslassen
If ut <> "" Then
Select Case ut 'umschalttaste loslassen
Case "shift"
.wVk = VK_SHIFT
Case "alt"
.wVk = VK_MENU
Case "altgr"
.wVk = VK_RMENU
Case "ctrl"
.wVk = VK_CONTROL
End Select
SendInput(1,Cast(LPINPUT,@ip),SizeOf(ip))
EndIf
End With
End Sub
| Dieses Sniplet ist für eine Zusammenarbeit mit dem VLC-Player geschrieben, kann aber leicht an jedes andere Abspielprogramm angepasst werden. Der VLC-Player muß beim Start des Programms schon laufen.
Ob es eine Videoplayersoftware gibt, die sich direkt in FB integrieren lässt, entzieht sich leider meiner Kenntnis, aber es würde mich wundern, wenn das nicht schon jemand versucht hätte.
Gruß
grindstone
Noch ein Hinweis: Solange du nicht weißt, was du da machst, solltest du an der Sub TastenSim nicht herumprogrammieren, du kannst dir damit nämlich die Tastatureingabe so gründlich lahmlegen, daß nur noch ein Neustart des Rechners (per Maus) hilft! _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Zuletzt bearbeitet von grindstone am 09.12.2014, 09:26, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 09.12.2014, 08:38 Titel: |
|
|
Zur "richtigen" Integration gibt es auch Bibliotheken wie xVideo, da wirst du aber erst mal die Header nach FreeBASIC übersetzen müssen.
Wenn das Endergebnis wirklich in der Konsole landen soll, gibt es ja noch libcaca... _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1211 Wohnort: Ruhrpott
|
Verfasst am: 09.12.2014, 10:00 Titel: |
|
|
Für Leute mit Russischkenntnissen wäre vielleicht auch Window9 eine Alternative.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
kay2016
Anmeldungsdatum: 22.11.2014 Beiträge: 17
|
Verfasst am: 09.12.2014, 11:18 Titel: |
|
|
Danke grindstone !
Der Snippet lässt sieht doch schon ganz gut aus.
Kann ich so ein Snippet als Funktion hinterlegen ?
Im Spiel sollen ca. 50 Videos abspielbar seien, für jedes einzelne
den Codeblock neuzuschreiben wäre überflüssig.
Auf eine bestimmte Frage soll ein bestimmtes Video gespielt werden.
Wie kann ich das machen ? |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1211 Wohnort: Ruhrpott
|
Verfasst am: 09.12.2014, 22:49 Titel: |
|
|
Hallo kay2016
Am besten ist es wohl, wenn ich einmal Schritt für Schritt erkläre, wie das Ganze funktioniert.
Mit SendInput kannst du jedes Programm, dessen Fensterhandle du kennst, von einem anderen Programm aus so steuern, als ob du selbst davorsitzen und die Befehle eintippen würdest. Also quasi Programmbedienung durch die Hintertür.
Zunächst einmal brauchst du die Fensterhandles sowohl von deinem Konsolenprogramm als auch vom VLC-Player. Für das Konsolenprogramm ist das einfach, denn direkt nach dem Programmstart ist das Konsolenfenster mit Sicherheit im Vordergrund, und dann kannst du mit Code: | hWndDiesesFenster = GetForegroundWindow() | das Fensterhandle ganz einfach ermitteln.
Für ein schon laufendes externes Programm ist das etwas schwieriger, dafür sind die Programmzeilen rund um den Systemschnappschuß zuständig. Wenn du jedoch den VLC-Player von deinem Konsolenprogramm aus startest, ist die Sache wieder ganz einfach: Code: | Shell "start C:\Programme\VideoVLC\vlc.exe" 'VLC-Player starten
Sleep 1000 'warten bis VLC-Player sicher gestartert ist
hWndVLC = GetForegroundWindow() 'fensterhandle vom VLC-Player ermitteln |
Der Systemschnappschuß wird dann nicht mehr benötigt. Die Pfadangabe mußt du natürlich an deine Installation anpassen.
Als nächstes mußt du den VLC-Player dazu bringen, auf einen bestimmten Tastendruck (im Konsolenprogramm) hin ein bestimmtes Video abzuspielen.
Code: | SetForegroundWindow(hWndDiesesFenster)
Print "1 - Video 1"
Print "2 - Video 2"
Print "3 - Video 3"
Do
g = InKey
Select Case g
Case "1"
datei = "D:\videos\video1.avi"
Exit Do
Case "2"
datei = "D:\videos\video2.avi"
Exit Do
Case "3"
datei = "D:\videos\video2.avi"
Exit Do
End Select
Loop
abspielen(datei) |
Die Pfade und Namen der Videos mußt du natürlich wieder entsprechend anpassen. Und ja, es ist eine gute Idee, die Abspielroutine in einer Sub unterzubringen, und sei es nur, um die Lesbarkeit des Programms zu erhöhen:
Code: | Sub abspielen(datei As String)
Dim As Integer y, kc
Dim As String f
SetForegroundWindow(hWndVLC)
Sleep 100
TastenSim("ctrl + o") 'datei öffnen - menü
'abzuspielende datei eingeben
TastenSim("shift + 2") 'anführungszeichen vorne
For y = 0 To Len(datei) - 1 'dateinamen
kc = VkKeyScan(datei[y]) 'in scancodes umwandeln
Select Case HiByte(kc) 'umschalttasten
Case 1
f = "shift+"
Case 2
f = "ctrl+"
Case 6
f = "altgr+"
Case Else
f = ""
End Select
TastenSim(f + Chr(LoByte(kc))) 'tastendruck simulieren
Next
TastenSim("shift + 2") 'anführungszeichen hinten
TastenSim(Chr(VK_RETURN)) 'return
Sleep 1000 'warten, bis video abgespielt wird
End Sub |
Das ganze (bis auf die noch anzupassenden Dateipfade) lauffähige Programm habe ich hierhin hochgeladen.
Zum perfekten Funktionieren fehlen noch einige Programmteile, wie beispielsweise zum automatischen Platzieren der Fenster, so daß sie sich nicht überdecken, aber ein bisschen Arbeit will ich auch noch für dich übriglassen, sonst verderbe ich am Ende noch deinen Charakter...
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
kay2016
Anmeldungsdatum: 22.11.2014 Beiträge: 17
|
Verfasst am: 09.12.2014, 23:05 Titel: |
|
|
Boar, vielen, vielen Dank grindstone !!
Das muss ich mir erstmal zu Gemüte führen.
HAMMER !!!
|
|
Nach oben |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2507 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 10.12.2014, 09:55 Titel: |
|
|
Nur zur Info: Der VLC-Player besitzt ein sehr umfangreiches Kommandozeilenparameter-Arsenal, es gibt daher absolut keinen Grund, irgend ein hässliches SendKeys()-Gebastel zu verwenden, welches bei einem versehentlichen Mausklick-Fensterfokuswechsels zu hängenbleibenden Fenstern führt.
Zum Ausprobieren:
Code: | ' Nicht in FB getestet, aber aus VBScript-Beispiel übernommen
Dim meinVideo As String, lErrLv
meinVideo "C:\Daten\MeinVideo.mpeg"
lErrLv = Shell(Environ("programFiles") + "\VideoLAN\VLC\vlc.exe --play-and-exit --fullscreen" + _
" --no-video-title-show " + meinVideo)
If lErrLv <> 0 Then
' Fehlerbehandlung
End If |
d.h. so ziemlich jede gewünschte Eigenschaft lässt sich als Parameter übergeben. Selbst nur ein bestimmter Ausschnitt abspielen ist auf diese Weise möglich.
Siehe
https://wiki.videolan.org/VLC_command-line_help _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 10.12.2014, 12:17 Titel: |
|
|
Diese spezielle Implementierung wiederum setzt voraus, dass VLC in sein Standardverzeichnis installiert wurde, was auch nicht sonderlich hübsch ist.
Wobei Videos in einem Spiel per VLC abzuspielen so oder so nicht hübsch ist. Was machen die Spieler, die VLC nicht installiert haben? In die Röhre gucken? Da wäre es fast schon sinnvoller, den Windows Media Player anzusteuern, der ist immerhin in allen Windows-Versionen bis auf die N-Versionen dabei... _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1211 Wohnort: Ruhrpott
|
Verfasst am: 10.12.2014, 13:15 Titel: |
|
|
@dreael:
Wirklich "sauber" ist die Methode über SendInput zugegebenermaßen nicht - dafür aber sehr universell. kay2016 hatte ja nur nach "einer Möglichkeit" gefragt, Videos abzuspielen. Den VLC-Player habe ich in dem Programmbeispiel verwendet, weil ich ihn selber bevorzugt benutze. Jeder andere per Tastatur steuerbare Player wäre auch gegangen.
Was die Kommandozeilenoptionen betrifft, so ist der VLC-Player wunderbar vielseitig, allerdings nur, wenn er damit gestartet wird. Eine Möglichkeit, per Kommandozeile Befehle an einen bereits laufenden Player zu schicken, habe ich noch nicht entdeckt. Falls du da mehr wissen solltest als ich: Lass mich an deiner Weisheit teilhaben!
@Jojo:
Ich hatte ja dazugeschrieben, daß der Pfad eventuell angepasst werden muß. Man könnte natürlich auch bei jedem Programmstart erst einmal die gesamte Festplatte nach der "vlc.exe" durchsuchen und, falls diese nicht vorhanden sein sollte, alternativ den Windows Media Player starten. Ist alles nur eine Frage der Implementierung...
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2507 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 10.12.2014, 13:49 Titel: |
|
|
grindstone hat Folgendes geschrieben: | Was die Kommandozeilenoptionen betrifft, so ist der VLC-Player wunderbar vielseitig, allerdings nur, wenn er damit gestartet wird. Eine Möglichkeit, per Kommandozeile Befehle an einen bereits laufenden Player zu schicken, habe ich noch nicht entdeckt. Falls du da mehr wissen solltest als ich: Lass mich an deiner Weisheit teilhaben! |
Erfahrung aus Veranstaltungsprojekte mit PowerPoint auf Grossleinwand: Dort hat es sich eigentlich bewährt, den VLC-Player nur temporär zu starten (also --play-and-exit). Heutige PCs mit ausreichend RAM cachen praktisch alles, so dass der VLC-Player daraufhin ziemlich schnell startet.
Ansonsten, wenn ein Prozess fortlaufend gesteuert werden soll: SendKeys() wenn immer möglich nur im Notfall verwenden, besser ist es mit der Windows Script Host-Automatisierungsschnittstelle zu arbeiten (ist z.B. bei Microsoft Office [Word, Excel und PowerPoint] und Internet Explorer recht gut ausgebaut). Bei den zuvor genannten Grossleinwand-Projekten habe ich in der Regel immer PowerPoint via VBScript-Automatisierungsschnittstelle angesteuert und für die Wiedergabe von Kurzfilme jeweils den VLC-Player in der gezeigten Art gestartet.
Für die FreeBasic-Windows-Experten: Ich meinte, dass wir in der Vergangenheit auch schon direkte Aufrufe ohne ein Hilfs-.VBS diskutiert hatten. Falls jemand einmal eine neue Programmierherausforderung in FB sucht: Kleine Demo-Anwendung bauen, die das Umgekehrte macht, also eine FreeBasic-Klasse bereitstellt, die man z.B. mit
Code: | ' VBS-Beispiel
Option Explicit
Dim oMyFBApp, i
Set oMyFBApp = CreateObject("MyFreeBasicApp.Application")
oMyFBApp.callMethodFoo "Hallo Welt"
i = oMyFBApp.getValue
WScript.Echo "Wert von i:" & i |
aus einem WSH-Script verwenden kann. Dürfte vermutlich auf ein .DLL-Projekt herauslaufen, wobei die vom FB-Compiler fertig erzeugte .DLL in der Registry passend registriert werden muss.
Falls das Ganze für ein Spielprojekt dienen soll: Ich weiss nur, dass in der Vergangenheit manche INSTALL.EXE auf Spiele-CD-ROMs u.a. die Laufzeitkomponenten für beispielsweise QuickTime mitinstalliert hat, um Multimedia-Inhalte eingebettet wiedergeben zu können -> am besten einmal nach entsprechenden APIs suchen (muss nicht zwingend QuickTime sein, sondern kann auch etwas vollkommen anderes sein). _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
|
St_W
Anmeldungsdatum: 22.07.2007 Beiträge: 949 Wohnort: Austria
|
Verfasst am: 10.12.2014, 13:58 Titel: |
|
|
grindstone hat Folgendes geschrieben: | [...] die gesamte Festplatte nach der "vlc.exe" durchsuchen [...] |
Das halte ich für eine sehr schlechte Lösung. Bei meinem System mit einer normalen HDD (also insbesondere keine SSD) und sehr vielen Dateien würde das wohl mehrere Stunden dauern. Besser wäre da z.B. in der Registry unter
HKLM\Software\VideoLAN\VLC\InstallDir nachzuschaun und wenn der Key nicht vorhanden ist den Nutzer zu fragen.
Programme per SendInput zu steuern halte ich auch für eine relativ hässliche Lösung (auch wenns funktioniert). _________________ Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken) |
|
Nach oben |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2507 Wohnort: Hofen SH (Schweiz)
|
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1211 Wohnort: Ruhrpott
|
Verfasst am: 10.12.2014, 14:33 Titel: |
|
|
St_W hat Folgendes geschrieben: |
grindstone hat Folgendes geschrieben:
[...] die gesamte Festplatte nach der "vlc.exe" durchsuchen [...]
Das halte ich für eine sehr schlechte Lösung. |
Das war jetzt eigentlich auch eher ironisch gemeint gewesen. Es würde ja vollkommen reichen, das Verzeichnis "Programme" zu durchsuchen... OK, ich hör ja schon auf
Vielleicht ließe sich bei der Steuerung des VLC-Players ja über HTTP was machen. Ich werde mal ein bisschen rumprobieren.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2507 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 10.12.2014, 16:50 Titel: |
|
|
Inzwischen ein kleines Beispiel mit VBScript "gezimmert":
Code: | ' Einfaches Beispiel für Windows Media Player (WMPlayerDemo.vbs)
Option Explicit
Const WM_PLAYING = 3
Dim oMediaPlayer, oCtrl
Set oMediaPlayer = CreateObject("WMPlayer.OCX.7")
oMediaPlayer.settings.autoStart = false
oMediaPlayer.URL = "C:\Daten\Filme\Beispiel.avi"
Set oCtrl = oMediaPlayer.controls
oCtrl.play
' Demo-Teil: Wir lassen 10 Sekunden abspielen
WScript.Sleep 10000
' und halten den Film/Tondatei an
oCtrl.pause
' und warten 5 Sekunden
WScript.Sleep 5000
' und setzen wieder fort
oCtrl.play
' und lassen den Film/Tondatei zu Ende laufen
While oMediaPlayer.playState = WM_PLAYING
WScript.Echo "Abspielposition: " & oCtrl.currentPosition
WScript.Sleep 2000
Wend
WScript.Echo "Endstatus: " & oMediaPlayer.playState
Set oCtrl = Nothing
oMediaPlayer.close
Set oMediaPlayer = Nothing |
Hauptproblem beim Testen via Windows Script Host: Nur Ton, d.h. kein Bild.
Für die COM-Programmierprofis: Jetzt wäre es also nur noch nötig, ein Bereich vom mit ScreenRes initialisierten fbgfxlib-Fenster als Bereich diesem Objekt mitgeben zu können, dann müsste auch das Bild erscheinen.
Mit der Methode openPlayer bekam ich zwar ein Fenster und Bild, dafür aber gehorchte das Controls-Objekt nicht mehr auf pause und play.
Ansonsten ist bereits mit dem Ton ersichtlich, dass Stoppen (Pausieren) und Fortsetzen soweit ohne Probleme möglich sind. => Damit müsste also fürs ursprüngliche Projekt die gewünschte Ansteuerung ohne SendKeys() möglich sein. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1211 Wohnort: Ruhrpott
|
Verfasst am: 11.12.2014, 01:07 Titel: |
|
|
Hallo!
Kann mir jemand verraten, warum ich mit Code: | Print GetWindowLong(hWndVLC,GWL_WNDPROC) |
(bei laufendem VLC-Player) eine 0 zurückbekomme? Alle anderen Flags funktionieren.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 11.12.2014, 08:55 Titel: |
|
|
Äh, warum solltest du so einfach an die Window Procedure eines fremden Fensters gelangen können? Was würde dir der zurückgegebene Wert sagen? Das ist ein Pointer auf einen Adressbereich, der dir nicht mal gehört!
Zitat: | You cannot change this attribute if the window does not belong to the same process as the calling thread. |
Außerdem sollte man heutzutage wegen der 64-Bit-Kompatibilität GetWindowLongPtr mit GWLP_WNDPROC verwenden, wenn überhaupt. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1211 Wohnort: Ruhrpott
|
Verfasst am: 11.12.2014, 11:55 Titel: |
|
|
Jojo hat Folgendes geschrieben: | warum solltest du so einfach an die Window Procedure eines fremden Fensters gelangen können? |
Weil ich den entsprechenden Prozess zuvor mit Code: | CreateProcess(0,"C:\Programme\VideoVLC\vlc.exe",@sa,0,TRUE,0,0,0,@siVLC,@pi) | als Kindprozess gestartet habe. Jetzt möchte ich die WndProc hooken, um den Messagestrom, der dort durchrauscht, zu analysieren. Aber dazu brauche ich den Pointer auf die WndProc.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
RockTheSchock
Anmeldungsdatum: 04.04.2007 Beiträge: 138
|
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 11.12.2014, 19:28 Titel: |
|
|
grindstone: Auch ein Kindprozess ist nicht dein Prozess, insbesondere hat auch ein Kindprozess seinen eigenen Adressraum! _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|