So, as I announced to do, here it is. My Delphi interface to create an own application and/or AMMO plugin to control any application you like!
(Remember, Delphi is available for Open Source Free!!!! Free download from Borland!!! -Forgot the link I'll post again tomorrow-)
EDIT: Forgot to say that the download includes a default configuration form, too. So you can add your own controls to configure your plugin, ain't that cool..?
Download ATTO default projects here:
Delphi AMMO Default Project
Unzip to any dir and open up:
- AMMOProject.bpg
to have a project group with a dummy application that reacts on 'play' key and the dummy plugin
- my1stAMMO.dpr
to have a DLL skeleton to the dummy plugin, to which I have added comments so it's really easy to control any application
I've caught some knowledge about working of the AMMO interface.....
So, here's the first readme.txt:
AMMO Delphi Interface
=====================
This File and the AMMO Delphi Interface was created by Mitchie!!!
Any copies under another name are prohibited and be spelled by evil
curses.....
What to think of:
- Versioninfo must be supplied in the DLL, otherwise it is not accepted!
- Set all exported functions to cdecl! This is not standard DLL call!
Difference between stdcall and cdecl is that with cdecl the caller
(i.e. remote software) is responsible of removing stack entries.
YOU WILL GET GPs, IF YOU DO NOT FOLLOW THESE CALLING CONVENTIONS ->
- parameters right to left ordered (standard call you would suggest....)
- clearing of stack from: CALLER (this is NOT STANDARD, ATI, take a
guess..)
- registers: no
- You MUST close remote software, if you already tried to import your
plugin UNSUCCESSFULLY.
Otherwise the dll is locked! (Bad, bad, ATI....!)
- If you're programming your own client software to react on the remote
messages, don't forget to close your main window in the Delphi IDE. Not
only the form, close the unit! (Bad, bad, Borland...)
Windows API FindWindow receives handle of your form
opened in Delphi IDE first. So,...figure out what _is_ open. Borland's WinSight
shows which, in the order the FindWindow API function proceeds.
Tricks:
- set output directory of your dll project to \plugin dir of remote
control software
(defaults to C:\Program Files\ATI Multimedia\RemCtrl)
- use C:\Program Files\ATI Multimedia\RemCtrl\atix10.exe as debugging
application for your dll. Close it, if it's already running. Press F9
in Delphi to start remote software. Import your plugin if not already
done and then test your remote control and your own configure dialog
(Remember, Delphi is available for Open Source Free!!!! Free download from Borland!!! -Forgot the link I'll post again tomorrow-)
EDIT: Forgot to say that the download includes a default configuration form, too. So you can add your own controls to configure your plugin, ain't that cool..?

Download ATTO default projects here:
Delphi AMMO Default Project
Unzip to any dir and open up:
- AMMOProject.bpg
to have a project group with a dummy application that reacts on 'play' key and the dummy plugin
- my1stAMMO.dpr
to have a DLL skeleton to the dummy plugin, to which I have added comments so it's really easy to control any application
I've caught some knowledge about working of the AMMO interface.....
So, here's the first readme.txt:
AMMO Delphi Interface
=====================
This File and the AMMO Delphi Interface was created by Mitchie!!!
Any copies under another name are prohibited and be spelled by evil
curses.....
What to think of:
- Versioninfo must be supplied in the DLL, otherwise it is not accepted!
- Set all exported functions to cdecl! This is not standard DLL call!
Difference between stdcall and cdecl is that with cdecl the caller
(i.e. remote software) is responsible of removing stack entries.
YOU WILL GET GPs, IF YOU DO NOT FOLLOW THESE CALLING CONVENTIONS ->
- parameters right to left ordered (standard call you would suggest....)
- clearing of stack from: CALLER (this is NOT STANDARD, ATI, take a
guess..)
- registers: no
- You MUST close remote software, if you already tried to import your
plugin UNSUCCESSFULLY.
Otherwise the dll is locked! (Bad, bad, ATI....!)
- If you're programming your own client software to react on the remote
messages, don't forget to close your main window in the Delphi IDE. Not
only the form, close the unit! (Bad, bad, Borland...)
Windows API FindWindow receives handle of your form
opened in Delphi IDE first. So,...figure out what _is_ open. Borland's WinSight
shows which, in the order the FindWindow API function proceeds.
Tricks:
- set output directory of your dll project to \plugin dir of remote
control software
(defaults to C:\Program Files\ATI Multimedia\RemCtrl)
- use C:\Program Files\ATI Multimedia\RemCtrl\atix10.exe as debugging
application for your dll. Close it, if it's already running. Press F9
in Delphi to start remote software. Import your plugin if not already
done and then test your remote control and your own configure dialog

Last edited: