PDA

View Full Version : Un-girder-able program?



sephirothx21
October 20th, 2004, 09:22 PM
I created a command that uses a Streamzap remote button press to send a keystroke to the foreground app. When I hit the button, text appears when a text editor is in the foreground, and the appropriate shortcut key is performed for apps (Fusion emulator) that have that keystroke assigned.
However, it does not work on a certain application (VirtuaNES). If I use the keyboard and send the same keystroke, it works just fine.
I figured out how to use the crosshair tool to target a specifc app regardless of focus. Worked for other apps, doesn't for this particular one.

Are some programs just "ungirderable"?

switzch
October 21st, 2004, 03:47 AM
Try unchecking some of the options in the targeting window. I only use 'excutable' for some of my programs.

Promixis
October 21st, 2004, 03:52 AM
Girder maynot be able to target this app - is it an emulator?

sephirothx21
October 21st, 2004, 05:37 AM
Yes this is a NES emulator (http://www.emulator-zone.com/doc.php/nes/virtuanes.html). I prefer it over others because it will run 1280x720, then overlay the game with 4:3 aspect ratio instead of changing my TV to a non-native 4:3 resolution.

I tried using just the executable name in the Target selector, but that didn't work either. Realistically, I think it was ever going to work, it would work just using the "Send to foreground task" option. It did not.

IIRC, this app didn't have any child objects when sampled with the drag and drop crosshair. Does that help explain why Girder can't send commands to it? Before I commit to a full Girder solution, I'd like to know if this problem is: really rare, somewhat rare, or common.

Thanks.

Promixis
October 21st, 2004, 05:40 AM
Mostly rare. The problem occurs with windows that don't use windows to draw their controls. In most instances, when you have problems with control, its related to targeting the help (how you tell girder where to send the command).

sephirothx21
October 21st, 2004, 06:09 AM
Thanks for the quick reply.
(I'm at work so I cannot test this, but) Are the targeting difficulties specific to keystrokes? Would other methods of control (i.e mouse movement/clicks) have better success?

Promixis
October 21st, 2004, 06:12 AM
Each method has its pluses and minus.

Keystrokes generally work well.
Mouse clicks also work well if you can target what you want to click on.
SendMessage/PostMessage is great for programs that allow this.
Programs that expose a COM interface are also easy to control. (more complicated)
Socket Control (tcp/ip) is also good for across network control.

miked
October 21st, 2004, 12:38 PM
I had a bear of a problem trying to get Girder to work with the XCard software (www.sigmadesigns.com) -- the absolute worst front end for one of the nicest pieces of DVD playback hardware (and the only front end for this hardware).

I did a really glommy workaround. Basically, I use a macro program called Auto Macro Recorder (www.readmesoft.com) and created a couple of macro scripts that execute in real-time (i.e., you can watch the mouse pointer move as if you're moving the mouse yourself -- very sad!). When the program in question loads, I have Girder execute one of the scripts, and when the program in question unloads, I have Girder execute the other script.

More info is at:

http://www.sigmadesigns.com/dcforum/DCForumID7/878.html

So the general rule here is, if the program isn't Girderable (a serious affront!), see if you can get another program to work with it, and then have Girder control that other program.

sephirothx21
October 22nd, 2004, 05:23 AM
I was able find WM_COMMAND equivalents for the keystrokes I wanted using Girder's sniffer. My emulator seems to like being controlled this way. I'm in business!

Promixis
October 22nd, 2004, 06:00 AM
Great, can you please post this file

sephirothx21
October 25th, 2004, 05:23 PM
Below is an excerpt. VirtuaNES uses "Command" actions and Fusion uses "Keyboard" actions. Maybe someone has done this already but I would like to submit an Emulators.GML file once I have enough commands deciphered for enough emulators.

<Girder>
<Group Enabled="TRUE" Identifier="2" Name="VirtuaNES Emulator">
<Command Enabled="TRUE" Identifier="3" Name="Next State Slot">
<EventString Device="29" IrStr="NEXT" Invert="FALSE" Enabled="TRUE" Identifier="10" Name="EventString" />
<ActionSubType>1</ActionSubType>
<Submatch>FALSE</Submatch>
<ActionType>3</ActionType>
<MatchNum>1</MatchNum>
<MatchHidden>FALSE</MatchHidden>
<MatchBy>4</MatchBy>
<StateCurrent>1</StateCurrent>
<OneMatch>FALSE</OneMatch>
<bValue1>FALSE</bValue1>
<Target_exe>VirtuaNES.exe</Target_exe>
<StateBegin>1</StateBegin>
<StateCount>1</StateCount>
<UseVar>FALSE</UseVar>
<StateInvert>FALSE</StateInvert>
<Topmost>FALSE</Topmost>
<iValue1>36864</iValue1>
<OSD>FALSE</OSD>
<bValue2>FALSE</bValue2>
<bValue3>FALSE</bValue3>
</Command>
</Group>
<Group Enabled="TRUE" Identifier="22" Name="Fusion Emulator">
<Command Enabled="TRUE" Identifier="23" Name="Next State Slot">
<EventString Device="29" IrStr="NEXT" Invert="FALSE" Enabled="TRUE" Identifier="24" Name="EventString" />
<ActionSubType>1</ActionSubType>
<Submatch>FALSE</Submatch>
<ActionType>6</ActionType>
<MatchNum>1</MatchNum>
<MatchHidden>FALSE</MatchHidden>
<MatchBy>4</MatchBy>
<StateCurrent>1</StateCurrent>
<OneMatch>FALSE</OneMatch>
<bValue1>FALSE</bValue1>
<Target_exe>Fusion.exe</Target_exe>
<StateBegin>1</StateBegin>
<StateCount>1</StateCount>
<UseVar>FALSE</UseVar>
<StateInvert>FALSE</StateInvert>
<Topmost>FALSE</Topmost>
<iValue1>117</iValue1>
<sValue2>TRUE</sValue2>
<OSD>FALSE</OSD>
<bValue2>FALSE</bValue2>
<bValue3>FALSE</bValue3>
</Command>
</Group>
</Girder>

Promixis
October 25th, 2004, 05:43 PM
Hi, you can upload it on the web site via developer/upload. It would be easier that way! Thanks!