Media Player steuern

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag von Tafkadasom2k5 »

Hoho!

Zwar ist es ein Umweg, aber die Programmier- (OK- Script-)Sprache "AutoIt" kann ohne Weiteres Programme fernsteuern. Das wäre unter Umständen eine Aternative, ohne dabei SDKs anzusteuern. Man kann nur lediglich damit den Nutzer emulieren (Maus, Tasten) aber es sind auch andere Befehle und API Nutzung möglich.

Es ist unter Umständen ein wenig unelegant, aber es funktioniert. Ich habe damit eine Rundfax und Rundmailfunktion programmiert, die Fritz!Fax und Outlook fernsteuert, damit man Rundfaxe/Rundmails aus einem anderen Programm verschicken konnte...

Vielleicht ja eine bauchbare Alternative..?

Gr33tz
Tafkadasom2k5
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> Vielleicht ja eine bauchbare Alternative..?

klasse tippfehler... :lol:

diese Alternative soll sich mal was überziehen...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Alves
Beiträge: 1208
Registriert: 19.04.2006 18:24
Kontaktdaten:

Beitrag von Alves »

@ Zaphod

Also wenn ich es mit dTaOneClick laden will, bekommen ich eine sorry.html runtergeladen.

Jetzt erst gemerkt, dass es geht.

Danke, werde mich damit beschäftigen.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Mit dem OLE/COM Interface Generator von Stefan Möbius geht es "recht einfach". Beispiel für MediaPlayer ist bei!
http://www.purebasic.fr/english/viewtopic.php?t=23370
Einfach die Methoden:
Play()
Stop()
Pause()
im IMediaPlayer Interface aufrufen, dieses wird auch im Beispiel genutzt
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Alves
Beiträge: 1208
Registriert: 19.04.2006 18:24
Kontaktdaten:

Beitrag von Alves »

Funzt das auch mit iTunes?

Ansonsten, werde ich mir mal angucken!

:allright:
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag von Tafkadasom2k5 »

Also wenn du dich mit COM-Objekten auseinandersetzen willst, dann kann ich dir eine Include geben (leider nur für PowerBasic, aber es sind nur ein paar Kleinigkeit an Unterschieden...)

Da sind so ziemlich alle Bfehele drin, die man braucht (habe gerade den PowerBasic COMBrowser aufgefordert mal nach Media-Player Interfaces zu suchen...

Man hat echt viele Möglichkeiten...

Gr33tz
Tafkadasom2k5

Edit:
Ich seh gerade, dass das Ding von Stefan Möbius dasselbe in PureBasic macht... Spitze :allright:

PS:Unglaublich, wie viele Funktionen von Programmen da abgelegt sind... :o SInd das alles COM-Objekte? Dabei heißt es doch immer, dass diese veraltet wären? Warum werden nicht DLLS anstatt COM-Objekte genutzt? Wo liegt da der Unterschied?
Zuletzt geändert von Tafkadasom2k5 am 25.08.2006 11:44, insgesamt 1-mal geändert.
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Wenn der als Active registriert ist, sollte es ein entsprechendes Interface geben, kann ich so nicht beantworten.
Als Beispiel: Einfach Interface für MediaPlayer erstellen und als wmp.pbi speichern, dann folgenden Code:

Code: Alles auswählen

XIncludeFile "wmp.pbi"

Import "atl.lib"
  AtlAxWinInit()
  AtlAxCreateControl(lpszName.p-bstr,hWnd.l,*pStream.IStream,*ppUnkContainer.IUnknown)
  AtlAxGetControl(hWnd.l,*pp.IUnknown) 
EndImport

Import "shell32.lib"
  CompilerIf #PB_Compiler_Unicode
    SHGetSpecialFolderPath_(hwndOwner.l, lpszPath.s, nFolder.l, fCreate.l) As "_SHGetSpecialFolderPathW@16"
  CompilerElse
    SHGetSpecialFolderPath_(hwndOwner.l, lpszPath.s, nFolder.l, fCreate.l) As "_SHGetSpecialFolderPathA@16"
  CompilerEndIf
EndImport

Procedure.s GetSpecialFolder(Folder.l)
  Protected Path.s = Space(#MAX_PATH)
  If SHGetSpecialFolderPath_(#NUL, Path, Folder, #NUL)
    If Right(Path, 1) <> "\" : Path + "\" : EndIf
    ProcedureReturn Path
  EndIf
EndProcedure

File.s = ProgramParameter()
If FileSize(File) <= 0 Or File = ""
  File = OpenFileRequester("Small MediaPlayer", GetSpecialFolder(#CSIDL_MYVIDEO) + "*.wmv", "*.*", 0)
  If Not File : End : EndIf
EndIf

CoInitialize_(0) 

AtlAxWinInit() 

#Flags=#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered 
OpenWindow(0,0,0,400,300,"Simple MediaPlayer, written in PB", #Flags) 

AtlAxCreateControl("MediaPlayer.MediaPlayer.1", WindowID(0), 0, 0) 
AtlAxGetControl(WindowID(0),@*mp.IMediaPlayer) 

*mp\put_FileName(File)

Repeat 

Until WaitWindowEvent() = #PB_Event_CloseWindow 

*mp\Release()
CloseWindow(0)
Ist schon ein fast vollwertiger Player :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Alves
Beiträge: 1208
Registriert: 19.04.2006 18:24
Kontaktdaten:

Beitrag von Alves »

Also wenn ich mir den Code so angucke, dann schreibe ich meinen Media Player doch lieber selber.

Ne aber hier gehts ja um steuern, danke nochmal, hab grad aber keine zeit um mitr das anzugucken.
:allright:
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Aber wenn Du so wie im Beispiel, den WMPlayer einfach in Deine Anwendung
integrierst, kannste denn auch bequem durch dieselbe, bzw. eine 2te steuern,
ohne Gefahr zu laufen, was falsches zu steuern :mrgreen:

Wenn man die Bedienelemente vom WMPlayer ausblendet, merkt es evtl.
garkeiner, das es nur eine Oberfläche für den orign. Player ist :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten