Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   JoyMedia - Mediensteuerung über Joystick (https://www.delphipraxis.net/83677-joymedia-mediensteuerung-ueber-joystick.html)

Hybrid666 5. Jan 2007 18:24


JoyMedia - Mediensteuerung über Joystick
 
Liste der Anhänge anzeigen (Anzahl: 1)
JoyMedia - Mediensteuerung über Joystick/GamePad





JoyMedia ist ein Tool um Funktionen und Plugins auf die Tasten von euren JoySticks und GamePads legen könnt.

Funktionen:
Steuern von Programmen (u.a. Winamp, iTunes)
Schreiben eigener Plugins (wenn ihr der Sprache Delphi mächtig seid, wovon ich ausgehe ^^)
Verstecken im Tray
u.v.m.

WICHTIG: HAB HEUTE MAL EIN KLEINES DLL TUTORIAL DAFÜR GESCHRIEBEN: http://www.delphipraxis.net/internal...=917332#917332

ChangeLog:

v.0.01:
Joystick erkennung hinzugefügt
Noch keine Tastenbelegungen möglich, statisch Belegte Tasten ohne Plugin Funktion

v.0.02:
Joystick Tasten werden nun aufgelistet, erste Plugin versuche gescheitert
Plugins benötigen noch Sharemem, da strings übergeben werden
Winamp.dll hinzugefügt
Dynamische Tastenbelegungen
History eingefügt
Einstellungen werden in einer ini File gespeichert

v.0.03
Winamp Volume Command für Slider hinzugefügt
Bessere Veriablenübergabe
Schleife wird schneller abgearbeitet
Bug mit Slider behoben
Option für TrayIcon zwar da, aber noch ohne funktion

v.0.04
iTunes Plugin hinzugefügt
Minimize to Tray funktioniert
XP manifest
mehrere kleine bugs behoben

v.0.05
Plugins laufen nun über PChar (Sharemem wird in version 0.06 komplett terminiert ;))
Plugins umgeschrieben auf neuen Standart
Parameterfunktion um beliebige parameter an das plugin weiterzuleiten

v.0.06
Keine Fehler mehr wenn kein Joystick da ist
Bugs entfernt
Icon zum Projekt hinzugefügt
Angegebene Parameter stehen nun auch in der history
inifiles von früheren versionen werden nun converted
Versionsprüfung eingebaut um absturz durch alte ini files zu verhindern

v.0.07
Parameterübergabe funktioniert
Volume nun auch auf Buttons belegbar
DLL Struktur verändert
Mehrer arten eines Button drucks nun an DLL übergeben (Pressed, Released, Repeated)
Slider Volume Entbuggt
iTunes Plugin entfernt bis DLL auf neue Strktur umgeschrieben wurde
Mehr Parameter werden an die DLL übergeben
Mehrere kleine bugs entfernt
JOYMEDIA UNTERSTÜTZT NUN WEITESTGEHENS AUCH GAMEPORT JOYSTICKS, ALLERDINGS HABE ICH z.B. MIT MEINEM SB LIVE5.1 GAMEPORT PROBLEME, BEI FREUNDEN TUT ES ALLERDINGS MIT DEN MEISTEN JOYSTICKS UND GAMEPADS

v0.08
Bugs entfernt
Hilfe hinzugefügt
playsound.dll hinzugefügt

In bälde wird auch ein Tutorial für die DLLs folgen

In Arbeit:
- Plugins für Windows
- Plugin für Windows Media Player
- Hat Commands werden eingebaut

DOWNLOAD: Auf den Anhang verlegt

P.S.: ICH BITTE EUCH UM GEZÜGELTE KRITIK, ICH HABE ERST KÜRZLICH WIEDER MIT DELPHI ANGEFANGEN DA ICH ZWISCHENZEITLICH AUF MSL UMGESTIEGEN WAR. WER DAS PROGRAMM NUTZEN MÖCHTE ODER DLLS SCHREIBEN DER WENDET SICH EINFACH PER MAIL (Hybrid87@gmail.com) ODER ICQ (165839208) AN MICH. NUTZUNG AUF EIGENE GEFAHR.

MFG HYBRID666

Hybrid666 6. Jan 2007 17:19

Re: JoyMedia - Mediensteuerung über Joystick
 
bissle feedback wäre schon nett :( so schlecht iss das proggie au net...vorallem für gamer interessant

xZise 6. Jan 2007 19:23

Re: JoyMedia - Mediensteuerung über Joystick
 
Ich würde dir empfehlen das Programm als Anhang anzuhängen, oder einen direkten Downloadlink + Größe hinzuzufügen.
Überigends ist die Idee nicht schlecht, aber das über ein JoyStick zu steuern ;)

Hybrid666 7. Jan 2007 01:00

Re: JoyMedia - Mediensteuerung über Joystick
 
Zitat:

Zitat von xZise
Ich würde dir empfehlen das Programm als Anhang anzuhängen, oder einen direkten Downloadlink + Größe hinzuzufügen.
Überigends ist die Idee nicht schlecht, aber das über ein JoyStick zu steuern ;)

Mit Screeny nu im anhang...danke

WordsBG 7. Jan 2007 17:29

Re: JoyMedia - Mediensteuerung über Joystick
 
Liste der Anhänge anzeigen (Anzahl: 1)
Nettes Programm, WinAmp nutze ich zwar nicht (wozu auch iTunes 4 life), aber sieht gut aus. Wenn du iTunes Support einbauen willst kannst du das über Windows COM-Obejkte machen (Google: "iTunes COM", sollte Apple mit nem Download zur beschreibung ankommen). Hab mit grad sowas mal selbst quick-n-dirty gemacht. Ich war mir nicht sicher über Delphi + COM, deshalb hier ShellExecute mit JavaScript.

btw: AChtung. Startet ohne sichtbares Window. Hoch/Runter = Track Ändern | Links/Rechts = Pause/Play (beides auf beiden Tasten)

Hybrid666 7. Jan 2007 21:37

Re: JoyMedia - Mediensteuerung über Joystick
 
Danke für das feedback, werde mich morgen gleich an den iTunes support ranmachen ;) und danke für das codebeispiel ich denke das das sehr weiterhelfen wird.

Wenn sonstnoch jemand wünsche offen hat dann bitte ;)

BETA 0.03 HOCHGELADEN
iTunes Plugin ist online
@WordsBG wär nett wenn du es mal testen könntest und am besten mir auch den registry eintrag sagen könntest wo (und ob überhaupt) der pfad der exe datei von itunes gespeichert ist, damit ich auch ne start funktion einbauen kann ;)

MfG Hybrid666

WordsBG 8. Jan 2007 20:19

Re: JoyMedia - Mediensteuerung über Joystick
 
Mhm sorry für mein als "USB Joypad" erkanntes Joypad funktioniert das ganze nicht. Nach dem einrichten geht nichts. Wenn ich neustarte bombt er mich mit massige AVs voll, selbes Ergebnis beim löschen der ini. Seltsam.

iTunes Pfad steht nicht in der Reg (zumindest bei mir).

Aber
Code:
[HKEY_CLASSES_ROOT\Applications\iTunes.exe\DefaultIcon]
@="C:\\Programme\\iTunes\\iTunes.exe,-128"
Kannst du wohl nutzen um den Pfad zu bekommen.

edit: Jatzt hab ich vergessen mein Jypad anzugeben: Ist ein techsolo TG-20

Hybrid666 8. Jan 2007 20:22

Re: JoyMedia - Mediensteuerung über Joystick
 
Zitat:

Zitat von WordsBG
Mhm sorry für mein als "USB Joypad" erkanntes Joypad funktioniert das ganze nicht. Nach dem einrichten geht nichts. Wenn ich neustarte bombt er mich mit massige AVs voll, selbes Ergebnis beim löschen der ini. Seltsam.

iTunes Pfad steht nicht in der Reg (zumindest bei mir).

Aber
Code:
[HKEY_CLASSES_ROOT\Applications\iTunes.exe\DefaultIcon]
@="C:\\Programme\\iTunes\\iTunes.exe,-128"
Kannst du wohl nutzen um den Pfad zu bekommen.

edit: Jatzt hab ich vergessen mein Jypad anzugeben: Ist ein techsolo TG-20

hmmmm das prob iss mir neu, kannste vllt nen screenshot posten? klickst du auch immer Set Functgion to button? hast du die version die ich erst neulicht von itunes.dll hochgeladen hab? weil die alte ging net...

und dann noch ne frage:

Delphi-Quellcode:
function volumeup()
{
iTunesApp.SoundVolume = iTunesApp.SoundVolume+ 10;
}
function volumedown()
{
iTunesApp.SoundVolume = iTunesApp.SoundVolume- 10;
}
hast du ne ahnung ob ich für die volume auch nen konkreten wert angeben kann? und wie? (ich kenn mich mit JS net aus)

Hab iTunes grade auch instaliert und bei mir ghets eig. wunderbar...

MfG Hybrid666

WordsBG 8. Jan 2007 22:38

Re: JoyMedia - Mediensteuerung über Joystick
 
Zitat:

Zitat von Hybrid666
Delphi-Quellcode:
function volumeup()
{
iTunesApp.SoundVolume = iTunesApp.SoundVolume+ 10;
}
function volumedown()
{
iTunesApp.SoundVolume = iTunesApp.SoundVolume- 10;
}
hast du ne ahnung ob ich für die volume auch nen konkreten wert angeben kann? und wie? (ich kenn mich mit JS net aus)
Hab iTunes grade auch instaliert und bei mir ghets eig. wunderbar...

Ah JETZT Geht es. Erst einstellen, schauen das iTunes zwischendrin neugestartet wird (bzw. beendet wird) und dann Play (Öffnet es gegebenfalls auch neu). Dann geht es einwandfrei.

Der Obengenannte Code funktioniert bei mir, kA was du noch willst. Alternativ könntest du soweit ich mich erinnere auch "iTunesApp.SoundVolume += 10;" schreiben, JavaScript sollte das, wie auch PHP usw. unterstützen.

edit: Btw: Mach das Fenster mal nicht resizebar, bau das MinimizeToTray ein und positioniere es am Betsen in der Mitte des Screens (Stickwort: Position von TForm), dann sollte das Programm ready4users sein.

Für XP-User ist auch XP-Style fast pflicht. In Delphi 6 kannst du das mit den Manifest-Files tun.

Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
   version="1.0.0.0"
   processorArchitecture="X86"
   name="Time-Organizer"
   type="win32"
/>
<description>Time-Organizer fuer WinXP</description>
<dependency>
   <dependentAssembly>
       <assemblyIdentity
           type="win32"
           name="Microsoft.Windows.Common-Controls"
           version="6.0.0.0"
           processorArchitecture="X86"
           publicKeyToken="6595b64144ccf1df"
           language="*"
       />
   </dependentAssembly>
</dependency>
</assembly>
als exename.manifest

und evt. in die exe linken. Siehe: http://dsdt.info/tipps/?id=466

edit2: ComboBoxen mit csDropDownList als Style sind auch besser. Sonst denkt man als User man müsste da was eingeben.

Hybrid666 9. Jan 2007 14:40

Re: JoyMedia - Mediensteuerung über Joystick
 
Zitat:

Zitat von WordsBG
Zitat:

Zitat von Hybrid666
Delphi-Quellcode:
function volumeup()
{
iTunesApp.SoundVolume = iTunesApp.SoundVolume+ 10;
}
function volumedown()
{
iTunesApp.SoundVolume = iTunesApp.SoundVolume- 10;
}
hast du ne ahnung ob ich für die volume auch nen konkreten wert angeben kann? und wie? (ich kenn mich mit JS net aus)
Hab iTunes grade auch instaliert und bei mir ghets eig. wunderbar...

Ah JETZT Geht es. Erst einstellen, schauen das iTunes zwischendrin neugestartet wird (bzw. beendet wird) und dann Play (Öffnet es gegebenfalls auch neu). Dann geht es einwandfrei.

Der Obengenannte Code funktioniert bei mir, kA was du noch willst. Alternativ könntest du soweit ich mich erinnere auch "iTunesApp.SoundVolume += 10;" schreiben, JavaScript sollte das, wie auch PHP usw. unterstützen.

edit: Btw: Mach das Fenster mal nicht resizebar, bau das MinimizeToTray ein und positioniere es am Betsen in der Mitte des Screens (Stickwort: Position von TForm), dann sollte das Programm ready4users sein.

Für XP-User ist auch XP-Style fast pflicht. In Delphi 6 kannst du das mit den Manifest-Files tun.

Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
   version="1.0.0.0"
   processorArchitecture="X86"
   name="Time-Organizer"
   type="win32"
/>
<description>Time-Organizer fuer WinXP</description>
<dependency>
   <dependentAssembly>
       <assemblyIdentity
           type="win32"
           name="Microsoft.Windows.Common-Controls"
           version="6.0.0.0"
           processorArchitecture="X86"
           publicKeyToken="6595b64144ccf1df"
           language="*"
       />
   </dependentAssembly>
</dependency>
</assembly>
als exename.manifest

und evt. in die exe linken. Siehe: http://dsdt.info/tipps/?id=466

edit2: ComboBoxen mit csDropDownList als Style sind auch besser. Sonst denkt man als User man müsste da was eingeben.

hehe vilen dank erstmal ;) ich werkel da dran rum und wie gesagt ist das grade die beta, da geht es mir nicht um aussehen :P xD aber das kommt alles noch, momentan will ich nur dasses richtig läuft.

und was ich mit dem java ding machen will ist das gelcihe wie bei winamp: volume control auf den slider legen, das iss echt genial.

MfG und danke Hybrid666

xZise 9. Jan 2007 14:56

Re: JoyMedia - Mediensteuerung über Joystick
 
wenn du Delphi 7 oder höher hast, kannst du auch in der uses-Klausel "XPMan" einfügen.
Das hat den gleichen Effekt.

Und eine Frage: Mit welcher Skriptsprache werden die Plugins geschrieben? Auch mit Delphi? Dann habe ich eine Frage, wo das Problem oben mit Javaskript ist :D

Zitat:

Zitat von WordsBG
Zitat:

Zitat von Hybrid666
Delphi-Quellcode:
function volumeup()
{
iTunesApp.SoundVolume = iTunesApp.SoundVolume+ 10;
}
function volumedown()
{
iTunesApp.SoundVolume = iTunesApp.SoundVolume- 10;
}

Alternativ könntest du soweit ich mich erinnere auch "iTunesApp.SoundVolume += 10;" schreiben, JavaScript sollte das, wie auch PHP usw. unterstützen.

Ich bin mir nicht sicher, aber vielleicht ist es auch nur bei Java so, und nicht bei Skript so...

Hybrid666 9. Jan 2007 15:07

Re: JoyMedia - Mediensteuerung über Joystick
 
Zitat:

Zitat von xZise
wenn du Delphi 7 oder höher hast, kannst du auch in der uses-Klausel "XPMan" einfügen.
Das hat den gleichen Effekt.

Und eine Frage: Mit welcher Skriptsprache werden die Plugins geschrieben? Auch mit Delphi? Dann habe ich eine Frage, wo das Problem oben mit Javaskript ist :D

Zitat:

Zitat von WordsBG
Zitat:

Zitat von Hybrid666
Delphi-Quellcode:
function volumeup()
{
iTunesApp.SoundVolume = iTunesApp.SoundVolume+ 10;
}
function volumedown()
{
iTunesApp.SoundVolume = iTunesApp.SoundVolume- 10;
}

Alternativ könntest du soweit ich mich erinnere auch "iTunesApp.SoundVolume += 10;" schreiben, JavaScript sollte das, wie auch PHP usw. unterstützen.

Ich bin mir nicht sicher, aber vielleicht ist es auch nur bei Java so, und nicht bei Skript so...

java scripts sind hier nur um iTunes anzusprechen, die anderen plugins laufen normalerweiße über SendMessage oder was man halt usen will in delphi geschreiben...werde auch bald ein tut schreiben wie die DLLs auszusehen haben, wenn du dich aber schon früher dafür interessiert PM oder ICQ dann schreib ich dir ne kurzfassung dies aufn punkt bringtt ;) momentan will ich noch nicht das alle plugins schreiben, weil sie momentan noch über strings laufen und daher leute ohne delphi ne DLL von Borland brauchen, ich werd aber versuchen das auf PCHar umzuschreiben und noch parameterfunktionen einzubauen, die die App dann an die DLL übergibt, was über die achsenvariablen und buttonvariablen hinausgeht.

MfG Hybrid666

WordsBG 9. Jan 2007 15:21

Re: JoyMedia - Mediensteuerung über Joystick
 
Eine coole Funktion die mir noch einfallen würde währe es wenn man bestimmte Songs auf Tasten legen könnte, also z.B. seinen Lieblingssong. Da die meisten Joypads (Joysticks ja eher weniger, aber naja) recht viele Tasten haben (Meins z.B. hat 10 Stück) geht das ja. Außerdem würde ich mir wünschen das man per Y-Achenbewegung Songs in beide Richtungen skippen kann, also hoch=weiter, runter=zurück oder sowas und nicht so wie es im Moment läuft.

jokerfacehro 9. Jan 2007 15:22

Re: JoyMedia - Mediensteuerung über Joystick
 
ich habe dein programm noch nicht getestet, doch ist eine schöne idee ;)

ich hätte da vielleicht noch eine kleine idee :D

es wär schön einem der joystick buttons die funktion zuweisen zu können, das man die einzelnen plugins wechseln bzw durchswitchen kann und schön wäre es auch den button und die ihm hinzugefügte funktion zusammen in einem ListView darzustellen, ist einfach übersichtlicher :D


Zitat:

Außerdem würde ich mir wünschen das man per Y-Achenbewegung Songs in beide Richtungen skippen kann, also hoch=weiter, runter=zurück oder sowas und nicht so wie es im Moment läuft.
jepp das wär gut, am besten mit links und rechts song wechseln und mit hoch und runter die lautstärke einstellen :D

viel Erfolg und Spaß beim Proggen :mrgreen:

jokerfacehro 9. Jan 2007 15:30

Re: JoyMedia - Mediensteuerung über Joystick
 
ich hab grad dein proggi getestet unzwar ohne joystick, das programm war auf einmal 3mal im tasmanger vorhanden und hat hunderte fehlermeldungen ausgespuckt ich hatte schon angst dass der pc abkackt,
da er sich erst weigerte den prozess zu beenden und ich hatte 10 bis 15mal das icon in der taskleiste
bitte stell ne version rein die funktioniert :mrgreen:

Hybrid666 9. Jan 2007 15:44

Re: JoyMedia - Mediensteuerung über Joystick
 
Zitat:

Zitat von jokerfacehro
ich habe dein programm noch nicht getestet, doch ist eine schöne idee ;)

ich hätte da vielleicht noch eine kleine idee :D

es wär schön einem der joystick buttons die funktion zuweisen zu können, das man die einzelnen plugins wechseln bzw durchswitchen kann und schön wäre es auch den button und die ihm hinzugefügte funktion zusammen in einem ListView darzustellen, ist einfach übersichtlicher :D


Zitat:

Außerdem würde ich mir wünschen das man per Y-Achenbewegung Songs in beide Richtungen skippen kann, also hoch=weiter, runter=zurück oder sowas und nicht so wie es im Moment läuft.
jepp das wär gut, am besten mit links und rechts song wechseln und mit hoch und runter die lautstärke einstellen :D

viel Erfolg und Spaß beim Proggen :mrgreen:

das ist per plugin leicht zu lösen mit den commands switchern...ich veröffentliche bald ein tut dann kannst du sowas ja mal probieren ;) stehe auch mit rat und tat zur seite, und das mit den achsen werd ih auch mal in angriff nehmen ^^ bisher habe ich zeit für entbuggen genutzt von buttons und slidern :P nu kommen achsen und dann hats...

Danke für dein Feedback

Hybrid666

Hybrid666 9. Jan 2007 15:48

Re: JoyMedia - Mediensteuerung über Joystick
 
Zitat:

Zitat von jokerfacehro
ich hab grad dein proggi getestet unzwar ohne joystick, das programm war auf einmal 3mal im tasmanger vorhanden und hat hunderte fehlermeldungen ausgespuckt ich hatte schon angst dass der pc abkackt,
da er sich erst weigerte den prozess zu beenden und ich hatte 10 bis 15mal das icon in der taskleiste
bitte stell ne version rein die funktioniert :mrgreen:

das risk von beta versionen ;) wenn kein joystick dann gehts los, werd noch bald ne abfrage reinmachen xD

MfG Hybrid666

(wobei bei mir nur kommt ohne joylistck ListIndex out of bounds -1 und dann iss gut ^^ außer man hat ne ini file schon created, dann gibbet stress)

xZise 9. Jan 2007 21:10

Re: JoyMedia - Mediensteuerung über Joystick
 
Zitat:

Zitat von jokerfacehro
bitte stell ne version rein die funktioniert :mrgreen:

  1. Ist es eine Beta.
  2. Funktioniert das Programm.
  3. Sind die minimalen Systemvoraussetzungen (unter anderem ein angeschlossener Joystick) nicht gegeben. (Oder erwartest du, dass ein Programm auf einen 1 GHz-Rechner läuft, obwohl er mindestens 3 will?)

PS: Auch wenn das jetzt "scherzhaft" sein sollte, dann irgendwie unpassend. Ich unterstelle keinem Programmen, das es nicht funktioniert, wenn die letzten beiden Punkte nicht gegeben sind.

jokerfacehro 9. Jan 2007 21:18

Re: JoyMedia - Mediensteuerung über Joystick
 
Zitat:

Sind die minimalen Systemvoraussetzungen (unter anderem ein angeschlossener Joystick) nicht gegeben. (Oder erwartest du, dass ein Programm auf einen 1 GHz-Rechner läuft, obwohl er mindestens 3 will?)
naja ich glaube deind ritter punkt beantwortet sich von selbst, wenn du dir den ersten eintrag durchliest ;)

Hybrid666 9. Jan 2007 21:27

Re: JoyMedia - Mediensteuerung über Joystick
 
Danke erstmal an die letzen 2 Threads ;)

Belohnt wird sowas mit ner neuen version, hab nun die Plugins und das programm auf PChar basis umgeschreiben und nun sollte ich in der nächsten version Sharemem rauskicken können ;)
Plugins sond umgeschrieben und es steht nun eine parameterfunktion zur verfügung um an die dlls parameter zu schicken (oder auch nicht ^^)...

WICHTIG: Wer die neue Version downloaded BITTE DIE ALTE INI FILE NICHT WEITERVERWENDEN ODER IN JEDE BUTTON SLIDER UND AXES RUBRIK "parameter=" (ohne " ") REINSETZEN! SONST ABSTURZ!

MfG Hybrid666

xZise 9. Jan 2007 21:48

Re: JoyMedia - Mediensteuerung über Joystick
 
Zitat:

Zitat von Hybrid666
Danke erstmal an die letzen 2 Threads ;)

Die ganzen Post sind zusammen ein Thread ;)

Zitat:

Zitat von Hybrid666
WICHTIG: Wer die neue Version downloaded BITTE DIE ALTE INI FILE NICHT WEITERVERWENDEN ODER IN JEDE BUTTON SLIDER UND AXES RUBRIK "parameter=" (ohne " ") REINSETZEN! SONST ABSTURZ!

Oder du fügst einen EIntrag "Version" ein, und wenn die Version nicht gegeben ist, oder nicht benutzt werden kann, dann lösche die ini, oder auch nur die Einträge ;) Ist meiner Meinung nach benutzerfreundlicher.

Beispiel:
Delphi-Quellcode:
procedure LoadData;
begin
  // Lade daten aus der Ini
  ini := TIniFile.....
  try
    if ini.ReadInteger('IniData', 'Version', -1) <> Version {= z.B. 1 oder 23} then
      ini.Clear; // Falls das net gibt : Ich meine, dass der Inhalt gelöscht wird... Kannst ja mal suchen oder fragen ;))
  finally
    ini.Free;
  end;
end;
Falls man es dann konvertieren könnte dann könnstest du ja die Funktion leict umändern:
Delphi-Quellcode:
case ini.ReadInteger('IniData', 'Version', -1) of
  X : ... // kompatibel
  Y : ... // konvertierbar
  else ini.Clear; // Ansonsten "leeren" ;)
end;
Zitat:

Zitat von jokerfacehro
naja ich glaube deind ritter punkt beantwortet sich von selbst, wenn du dir den ersten eintrag durchliest ;)

eintrag = ?
Meine erste Angabe (Ist eine Beta) oder was meinst du? Oder den ersten Post? Ich verstehe leider nicht ganz.

Hybrid666 9. Jan 2007 22:26

Re: JoyMedia - Mediensteuerung über Joystick
 
Zitat:

Zitat von xZise
Zitat:

Zitat von Hybrid666
Danke erstmal an die letzen 2 Threads ;)

Die ganzen Post sind zusammen ein Thread ;)

Zitat:

Zitat von Hybrid666
WICHTIG: Wer die neue Version downloaded BITTE DIE ALTE INI FILE NICHT WEITERVERWENDEN ODER IN JEDE BUTTON SLIDER UND AXES RUBRIK "parameter=" (ohne " ") REINSETZEN! SONST ABSTURZ!

Oder du fügst einen EIntrag "Version" ein, und wenn die Version nicht gegeben ist, oder nicht benutzt werden kann, dann lösche die ini, oder auch nur die Einträge ;) Ist meiner Meinung nach benutzerfreundlicher.

Beispiel:
Delphi-Quellcode:
procedure LoadData;
begin
  // Lade daten aus der Ini
  ini := TIniFile.....
  try
    if ini.ReadInteger('IniData', 'Version', -1) <> Version {= z.B. 1 oder 23} then
      ini.Clear; // Falls das net gibt : Ich meine, dass der Inhalt gelöscht wird... Kannst ja mal suchen oder fragen ;))
  finally
    ini.Free;
  end;
end;
Falls man es dann konvertieren könnte dann könnstest du ja die Funktion leict umändern:
Delphi-Quellcode:
case ini.ReadInteger('IniData', 'Version', -1) of
  X : ... // kompatibel
  Y : ... // konvertierbar
  else ini.Clear; // Ansonsten "leeren" ;)
end;
Zitat:

Zitat von jokerfacehro
naja ich glaube deind ritter punkt beantwortet sich von selbst, wenn du dir den ersten eintrag durchliest ;)

eintrag = ?
Meine erste Angabe (Ist eine Beta) oder was meinst du? Oder den ersten Post? Ich verstehe leider nicht ganz.

Sehr sehr gute idee, werde das mal machen, im prinzip kann ich ja von vers. 0.04 auf 0.05 einfach die einträge reinamchen, die momentanen plugins haben eben noch keine funktion die das nutzt, ich kann auch einfach abfragen ob param= exisitert, wenn nicht schicke einfach nen leeren parameter (was imo auch bei allen passiert)...

danke

Hybrid666

Hybrid666 11. Jan 2007 15:26

Re: JoyMedia - Mediensteuerung über Joystick
 
neue version online

Hybrid666 16. Jan 2007 20:34

Re: JoyMedia - Mediensteuerung über Joystick
 
LAUT EINEM KUMPEL FUNKTIONIOEREN AUCH (warum auch immer) MANCHE GAMEPORT JOYSTICKS (seiner z.b., ein medion teil) MIT DEM PROGRAMM. FALLS IHR EINEN GP JOYSTICK DAHEIM HABT, KÖNNTET IHR ES TESTEN UND SAGEN BEI WELCHEM GAMEPORT (onboard, welche soundskarte etc) WELCHER JOYSTICK (marke, bezeichnung) BEI EUCH GEHT?

MfG Hybrid666

Hybrid666 9. Feb 2007 16:36

Re: JoyMedia - Mediensteuerung über Joystick
 
Neue Version online mit zahlreichen verbesserungen und mit weniger bugs :D

Hybrid666 16. Jul 2008 14:42

Re: JoyMedia - Mediensteuerung über Joystick
 
Neue version online.

Hybrid666 16. Jul 2008 14:58

Re: JoyMedia - Mediensteuerung über Joystick
 
Liste der Anhänge anzeigen (Anzahl: 1)
TUTORIAL: DLLs / Plugins für JoyMedia erstellen


Schritt 1: Das Grundgerüst

Jedes Plugin braucht 4 Grundfunktionen, welche in der DLL vorhanden sein MÜSSEN. Das wären:

Delphi-Quellcode:
function GetButtonFunc():PChar;
function GetAxesFunc():PChar;
function GetSliderFunc():PChar;
function GetHatFunc():PChar;
procedure info(funct:PChar);
Die funktionen enthalten jeweils die prozedurnamen, die z.B. auf Joystick Buttons gelegt werden können.
In die Funktionen selbst müssen diese namen dann zurückgegeben werden. Ich zeig mal ein beispiel anhand meiner Winamp.dll:
Delphi-Quellcode:
function GetButtonFunc():PChar;
begin
  result := PChar('Play|Pause|Stop|Start|Close|ToggleShuffle|ToggleRepeat|NextTrack|PreviousTrack|Volume');
end;

function GetAxesFunc():PChar;
begin
  result := PChar('Seek|AxesVolume');
end;

function GetSliderFunc():PChar;
begin
  result := PChar('SliderVolume');
end;

function GetHatFunc():PChar;
begin
  result := PChar('');
end;
Ich denke es sollte alles klar sein, die funktionen müssen durch | getrennt werden. Die groß und kleinschreibung ist bei den funktionsnamen im returntzeil egal, sie werden alle mit ToLower aufgerufen.

Dann haben wir noch die info prozedur. Auch hier ein beispiel:

Delphi-Quellcode:
procedure info(funct:PChar);
begin
  if (funct = 'play') then ShowMessage('Sends play Command to Winamp' +#13+#10+ 'Parameters:' +#13+#10+ '(none)');
  if (funct = 'pause') then ShowMessage('Pauses current track in Winamp' +#13+#10+ 'Parameters:' +#13+#10+ '(none)');
  if (funct = 'stop') then ShowMessage('Stops current track in Winamp' +#13+#10+ 'Parameters:' +#13+#10+ '(none)');
  if (funct = 'start') then ShowMessage('Runs Winamp' +#13+#10+ 'Parameters:' +#13+#10+ '(none)');
  if (funct = 'close') then ShowMessage('Closes Winamp' +#13+#10+ 'Parameters:' +#13+#10+ '(none)');
  if (funct = 'toggleshuffle') then ShowMessage('Toggles shuffle state in Winamp' +#13+#10+ 'Parameters:' +#13+#10+ '(none)');
  if (funct = 'toggerepeat') then ShowMessage('Toggles repeat state in Winamp' +#13+#10+ 'Parameters:' +#13+#10+ '(none)');
  if (funct = 'nexttrack') then ShowMessage('Plays next track of Winamp playlist' +#13+#10+ 'Parameters:' +#13+#10+ '-repeat (on/off) (default = off) (if button is hold, repeat track skipping)');
  if (funct = 'previoustrack') then ShowMessage('Plays previous track of Winamp playlist' +#13+#10+ 'Parameters:' +#13+#10+ '-repeat (on/off) (default = off) (if button is hold, repeat track skipping)');
  if (funct = 'slidervolume') then ShowMessage('Change Volume via Slider' +#13+#10+ 'Parameters:' +#13+#10+ '(none)');
  if (funct = 'volume') then ShowMessage('Change Volume via Button' +#13+#10+ 'Parameters:' +#13+#10+ '-up NUM (increases Volume)' +#13+#10+ '-down NUM (decreases Volume)' +#13+#10+ '-repeat (on/off) (If button is hold, repeat volume inc/drecrease) (default = off)');
  if (funct = 'seek') then ShowMessage('Seek track by fast forwarding/backwarding' +#13+#10+ 'Parameters:' +#13+#10+ '(none)');
  if (funct = 'axesvolume') then ShowMessage('Increase/Decrease volume by Axes' +#13+#10+ 'Parameters:' +#13+#10+ '-value NUM (default = 5)');
end;
Wie ihr seht, auch kein Hexenwerk. Die info prozedur ist dazu da, die Infos beim klick auf den Info button in JoyMedia anzuzeigen. Also hier ist jeweils in funct gespeichert, welche Funktion grade ausgewählt ist. Das hier ist jetzt etwas schlampig programmiert. Mit einer case anweißung wäre es glaub ich besser :P.

Wichtig ist auch noch: Alle anderen prozeduren, MÜSSEN kleingeschrieben deklariert und exportiert werden. Funktionen werden mit ToLower aufgerufen. Ich weiß nicht warum, aber bei dlls scheint delphi CaseSensitive zu sein. Auchnoch wichtig ist: als erste USES unit MUSS "ShareMem" rein! Ich arbeite grade noch dran sharemem rauszuhaun, weiß aber noch net wie!

2. Button Funktionen

Eine button funktion sieht folgendermaßen aus:
Delphi-Quellcode:
procedure test(param,state:PChar);export;
begin

end;
In param werden hierbei die in JoyMedia eingestellten parameter für die funktion übergeben und in state der zustand des Buttons. Dabei gibt es 3 zustände:
0 für Button wurde gedrückt
1 für Button wird gehalten (also wurde noch nicht released, funktion wurde abern ochmals getriggert)
2 für Button wurde released.

Das ganze Muss dann natürlich noch in export rein.

Hier mal eine kleine beispielfunktion:
Diese prozedur steuert das toggeln auf den nächsten track in winamp. hierbei werden states 0 und 1 verwendet, 1 allerdings nur, wenn der parameter -repeat auf on steht.

Delphi-Quellcode:
procedure nexttrack(param,state:PChar);export;
begin
  if state = PChar('0') then
  begin
    if (getwinamphwnd > 0) then SendMessage(getwinamphwnd,WM_COMMAND,40048,0);
  end;
  if (state = PChar('1')) and (param <> '') then
  begin
    if (GetParamValue(string(param),'-repeat') = 'on') then
    begin
      if (getwinamphwnd > 0) then SendMessage(getwinamphwnd,WM_COMMAND,40048,0);
    end;
  end;
end;
3. Achsen und Slider funktionen

Die Grundfunktion sieht so aus:
Delphi-Quellcode:
procedure seek(pos,velo,accel,max:integer; param: PChar);export;
begin

end;
dabei werden die variablen pos, velo, accel und max als integer, sowie param als PChar übergeben.
Pos speichert die aktuelle position der achse, velo die Velocity, accel die Beschleunigung und Max den maximalen wert, ins negative sowie ins positive (ins negative ist es -max)

Hier eine kleine beispeilfunktion:
Diese funktion lässt zu, über die achsen im Winamp track vor und zurück zu spulen. Allerdings wird nicht auf die momentane beschleunigung geachtet:

Delphi-Quellcode:
procedure seek(pos,velo,accel,max:integer; param: PChar);export;
begin
  if pos > 0 then
  begin
    if (getwinamphwnd > 0) then SendMessage(getwinamphwnd,WM_COMMAND,40148,0);
  end;
  if pos < 0 then
  begin
    if (getwinamphwnd > 0) then SendMessage(getwinamphwnd,WM_COMMAND,40144,0);
  end;
end;
SLIDER FUNKTIONIEREN AUF GENAU DIESELBE WEIßE, ICH WOLLTE NUR EINE EXTRA SPARTE FÜR SLIDERFUNKTIONEN HABEN, DA DIESE IMMER EINE FIXE POSITION NACH DEM BEWEGEN HABEN.

Hier eine Beispielfunktion für Slider:
Delphi-Quellcode:
procedure slidervolume(pos,velo,accel,max:integer; param:PChar);export;
var
  i: real;
begin
  i := 100 / StrToFloat(IntToStr(max * 2));
  if pos >= 0 then i := (pos + max) * 2.55 * i;
  if pos < 0 then i := (max - abs(pos))*2.55*i;
  if (getwinamphwnd > 0) then SendMessage(getwinamphwnd,WM_USER,trunc(i),122);
end;
Ich hänge nun zum schluss noch den kompletten code von der winamp.dll an, zum anschaun, abgucken und sonstwas :D ich hoffe das DLLs entstehen werden!

Hybrid666 25. Nov 2008 11:20

Re: JoyMedia - Mediensteuerung über Joystick
 
neue version online

Hybrid666 8. Dez 2008 13:00

Re: JoyMedia - Mediensteuerung über Joystick
 
- aufgrund zu geringer nachfrage eingestellt -

kann geclosed werden...


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz