Autor Beitrag
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Do 15.01.09 18:15 
Hallo Leute! :D

JoyToAny ist keine beta mehr :party:

JoyToAny ist eine Weiterentwicklung vom eingestellten JoyMedia (Der Name war auch bereits geschützt :oops: ) von user profile iconHybrid666. Mit ihm lassen sich Joystick- und Gamepadbuttons und -Achsen über ein Pluginsystem mit beliebigen Funktionen hinterlegen.

Für das Pluginsystem findet sich im hierauf Folgenden Post ein kleines Tutorial von Hybrid666 mit angehängtem Beispielcode: Das komplette Winamp-Plugin!

Die Plugins sitzen als .dll Datei im Plugins Ordner.
Die aktuell verfügbaren Plugins finden sich mit Beschreibung hier.
Eine verkürzte Liste:
Home:


  • Winamp.dll - Steuerung von Winamp, wie z.B. Nächstes Lied, voriges Lied, Lautstärke, Scrollen, uvm
  • iTunes.dll - Steuerung von iTunes
  • nemp.dll - Steuerung des hervorragenden MP3 Player von Gausi
  • playsound.dll - Eine kleine Spielerei, welche es erlaubt, bei Tastendruck eine Sounddatei abzuspielen.
  • wincontrol.dll - Steuerung von diversen Windowsfunktionen (Momentan nur Lautstärkeregelung)
  • mouse.dll - Steuerung der Maus
  • keyboard.dll - Belegung der Joysticktasten mit Keyboard Makros



KnownBugs:

  • Alle gefundenen Geräte heißen (oft?) "Microsoft PC-Joysticktreiber" auf Grund eines Bugs in Windows. Hierzu gibt es Tricks zum Umgehen, wir arbeiten daran.


Geplant (unter anderem ;) ):

  • Setup Dialog für einige Funktionen, u.a. Verhalten beim Minimieren, Minimierter Start, bestimmte Threshold Einstellungen... Erledigt
  • Evtl Startparameter, u.a. zum minimierten Starten Erledigt (Ist nun eine Einstellung im Setup Dialog)
  • Plugin zum Keyboard-Events feuern, so könnte man theoretisch sogar einfachere Spiele per Gamepad steuern :) Erledigt
  • Lautstärke von Windows - Yay für die Änderung, die Vista in diesem Bereich gebracht hat :| Erledigt
  • Vorschläge von DF-Usern umsetzen :zustimm:
  • Seh ma dann :D


Change Log:
Ein detailiertes Changelog findet sich ein paar Beiträge weiter unten, sowie auf unserer Homepage.

Das Programm erstellt einen Ordner in AppData, keine Installation. Hier ist ein direkter Download: *klick*

Der Source des inzwischen auf SourceForge zu finden, und zwar hier: joytoany.sf.net/

Unsere Homepage findet sich hier: www.JoyToAny.tk/

Mfg
Jan & Markus :zustimm:


Moderiert von user profile iconNarses: Topic aus Freeware Projekte verschoben am Di 03.02.2009 um 13:55

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.


Zuletzt bearbeitet von JayEff am Do 12.02.09 18:14, insgesamt 15-mal bearbeitet
Hybrid666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 26



BeitragVerfasst: Do 15.01.09 18:17 
Titel: Tutorial
TUTORIAL ZUM ERSTELLEN EIGENER JoyToAny PLUGINS

Ich versuch euch in diesem kleinen tutorial näher zu bringen, wie ihr eigene Plugins für unser programm JoyToAny erstellen könnt. Als Anhang werd ich euch den Source zur winamp.dll geben und ich werd mich in dem Tutorial als beispiele auch auf selbigen Code als Beispiel beziehen. Falls am Ende des Tutorials irgendwelche Fragen auftreten, schreibt user profile iconJayEff oder user profile iconHybrid666 an, wir werden, sofern möglich, alle Fragen diesbezüglich beantworten.

Also fangen wir an.

Zuerst erstellt ihr in Delphi über File -> New -> Other den DLL Wizard, damit ihr das Grundgerüst für eine DLL Datei erhaltet.

Nun müssen ersteinmal ein paar Info Funktionen erstellt werden, die JoyToAny zwingend benötigt, um alle Funktionen für die Tasten, Achsen und das POV richtig anzeigt.

In der Winamp.dll sieht das folgendermaßen aus:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
function getbuttonfunc():PChar;
begin
  result := PChar('Play|Pause|Stop|Start|Close|ToggleShuffle|ToggleRepeat|NextTrack|PreviousTrack|Volume');
end;

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

function getpovfunc():PChar;
begin
  result := PChar('');
end;


Wie ihr seht, geben diese Funktionen durch Pipes getrennte Commands zurück. Diese Commands müssen dann in der DLL erstellt werden. Wichtig ist, das die Funktionen alle klein geschrieben werden (da ein Funktionsaufruf Case Sensitiv ist).

Nun erstellen wir unsere erste Funktion, und zwar für einen Button, diese hat als Header das Format:

ausblenden Delphi-Quelltext
1:
procedure play(state : integer; param:PChar);export;					


dieses Format sollte auch beibehalten werden. Auch hier ist wichtig, das der Funktionsname kleingeschrieben ist.

Nun schreibt, was die Prozedur ausführen soll. Die Play Prozedur sieht bei der Winamp.dll folgendermaßen aus:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure play(state : integer; param:PChar);export;
begin
  if state = 0 then
  begin
    if (getwinamphwnd > 0then SendMessage(getwinamphwnd,WM_COMMAND,40045,0);
  end;
end;


Hier sind nun 2 Parameter der Prozedur angegeben.

state enthällt den Buttonstatus, dabei steht:
0 für wurde gedrückt
1 für wurde gehalten
2 für wurde released

Gehalten und released könnt ihr Handhaben wie ihr das braucht. Der status 1 wird z.B. von der Prozedur NextTrack verwendet, seht dazu mehr im Code.

Nun schreiben wir eine Achsenfunktion.
Die sieht so aus:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure seek(pos,max:integer; Changed : Boolean; param:PChar);export;
begin
  if pos > 0 then
  begin
    if (getwinamphwnd > 0then SendMessage(getwinamphwnd,WM_COMMAND,40148,0);
  end;
  if pos < 0 then
  begin
    if (getwinamphwnd > 0then SendMessage(getwinamphwnd,WM_COMMAND,40144,0);
  end;
end;


Hier haben wir die Parameter pos, max, changed und param.
Pos gibt die aktuelle position wieder, welche von -max bis +max gehen kann (0 ist also die Nullstellung der Achse).
Changed ist true oder false, je nachdem, ob es seit dem letzten aufruf geändert wurde, oder nicht (Dies ist wichtig bei z.B. Slidern, welche auch als Achse erkannt werden, seht dazu im Code SliderVolume).

Nun Noch die POV Prozeduren, welche so aussehen (leider existiert keine Beispielfunktion momentan dafür):
ausblenden Delphi-Quelltext
1:
procedure mypovproc(Up, Down, Left, Right: Boolean; Param: PChar);					

Die Parameter stehen dabei für die richtungen, die gedrückt sind.

Nun werden die ganzen funktionen noch in export gepackt:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
exports
  play,pause,stop,start,close,toggleshuffle,togglerepeat,nexttrack,
  previoustrack,slidervolume,volume,seek,axesvolume,getbuttonfunc,getaxisfunc,getpovfunc,
  info;


Nun gibt es noch eine optionale funktion. Im JoyToAny Programm habt ihr sicher den Button zum anzeigen der Function Info gesehen. Das wird folgendermaßen in der dll definiert:

ausblenden Delphi-Quelltext
1:
procedure info(funct:PChar);					


In der Winamp DLL hab ich das mal so gehandhabt:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
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 (use with sliders only! Normal Axes will mess this up!' +#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;


Ein MessageDLG wäre natürlich schöner, aber das sollte so auch reichen ;) Ihr könnt das handhaben wie ihr denkt. Vergesst aber nicht für die dialoge die richtigen uses reinzumachen, da der Compiler sonst meckern wird *prophezei*

Dann kompiliert ihr die DLL, kopiert sie in das Plugin verzeichniss, und schon ist das plugin ready to use ;)

Es grüßen euch JayEff und Hybrid666, in der hoffnung das viele wundervolle plugins entstehen werden, wenn es gut ist, werden wir, sofern erlaubt, es in den nächsten release von JoyToAny (welcher noch viele Verbesserungen mitbringen wird) reinpacken (natürlich mit Hinweiß auf den urheber! Muhaha)

Zögert nicht, Fragen, Anregungen, Beschimpfungen und sonstiges Hirngewäsch an uns zu schicken.
Einloggen, um Attachments anzusehen!
Hybrid666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 26



BeitragVerfasst: So 18.01.09 19:02 
Wie ihr seht ist heute eine neue Version online gekommen, JoyToAny nähert sich dem ersten Release Candidate!

Changelog 0.2 Beta:

  • Added: Setup Dialog
  • Added: Info Dialog
  • Bugfix: Deadzones wurden teils falsch gelesen
  • Bugfix: CPU Auslastung stark verringert
  • Bugfix: RAM auslastung geht nun nichtmehr hoch, sondern bleibt konstant und niedrig
  • Added: Für jede Achse kann im Setup angegeben werden, ob es sich um einen Slider oder eine Achse handelt
  • Added: iTunes.dll Plugin
  • Added: playsound.dll Plugin
  • Changed: mouse.dll hat nun zusätzliche Parameter
  • Added: Pollingzeit kann eingestellt werden
  • Added: Favorisierter JoyStick wird gespeichert
  • Added: Start Mode auswählbar
  • Added: Start in Tray funktion


Übrigens: Falls ihr euch nicht zutraut ein Plugin zu machen (oder einfach keine lust habt), dann postet doch einfach mal eure ideen, wir sind immer froh wenn wir neue ideen haben die wir umsetzten können!
Hybrid666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 26



BeitragVerfasst: Mi 21.01.09 11:38 
So, wir sind nun endlich zur ersten non-beta version vorangeschritten, die version 0.4. Es wurden sehr viele bugs gefixt, es warten einige neue features und es gibt nun eine eigene seite für joytoany, mit der möglichkeit direkt eigene plugins hochzuladen, bestehende plugins zu bewerten, usw.

Die Seite lautet:
www.joytoany.tk/

wer sich die seite sparen will und es direkt downloaden will:
jayyeff.kilu.de/joyt.../downloads/jta04.rar

Viel spaß, und über ein wenige feedback würden wir uns sehr freuen!

hier noch das aktuelle changelog:

Zitat:
0.1 beta
# Added: Joystickerkennung funktioniert, wenn auch verbuggt
# Added: Plugins nach Schema von JoyMedia mit leichen modifikationen
# Added: Funktionen können auf Buttons, Achsen und das POV gelegt werden

0.2 beta
# Added: Setup Dialog
# Added: Info Dialog
# Bugfix: Deadzones wurden teils falsch gelesen
# Bugfix: CPU Auslastung stark verringert
# Bugfix: RAM auslastung geht nun nichtmehr hoch, sondern bleibt konstant und niedrig
# Added: Für jede Achse kann im Setup angegeben werden, ob es sich um einen Slider oder eine Achse handelt
# Added: iTunes.dll Plugin
# Added: playsound.dll Plugin
# Changed: mouse.dll hat nun zusätzliche Parameter
# Added: Pollingzeit kann eingestellt werden
# Added: Favorisierter JoyStick wird gespeichert
# Added: Start Mode auswählbar
# Added: Start in Tray funktion

0.3 beta RC1
# Added: DeadZones im Setup Dialog separat einstellbar
# Added: getrecdeadzone kann jetzt in DLLs verwendet werden
# Added: Mehrere weitere Einstellungen im Setup

0.4
# Bugfix: TrayIcon Bug entfernt
# Added: Reload Plugin Button hinzugefügt (Programm muss beim einfügen nicht neu gestartet werden)
# Added: Sprachsupport
# Bugfix: Wenn kein Joystick angeschlossen ist wird kein POV mehr angezeigt und JoyToAny springt auf Inactive
# Bugfix: Letzten known Bugs entfern, sollte nun relativ gut laufen
# Bugfix: Deadzones Bug entfernt
JayEff Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Mo 02.02.09 13:09 
0.5 ist raus!

  • Bugfix: Configure hat manchmal mit den Achsen rumgesponnen
  • Added: Falls der Joystick in JoyToAny spinnt gibt es nun einen neukallibrierungsbutton im Setup
  • Bugfix: Bug in der Sprachengine gefixt
  • Bugfix: Trayicon Bug entfernt
  • Added: Profilsupport

Profilsupport, das wichtigsten an diesem Update, bedeutet: Man kann nun Belegungen für die Tasten als Profil-Datei speichern und laden. Praktisch, wenn man neue funktionen testen will aber seine alte Belegung nicht verlieren möchte :zustimm:

Download im ersten Beitrag.

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
Hybrid666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 26



BeitragVerfasst: Di 03.02.09 13:56 
news:
joytoany ist jetzt opensource ;)

schaut euch einfach joytoany.sf.net an :D

@mod: bitte in OpenSource moven ;)

MfG
Hybrid666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 26



BeitragVerfasst: So 15.02.09 18:16 
version 0.6 iss raus:

Zitat:

0.6
- ADDED: Update Function
- ADDED: Language Info Button
- ADDED: API to Control JoyToAny from external Applications
- BUGFIX: Many minor bugs


Download auf www.joytoany.tk bzw hier der direktlink:

jayyeff.kilu.de/joyt.../downloads/jta06.rar

viel spaß!